如何在没有 openURL 方法的情况下使用 URL Scheme 在两个应用程序之间共享数据?

Posted

技术标签:

【中文标题】如何在没有 openURL 方法的情况下使用 URL Scheme 在两个应用程序之间共享数据?【英文标题】:How to use URL Scheme to share data between two apps without openURL method? 【发布时间】:2016-08-10 16:24:24 【问题描述】:

我有 App A 和 App B。在这里,我只想将text 数据从 A 共享到 B,为此我执行以下代码。

在 A 中:

UIApplication.sharedApplication().openURL(NSURL(string: "B://sample_text")!)

在乙:

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool 
      print(url)
      return true

B 中的输出:B://sample_text

使用上面的代码,我可以将sample_text 数据从 A 发送到 B。但是 App B 正在打开,这是我不想要的。

我想共享相同的数据,当我将来手动启动 B 时,它应该会进入 B。

如果有除了openURL以外的其他方法,请指教。

App Group 可以实现这一点,但它有一些限制,例如您只能在共享公共应用 ID 前缀的应用之间共享数据。

【问题讨论】:

Sharing data in between apps in ios的可能重复 @TejaNandamuri 不重复,因为我已经特别提到我想要通过 URL Scheme 和你放在这里的链接,它已经接受了我在提出问题之前已经知道的“App Group”概念的答案。不过还是谢谢你的交流。 :) 它仍然是重复的,因为该链接是解决您的问题的唯一方法(而且您没有提到您了解应用程序组)。您不能说我会调用 openURL 方法,但是它不应该打开。当然 URL 方案会调用 openURL 方法,现在有办法停止它。 也许你是对的,所以我编辑了我的问题。谢谢 【参考方案1】:

您可能需要查看应用组以在两个应用之间共享数据,而不是使用 URL 方案共享数据。

一个例子可以在Sharing data in between apps in IOS找到。

另一种方法是将数据存储到后端服务器并从中读取。

【讨论】:

在应用程序组中存在限制,例如您只能在共享公共应用程序 ID 前缀的应用程序之间共享数据。所以我想通过自定义 URL 方案。 您是说在您的应用程序和某人开发的应用程序之间执行上述任务吗? @SunilTarge 这两个应用程序都是我开发的,但应用程序 ID 不同。 @Teja Nandamuri @SunilTarge 您是否在不同开发者帐户中的应用程序之间共享数据?如果不是,为什么 App ID 前缀对您来说是个问题? @Daniel 是的,我在不同开发者帐户中的应用程序之间共享数据(仅字符串)。所以只是想知道是否可以通过自定义 URL 方案来完成,但它应该被静默发送到第二个应用程序。

以上是关于如何在没有 openURL 方法的情况下使用 URL Scheme 在两个应用程序之间共享数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有滚动行为的情况下转到特定部分/没有滚动行为的 scrollIntoView() 的任何替代方法?

如何在swiftUI中获得类似appdelegate的东西

在不知道当前视图状态的情况下实现 openURL

通过调用 openURL 方法强制 safari 在同一选项卡中打开 url

如何在没有列表定义的情况下将列表列添加到列表实例

选择器'application:openURL:options:sourceApplication:annotation'没有已知的类方法