iOS无法使用Xamarin Essentials Launcher.OpenAsync

问题描述

我的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 () =>

它现在正在工作!