问题描述
我的xamarin.forms应用旨在使用Launcher.OpenAsync()
并以格式为“ zoomus://zoom.us/join?confno = 1234567890&pwd = 123456”的uri方案在移动设备上加入Zoom会议。
这在Android上工作正常,但在iOS上似乎根本没有任何作用。我先叫Launcher.CanopenAsync()
,然后返回true,所以uri应该可以。 Zoom应用程序已安装。在info.plist中,我向LSApplicationQueriesSchemes
添加了zoomus(和zoom)。
我的代码如下:
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用户。我正在使用运行iOS 12.4.8的旧iPhone 6进行测试。
我从Zoom开发者论坛寻求帮助,该论坛建议在iOS中使用url方案时,有一个AppDelegate
函数需要被覆盖:
func application(_ app: UIApplication,open url: URL,options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool
我猜上面的不是C#,并且Essentials Launcher类可以处理iOS中所需的任何东西。
解决方法
我尝试通过电子邮件将相同的链接发送到iPhone, 也没有(我在Android手机和电子邮件应用上尝试过 甚至不会将链接显示为超链接)。有设置吗 在iPhone上或在我的应用程序中以允许深度链接?
如果您已经安装了该应用程序,并且使用了正确的协议,并且您的硬件和操作系统运行正常,那么这需要工作。您的问题不是由您的代码引起的(除非您使用错误的协议,否则是这样),因此这是此站点的答案,因为它不处理非编码问题。
为什么您的Zoom应用无法正常工作-您应该从Zoom客户支持开始,因为他们处于最佳位置,可以为您提供答案(如果存在),但是您的设备极有可能出现某种故障
,我的问题是我没有在主线程中运行启动器,因此(我假设)Zoom应用程序无权访问屏幕。所以我只是改变了:
Task zoomTask = Task.Run(async () =>
收件人:
MainThread.BeginInvokeOnMainThread(async () =>
它现在正在工作!