URL方案iOS |以编程方式开源应用程序

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

我有2个iOS应用程序,使用URL Scheme我能够通过B打开应用程序A,就像我在URL Scheme创建了B并使用OpenURL从应用程序B调用它。此外,我能够传递数据。

但我正在寻找的是,有一种方法可以回到某些特定事件的应用程序A

B我得到了关于AsourceApplication的所有细节但是如何撤回?

我们是否需要为两个应用程序创建URL Scheme以便相互通信?或者有没有办法调用sourceApplication并回去?

问题1

Facebook SDK,的情况下,我为我的应用程序创建URL Scheme,因为一旦身份验证完成,我希望Facebook SDK调用我的应用程序,但我没有在scheme info.plist中注册我的应用程序Facebook SDK。它是如何工作的?

问题2我已经尝试过模拟器和设备。如果我打电话给canOpenURL它会给我一个错误

-canOpenURL:URL失败:“open://” - 错误:“此应用程序不允许查询方案打开”

但如果我直接调用UIApplication.shared.open它会成功启动应用程序。

这里有任何线索?

ios url-scheme
1个回答
1
投票

如果你想从另一个iOS应用程序调用iOS应用程序URL Scheme是这样的。 URL方案允许您通过您定义的协议与其他应用程序通信。要与实现此类方案的应用程序通信,您必须创建格式正确的URL并要求系统打开它。要实现对自定义方案的支持,您必须声明对方案的支持并处理使用该方案的传入URL。

如何移回或打开sourceApplication?

要实现这一点,您必须为两个应用程序创建URL Scheme

问题1和2

在iOS 8之前,每个人都使用canOpenURL来检查这个URL是否存在,如果是,openURL用于调用应用程序。但是,当很少有开发人员/应用程序开始使用它来跟踪用户iPhone(所有应用程序的安装)以用于广告目的等时出现问题。这就是为什么Apple提出了名为URL Scheme Whitelist的解决方案。

因此,根据这一点,如果你想使用canOpenURL你必须将URL Scheme列入白名单,否则它将通过像error: This app is not allowed to query for scheme这样的错误,如果你想打开应用程序直接使用openURL

是的,它打破了很多SDK的登录流程,但这是有道理的。

有关更多信息,请访问canOpenURL(_:)

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