我有2个iOS
应用程序,使用URL Scheme
我能够通过B
打开应用程序A
,就像我在URL Scheme
创建了B
并使用OpenURL
从应用程序B
调用它。此外,我能够传递数据。
但我正在寻找的是,有一种方法可以回到某些特定事件的应用程序A
。
在B
我得到了关于A
的sourceApplication
的所有细节但是如何撤回?
我们是否需要为两个应用程序创建URL Scheme
以便相互通信?或者有没有办法调用sourceApplication
并回去?
问题1
在Facebook SDK,
的情况下,我为我的应用程序创建URL Scheme
,因为一旦身份验证完成,我希望Facebook SDK
调用我的应用程序,但我没有在scheme
info.plist中注册我的应用程序Facebook SDK
。它是如何工作的?
问题2我已经尝试过模拟器和设备。如果我打电话给canOpenURL
它会给我一个错误
-canOpenURL:URL失败:“open://” - 错误:“此应用程序不允许查询方案打开”
但如果我直接调用UIApplication.shared.open
它会成功启动应用程序。
这里有任何线索?
如果你想从另一个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(_:)