问题标签 [ios-contacts]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
119 浏览

swift - 授予联系权限后更改视图

目前,我能够成功地要求用户允许他们访问他们的联系信息。我正在通过这样的 switch 语句来处理这个问题:

在这种.notDetermined情况下,这是打开对话框,我可以单击noyes,授予或拒绝应用程序访问权限。这是好的和预期的。

我想要做的是,如果用户点击改变视图yes。现在,我有requestContactPermissions一个按钮内的功能,如下所示:

一旦用户授予应用程序对其联系人的访问权限,我如何添加逻辑以更改视图?

0 投票
0 回答
31 浏览

ios - 如何在ios中检查联系人是否是谷歌联系人?

我正在开发一个应用程序,我需要检查联系人是否是 IOS 的 google 联系人。阅读 Contacts Framework 后,我的理解是一个联系人可以属于多个容器。基本上,容器是同步联系人的服务器帐户。我试图获取联系人的容器,但无法从返回的信息中识别出联系人是否是谷歌联系人。

如果它是谷歌联系人,有什么方法可以检查相同并获取联系人的谷歌ID?

0 投票
0 回答
29 浏览

objective-c - CNContactPickerViewController 联系人列表偏移问题

说明:如果我设置“[[UIScrollView 外观] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];” 在我的应用程序的其他地方,CNContactPicerViewController 中的前两项将被覆盖并且无法触摸。在当前 Contact Picer 之前设置 UIScrollViewContentInsetAdjustmentAutomatic 将有助于前两项可触摸,但联系人列表的初始位置不正确。

预期结果:

在此处输入图像描述

实际结果:

在此处输入图像描述

0 投票
1 回答
32 浏览

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

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

什么决定了 Xcode 项目创建的应用程序的默认容器是什么?我没有为我的应用程序设置默认容器,并且不知何故,Google 帐户的联系人容器成为我的应用程序的默认联系人容器。如何使用代码为我的应用设置默认联系人容器?

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

0 投票
0 回答
8 浏览

ios - 如何在所有可能的现有 iOS 设备上识别我保存在 iCloud 中的公共数据库中的 CNGroup 对象,用于我的 iOS 应用程序?

我正在使用 Xcode 13 和 Swift 5 创建一个 iOS 应用程序,我希望能够与该应用程序的其他用户共享联系人数据存储中的特定组,这些用户将在不同设备上使用不同的 Apple ID。

我决定将 CNGroup 对象的实例存储在类型为字节的字段中的 Data 或 NSData 对象中。我还需要将组包含的统一 CNContact 对象存储在同一记录的另一个字段中,或者在字节类型的字段中,并将联系人的 vCard 存储在 Data 或 NSData 类型的对象中,或者在字节列表类型的字段,并将每个联系人存储为列表中的不同项目,作为 vCard 或 Data 或 NSData 类型的对象。

我能否使用 CNGroup 对象的标识符属性来唯一标识组。在所有 iOS 和 macOS 设备上存在的所有现有联系人存储中,该属性值是否唯一?

我相信我需要在记录中存储一项或多项数据,以识别该组的发起者。我必须能够将发起者识别为特定的联系人商店。我需要通过识别特定的 Apple ID 和特定联系人商店所在的特定设备来识别联系人商店,或者可能只是特定的 Apple ID,或者只是联系人商店所在的特定设备。或者我可以在记录的一个字段中存储一个 UUID 值,以识别将 CNGroup 对象保存在我的应用程序的公共 iCloud 数据库中的发起者。

这个想法是让我能够将一组与另一组区分开来。我可能需要将发起者视为包含该组的特定容器。虽然这是一个 iOS 应用程序,但我需要知道 iOS 设备上的联系人存储中的对象是否在 macOS 设备上使用相同的标识符,这些标识符共享该联系人存储中的数据。

0 投票
0 回答
11 浏览

ios - 有人知道如何在 iOS 设备中创建 CNContainer 吗?

Apple 文档说本地类型的 iOS 设备中只有一个 CNContainer。创建 exchange 类型的容器需要使用 Exchange,创建 cardDAV 类型的容器也需要服务器。有没有办法创建一个未分配类型的容器?我需要在 Swift 中以编程方式执行此操作才能在我的 iOS 应用程序中使用。

0 投票
0 回答
9 浏览

ios - 如果我不知道要更新的联系人标识符的值,如何使用从 vCard 数据对象解包的联系人更新联系人?

我编写了代码将单个联系人打包到 vCard Data 对象中,然后将其解包,然后在之前没有的地方添加一个姓氏,然后将解包后的联系人保存回同一个容器并将其添加到同一个组中原始联系人在。当我查看联系人 iOS 应用程序时的结果是,当我获取该组中的统一联系人时,我保存的解压缩联系人显示为与原始联系人不同的联系人。我期待一个将这两个联系人结合在一起的统一联系人。

我看到 vCard 数据更新了我 iPhone 中的联系人。他们是怎么做到的?解压缩 vCard 数据对象时,标识符会更改。通过查看标识符,无法知道 iPhone 中的现有联系人是否与 vCard Data 对象中的相同联系人。如果我检查 iPhone 中统一联系人的所有属性,如果自从该联系人保存在联系人存储中后 iPhone 上的属性发生了更改怎么办?如果我确实在联系人存储中找到与解压缩的联系人相同的联系人,当我将解压缩的联系人保存在联系人存储中时,它将是一个全新的联系人,并且当下次调用 enumerateContacts 并将 unifyResults 设置为 true 时,正如我的代码所证明的那样,我相信新联系人不会与原始联系人统一。

是枚举联系人存储中所有统一联系人的唯一解决方案并比较所有属性,并将具有最多属性值的统一联系人与解包联系人中的相同属性相同,并使用值更新该统一联系人解包联系人中的属性?

调试窗口:

这导致一个与原始联系人相同的全新联系人,除了新联系人分配了姓氏,即“Lee”。

0 投票
0 回答
16 浏览

ios - 如何在 iOS 设备的联系人存储中唯一识别联系人?

即使联系人已更改,我也需要以某种方式唯一标识联系人存储中的联系人。

有没有办法在 iOS 中放置始终在后台监视联系人存储更改的代码?这样,我可以跟踪我用 UUID 值标识的联系人,并确保即使联系人发生更改,我也始终可以将该特定联系人与其 UUID 值匹配。如果我把它放在我的应用程序中,那么用户可以关闭应用程序,并且当联系人存储更改时应用程序不会收到通知?是否有我可以使用的应用程序扩展程序允许我这样做,无论这是否是扩展程序的意图?

也许我可以使用键值观察。是否可以使用键值观察来观察 iOS 联系人应用程序或设备的联系人存储?我怎么知道?当我在谷歌上搜索时,我找不到它的信息。

我找到了有关地址簿框架的ABAddressBookRegisterExternalChangeCallback( : :_:) 函数的信息,但该函数已被弃用,并且仅适用于 iOS 2.0–9.0。我在 Contacts Framework 中看不到一个函数可以执行该函数的功能。

2022 年 3 月 3 日星期四上午 12:03 添加的内容:

我需要将唯一标识符保存在私人 iCloud 数据库的记录中。目标是能够在数据库中查询与该联系人关联的记录。这可能意味着标识符在所有现有的 iOS 设备中必须是唯一的。是这样吗?