gpt4 book ai didi

c# - 获取联系人容器 Xamarin.iOS 时出现问题

转载 作者:行者123 更新时间:2023-11-29 13:51:48 25 4
gpt4 key购买 nike

我在使用 Xamarin.iOS 开发的一个小应用程序中遇到了问题

我的目标只是让每个联系人都显示在 iPhone 上。

我有这段代码,它在我的手机和至少 3 个其他手机上一直有效。昨天我在我的配置文件中添加了一个人,因为当我尝试获取容器时,我无法在手机上获得除“null”之外的任何其他值。

我的手机是 iPhone 7 iOS 13.1.2 - 稍后我无法在任何其他手机上对其进行测试。

它仍然适用于模拟器 (iPhone 8 iOS 13.1)。

我的 info.plist 中有联系人授权请求。我只是不明白在获取默认容器时获取“null”意味着什么......

try
{
var keysTOFetch = new[] { CNContactKey.GivenName, CNContactKey.FamilyName, CNContactKey.Nickname, CNContactKey.JobTitle, CNContactKey.DepartmentName, CNContactKey.OrganizationName, CNContactKey.PostalAddresses, CNContactKey.UrlAddresses, CNContactKey.EmailAddresses, CNContactKey.PhoneNumbers };
NSError error;
CNContact[] contactList;
var ContainerId = new CNContactStore().DefaultContainerIdentifier; <---- //This where I get a null I never got before ...
if (ContainerId != null)
{
using (var predicate = CNContact.GetPredicateForContactsInContainer(ContainerId))
using (var store = new CNContactStore())
contactList = store.GetUnifiedContacts(predicate, keysTOFetch, out error);
var contacts = new List<UserContact>();
status = writeCSV(contactList, user);
}
else
Console.WriteLine("Didn't get any container identifier ..");
}

Apple 文档说它可以返回 'null' 但没有进一步解释..

非常感谢您的帮助

最佳答案

您在某些手机上会遇到此问题,而在其他手机上则不会,因为可以使用的手机只有一个尝试从中加载联系人的容器,而不能使用的手机则有多个容器(即 Gmail、Exchange、用于存储联系人的 iCloud 帐户)。因此,您只从配置为默认的帐户加载联系人,该帐户有 0 个联系人。因此,它不会按要求加载所有联系人。

解决方案:获取所有容器并遍历它们以从每个容器中提取所有联系人。您也许可以在 Github 上找到它的一些样本。 .

关于c# - 获取联系人容器 Xamarin.iOS 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59323416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com