如何将 iOS 应用程序的默认联系人容器设置为保存在 iCloud 中的联系人容器?

How do I set the default contacts container for my iOS app to the contacts container that is saved in iCloud?

我正在使用 Swift 和 Xcode 13.1 编写 iOS 应用程序。我正在使用联系人框架,我读到每个应用程序都有一个默认的联系人容器,一个应用程序中的默认容器可能与另一个应用程序中的默认容器不同,并且整个设备都没有默认容器。

什么决定了 Xcode 项目制作的应用程序的默认容器?我没有为我的应用程序设置默认容器,并且 Google 帐户的联系人容器以某种方式成为我的应用程序的默认联系人容器。如何使用代码为我的应用程序设置默认联系人容器?

如何找出 iOS 附带的 Apple 通讯录应用程序的默认容器?我想将我的应用程序的默认联系人容器设置为与 Apple 的联系人应用程序相同的默认容器,如果这是保存在 iCloud 上的联系人容器。如果没有,我想将我的应用程序的默认联系人容器设置为保存在 iCloud 中的联系人容器。我假设 iCloud 上只保存了一个联系人容器。

用户可以在设置中指定新联系人的默认联系人容器。您的应用可以使用 defaultContainerIdentifier.

访问此容器的标识符

如果您希望允许用户为您的应用创建的新联系人指定不同的容器,那么您需要自己编写代码。

您需要提供一个视图,显示调用 containers(matching:nil) 后产生的联系人容器列表。用户选择容器后,将其标识符存储在您的应用首选项中,并在您创建新联系人时使用该容器标识符。

关于容器,您所能知道的就是它的 identifiernametype(Exchange、CalDAV 或本地)。