【发布时间】:2020-12-15 04:14:56
【问题描述】:
我的 xamarin.forms 应用旨在使用 Launcher.OpenAsync() 使用“zoomus://zoom.us/join?confno=1234567890&pwd=123456”形式的 uri 方案在移动设备上加入 Zoom 会议。
这在 Android 上运行良好,但在 iOS 上似乎根本没有做任何事情。我事先打电话给Launcher.CanOpenAsync(),然后返回true,所以uri应该没问题。 Zoom 应用程序已安装。在 info.plist 中,我已将 zoomus(和 zoom)添加到 LSApplicationQueriesSchemes。
我的代码如下所示:
private void RunZoomAsync()
{
Task zoomTask = Task.Run(async () =>
{
if (await Launcher.CanOpenAsync(selectedMedia.Uri))
{
Message = "Launching Zoom";
await Launcher.OpenAsync(selectedMedia.Uri).ConfigureAwait(false);
}
else
{
Message = "Zoom not found. You must install Zoom from your App Store";
}
});
}
我在屏幕上看到了这条消息,所以我知道它正在处理正确的代码。
我尝试通过电子邮件将相同的链接发送到 iPhone,但也没有任何效果。 (我在 Android 手机上尝试过,电子邮件应用程序甚至不会将链接显示为超链接)。 iPhone 或我的应用程序中是否有允许深度链接的设置?
您可能已经猜到了,我通常不是 iPhone 用户。我正在使用旧的 iPhone 6 进行测试,运行 iOS 12.4.8。
曾向Zoom开发者论坛求助,有人建议在iOS中使用url scheme时,有一个AppDelegate函数需要重写:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool
我猜以上不是 C#,Essentials Launcher 类处理 iOS 中所需的任何内容。
我错过了什么,还是这是一个错误?非常感谢任何帮助。
【问题讨论】:
-
在 iOS 9 及更高版本中,Apple 强制执行应用程序可以查询的方案。要指定要使用的方案,您必须在
Info.plist文件中指定LSApplicationQueriesSchemes。检查docs.microsoft.com/en-us/xamarin/essentials/… -
@LucasZhang-MSFT 谢谢,我已经这样做了,见上文。我读到“如果 OpenAsync 之前从未从您的应用程序中打开此设备上的目标应用程序,iOS 将提示用户一次允许您的应用程序打开它”。这是否意味着提示失败了?
-
这里有一个类似的问题stackoverflow.com/questions/63594273/… 可能对你有帮助。\
-
再次感谢@LucasZhang-MSFT,我想我已经完成了该链接中建议的一切。
-
您确定可以在设备上定期打开这些链接吗?就像您通过电子邮件收到它们一样?
标签: c# ios xamarin.forms launcher xamarin.essentials