iOS 联系人 - 保存一个没有权限的联系人(或权限 UI)

iOS Contacts - save a single contact without permissions (or permissions UI)

CNAuthorizationStatus 和相关文档似乎建议您需要权限才能读取或保存到 CNContactStore。 (而且我已经阅读了大部分基于 CNContact 的问题,它们在该主题上非常一致)。

但我找到了一个应用程序,它有一个 "Save Contact" 按钮,并以 CNContactViewController 的形式显示一个联系人,当我按下保存时,该应用程序确实保存到联系人,但没有任何权限对话框(我从来没有给它权限)。

我卸载了,重新安装,又保存了联系人,确认一下。

以前有人做过吗?我在 iOS 11.4.1.

我写了一个应用程序来显示新联系人的联系人视图,并将其保存到联系人中,没有:

作为“DropCard”已经在应用商店中发布了一段时间。

该应用程序还使用 CNContactPickerViewController 到 select 商店中的单个联系人,有趣的是:

The app using contact picker view does not need access to the user’s contacts and the user will not be prompted for “grant permission” access. The app has access only to the user’s final selection.

我得出结论,创建单个联系人时允许类似但未记录的行为。

注意:此行为不允许流氓应用以编程方式将大量垃圾数据塞入联系人存储区,因为您仍然需要用户单击按钮来保存每个新联系人。

这是我用于该部分的代码

    let contact = CNMutableContact()

    let saveContactVC = CNContactViewController(forNewContact: contact)

    saveContactVC.contactStore = CNContactStore()
    saveContactVC.delegate = <your delegate here> as? CNContactViewControllerDelegate
    saveContactVC.allowsActions = false

    let navigationController = UINavigationController(rootViewController: saveContactVC)
    root.present(navigationController, animated: false)
    // NOTE: app *will* use right->left slide-over annimation...
    // then the 'animated: false' supresses the NavUI's top->new VC animation.