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

URL Scheme iOS | Open Source Application Programmtically

我有 2 个 iOS 应用程序,使用 URL Scheme 我可以通过 A 打开应用程序 B 就像我在 [=] 中创建 URL Scheme 14=] 并使用 OpenURL 从应用程序 B 调用它。另外,我可以传递数据。

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

B 我正在 sourceApplication 获取有关 A 的所有详细信息,但如何返回?

我们是否需要为两个应用创建 URL Scheme 以便相互通信?或者有什么方法可以调用 sourceApplication 并返回?

第 1 期

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

第 2 期 我已经在模拟器和设备上都试过了。如果我调用 canOpenURL 它会给我一个错误

-canOpenURL: failed for URL: "openb://" - error: "This app is not allowed to query for scheme openb"

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

这里有线索吗?

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

How to move back or open sourceApplication?

为此,您必须为这两个应用程序创建 URL Scheme

Issue 1 and 2

在iOS8之前,大家都在用canOpenURL来判断这个URL是否存在,如果存在,就用openURL来调用应用。但是,当很少有人 developers/apps 开始使用它来跟踪用户 iPhone(安装了哪些应用程序)用于广告目的时,问题就来了。这就是为什么 Apple 提出了名为 [=18] 的解决方案=].

因此,如果您想使用 canOpenURL,则必须将 URL Scheme 列入白名单,否则会出现 error: This app is not allowed to query for scheme 之类的错误,如果您想打开应用程序直接使用 openURL

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

更多信息,canOpenURL(_:)