深度链接无法获取Uri

问题描述 投票:0回答:1

我在互联网上搜索有关在 Maui for Windows 上注册自定义 URI 的答案。

我的发现之一就是这个答案。

如何通过URI激活打开WinUI Maui?

https://learn.microsoft.com/en-us/windows/uwp/launch-resume/handle-uri-activation

https://learn.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-uap-protocol

我正在根据我的要求更改它。

我正在使用 daily api,所以会议是 https://demy-ia.daily.co/programming 其中programming 是房间的名称

<Extensions>
    <uap:Extension Category="windows.protocol">
        <uap:Protocol Name="daily-co">
            <uap:DisplayName>demyia</uap:DisplayName>
        </uap:Protocol>
    </uap:Extension>
</Extensions>

我已将此代码放入 MauiProgram 中

#if WINDOWS
                    events.AddWindows(windows => windows
                            .OnLaunched((window, args) => {

                                var activatedEventArgs = Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent().GetActivatedEventArgs();

                            }));
#endif

问题是,在查看这些值时,我的 Kind 是 Launch 而不是协议,而且我没有任何 URI。

我看到了这个截图。

但是当我和我的比较时,我什么都没有。

我昨天发布了一个Queston,但是有人给我打了负分。我总是问自己,如果你不喜欢它,就不要读它,请保持礼貌

windows maui deep-linking
1个回答
0
投票

好吧,作为答案,Leon Lu - MSFT 的解决方案可以解决问题:

首先,请右键单击

Package.appxmanifest
文件,使用HTML编辑器打开。我添加以下名称前缀来做到这一点:

<Applications>
      <Application Id="App" ...> 

...         
         <Extensions>
              <uap:Extension Category="windows.protocol">             
                  <uap:Protocol Name="demy-ia">                      
                      <uap:DisplayName>demy-ia</uap:DisplayName>
                  </uap:Protocol>
              </uap:Extension>
          </Extensions>
     </Application>
  </Applications>

我们可以通过

appActivationArguments.Uri
获取url,在获取url之前,我们需要使用
Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent().GetActivatedEventArgs();
来获取
appActivationArguments

请更改事件,如以下代码:

.ConfigureLifecycleEvents(events =>
                {
#if WINDOWS
                    events.AddWindows(windows => windows
                            .OnLaunched((window, args) => {
                                
                                var activatedEventArgs = Microsoft.Windows.AppLifecycle.AppInstance.GetCurrent().GetActivatedEventArgs();
                               
                                Windows.ApplicationModel.Activation.ProtocolActivatedEventArgs appActivationArguments =activatedEventArgs.Data as Windows.ApplicationModel.Activation.ProtocolActivatedEventArgs;


                               if (appActivationArguments != null)
                                {
                                    var uri = appActivationArguments.Uri;
                                }
                               
                            }));
#endif


               })

这是我测试过的网址

demy-ia://Addyourtestmeeting
,如果您将此网址放入浏览器并访问它,您将看到一个弹出窗口来打开您的应用程序。

顺便说一句,如果你想使用

https://demy-ia.daily.co/dedwdewdewdew
进行深度链接。请处理从 Web URL 到自定义 URI 方案的重定向:

在 Web 服务器上,配置从

https://demy-ia.daily.co/dedwdewdewdew
demy-ia://Addyourtestmeeting
的重定向。

注意:如果您想收到此主题的相关电子邮件通知,请按照我们的文档中的步骤启用电子邮件通知。

© www.soinside.com 2019 - 2024. All rights reserved.