返回

Windows Maui 深度链接无法获取 Uri?终极解决指南

windows

Windows Maui 中深度链接无法获取 Uri 的终极解决指南

引言

深度链接对于在 Windows 上的 Maui 中构建移动优先的应用程序至关重要。然而,许多开发人员都遇到过“深度链接无法获取 Uri”的问题,这会阻碍应用程序通过 Uri 激活。本文将深入探讨这一问题,并提供分步指南,帮助你解决它。

步骤 1:在应用程序清单中注册协议

在应用程序的 MauiProgram.cs 文件中,使用 WindowsExtensions 注册自定义 Uri 方案:

#if WINDOWS
            var app = Microsoft.Maui.ApplicationModel.Platform.Current.Application;
            app.Extensions.Add(new Microsoft.Maui.ApplicationModel.Windows.WindowsExtensions(
                new Microsoft.Maui.ApplicationModel.Windows.Protocol(
                    "daily-co",
                    "demyia")));
#endif

步骤 2:处理 Uri 激活

App.xaml.cs 文件中,重写 OnLaunched 方法以处理 Uri 激活:

protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
    base.OnLaunched(args);

    if (args.Arguments.Schema == "daily-co")
    {
        // 解析 Uri 并执行必要的操作
    }
}

步骤 3:验证 Kind

OnLaunched 方法中,验证 Kind 属性是否为 Protocol。如果它为 Launch,则表明 Uri 激活未成功。

步骤 4:获取 Uri

如果 KindProtocol,则可以使用 args.Arguments.Uri 属性获取 Uri。

步骤 5:提供明确示例

假设你正在使用 Daily.co 会议 API,其中会议室的 Uri 格式为:

https://demy-ia.daily.co/programming

在处理 Uri 激活时,你将需要解析此 Uri 并提取房间名称(在本例中为“programming”)。

结论

通过遵循这些步骤,你可以解决 Windows Maui 中深度链接无法获取 Uri 的问题。这将使你的应用程序能够通过 Uri 激活,从而提高用户体验并解锁移动优先开发的全部潜力。

常见问题解答

  • 为什么我需要在应用程序清单中注册协议?
    这使 Windows 能够识别你的应用程序可以处理特定的 Uri 方案。
  • 如果 Kind 不是 Protocol 该怎么办?
    这表明 Uri 激活未成功。检查你的应用程序清单和注册的 Uri 是否正确。
  • 如何解析 Uri?
    你可以使用 Uri 类和正则表达式来提取 Uri 中的必要信息。
  • 我可以使用任何 Uri 方案吗?
    可以,但确保使用唯一的方案以避免与其他应用程序冲突。
  • 我的应用程序需要始终在线才能处理 Uri 激活吗?
    对于某些方案(例如推送通知),是的。但是,对于其他方案,你可以使用后台任务来处理离线激活。