应用程序之间的应用组数据共享 iOS

App Groups Data Sharing Between Applications iOS

假设我有以下应用程序标识符 com.test.product1, 这是提供组 ID group.com.test.product1.

的 product1

我应该将文档共享到另一个产品 com.test.product2 product2 提供 groupid group.com.test.product2.

我怎样才能分享一个共同的小组,比如 group.com.test.product 在所有这些应用程序之间?

应用组旨在共享一个包,该包可被应用及其扩展用作共享容器,您可以在其中存储共享数据:

看看Core Data: Sharing data between Apps and their Widgets

您可以使用应用程序组存储共享数据,但我只尝试使用内置类型来做到这一点。

如果您正在尝试存储自己的 类,您可能需要查看类似 NSKeyedArchiver 和 NSCoding 的内容(也许查看 here)。

如果您能找到使用内置类型的方法,您可以按如下方式使用应用组:

在多个应用之间共享 NSUserDefaults 数据

为了在一个应用程序和一个扩展程序之间或两个应用程序之间共享默认设置,您必须使用以下步骤在您的设置中添加一个应用程序组:

  1. 在项目导航器中单击 *.xcodeproj 文件(应该在顶部)。
  2. 在项目导航器的右侧查找项目和目标。在目标下单击您的主要目标(应该是目标下的第一件事)。
  3. 在顶部,单击“功能”选项卡。
  4. 在“应用程序组”部分,单击右侧的开关打开应用程序组。
  5. 单击 + 按钮并添加名为 group.com.company.myApp.
  6. 的应用组
  7. 转到您其他应用中的相同位置,现在 select 应该可以使用该组。为将使用此共享数据的每个应用打开此组。

注意:如果您转到 Apple Developer Portal(显示所有证书、标识符、设备和配置文件的 Apple 网站)并转到标识符 > 应用程序组,您应该会看到这个新的应用组。

存储数据:

var userDefaults = NSUserDefaults(suiteName: "group.com.company.myApp")
userDefaults!.setObject("user12345", forKey: "userId")
userDefaults!.synchronize()

检索数据:

var userDefaults = NSUserDefaults(suiteName: "group.com.company.myApp")
if let testUserId = userDefaults?.objectForKey("userId") as? String {
  print("User Id: \(testUserId)")
}