【问题标题】:URL Scheme iOS | Open Source Application ProgrammticallyURL 方案 iOS |以编程方式开源应用程序
【发布时间】:2017-12-25 12:10:45
【问题描述】:

我有 2 个iOS 应用程序,使用URL Scheme 我可以打开应用程序BA,就像我在B 中创建URL Scheme 并使用OpenURL 从应用程序@987654328 调用它一样@。另外,我可以传递数据。

但我正在寻找的是,有没有办法在某些特定事件上回到应用程序A

B 中,我在sourceApplication 中获得了有关A 的所有详细信息,但是如何返回?

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

问题 1

如果是Facebook SDK,,我会为我的应用程序创建URL Scheme,因为一旦完成身份验证,我希望Facebook SDK 正确调用我的应用程序,但我没有在Facebook SDK 信息中注册我的应用程序scheme。列表。它是如何工作的?

问题 2 我在模拟器和设备上都试过了。如果我打电话给canOpenURL 它会给我一个错误

-canOpenURL:URL 失败:“openb://” - 错误:“此应用不允许查询方案 openb”

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

这里有线索吗?

【问题讨论】:

  • 使用其他 URL 方案?
  • 您的意思是在这种情况下我们必须为两个应用注册URL Scheme 才能相互通信?
  • 是的,每个应用都有一个 URL 方案,因此它们可以相互调用。
  • 您的意思是URL Scheme 既适用于A 又适用于B。但是当我从A 调用B 时,我们可以退回到关于sourceApplication 的所有详细信息吗? Facebook iOS SDK 也一样,那么他们是如何实现的呢?有什么想法吗?
  • 我的意思是每个都有自己的 URL 方案,所以你可以调用它。有一段时间没有使用 Facebook SDK,但上次我使用了该方法,并且您需要添加一个包含您的应用程序 ID 的 URL 方案才能返回您的应用程序(在 Facebook SDK 实际打开 Facebook 的情况下) app — IIRC 现在它尽可能使用 SFSafariViewController)。

标签: ios url-scheme


【解决方案1】:

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

如何移回或开源应用程序?

要实现这一点,您必须为这两个应用程序创建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(_:)

【讨论】:

    猜你喜欢
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多