如何将应用程序与 iOS 联系人应用程序集成?

How to integrate app with iOS Contacts app?

我正在尝试将消息传递应用程序与 iOS 通讯录应用程序集成,以便用户可以通过该应用程序直接从通讯录发送消息。 WWDC 2016 session 240 中对此进行了介绍,但显然省略了一些细节。

按照 WWDC 示例,我有:

有效。该应用程序显示为一个选项 在一个收件人的名片上 的通讯录中。在“通讯录”中点击它会启动我的应用程序并显示 NSUserActivity。这很好,但还不够。

WWDC session 以 WhatsApp 为例。 WhatsApp 在我的所有 联系人中显示为一个选项,即使是那些没有 WhatsApp 帐户的联系人。我想也许 WhatsApp 已经为每个人创建并捐赠了互动。但是,如果我在没有 WhatsApp 运行 的情况下创建新联系人,它会立即成为该联系人的一个选项。我做了一些实验,将接收者参数设置为 nil 或一个空数组,但没有任何效果。

那么我在这里缺少什么?我很接近,也许?不过好像捐赠互动并不是我真正需要的。

更新,回应@Mark:澄清了activity的用法。我已经尝试使用 response(它使用 activity)并且 response 的值为 nil 但都没有用。

只需使用 UIActivityViewController。您可以用文本或任何对象实例化它。如果需要,您还可以排除除消息以外的所有类型。

let objectsToShare = [textToShare, otherObject] as [Any]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
        
//New Excluded Activities Code
activityVC.excludedActivityTypes = [UIActivityType.addToReadingList]
activityVC.popoverPresentationController?.sourceView = sender as? UIView
present(activityVC, animated: true, completion: nil)

我在 WWDC 2019 上问过这个问题,被告知这种大规模捐赠仅适用于 VOIP 应用程序,不适用于消息传递应用程序。这个问题中的代码在理论上适用于 VOIP——可能与所提供的完全一样,也可能不完全一样。我没有尝试过,因为我没有开发合适的应用程序。