gpt4 book ai didi

iphone - 如何在 iOS 6 中正确使用 ABAddressBookCreateWithOptions 方法?

转载 作者:IT王子 更新时间:2023-10-29 07:43:40 25 4
gpt4 key购买 nike

我想了解 iOS 6 中的 ABADressBookCreateWithOptionsABAddressBookRequestAccessWithCompletion 方法。

我能找到的最多信息如下,“要请求访问联系人数据,请在调用 ABAddressBookCreateWithOptions 函数后调用 ABAddressBookRequestAccessWithCompletion 函数。”

我相信这些方法一起应该提醒用户决定是否允许应用程序访问联系人,但是当我使用它们时我没有看到任何提示。

有人可以提供一些示例代码,说明如何在真实世界的示例中一起调用这些方法吗?如何创建 (CFDictionary) 选项?我有使用已弃用的 ABAddressBookCreate 方法的工作代码,但需要更新到 iOS 6 以解决隐私问题。

提前感谢任何可以在这里阐明一些问题的人!

最佳答案

既然 NDA 已经解除,这里是我的解决方案,用于您需要替换返回数组的方法的地方。 (如果您不想在用户做出决定并准备重写一些现有代码时进行阻止,请查看下面 David 的解决方案):

ABAddressBookRef addressBook = ABAddressBookCreate();

__block BOOL accessGranted = NO;

if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6
dispatch_semaphore_t sema = dispatch_semaphore_create(0);

ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
accessGranted = granted;
dispatch_semaphore_signal(sema);
});

dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);
}
else { // we're on iOS 5 or older
accessGranted = YES;
}


if (accessGranted) {

NSArray *thePeople = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
// Do whatever you need with thePeople...

}

希望这对某人有帮助...

关于iphone - 如何在 iOS 6 中正确使用 ABAddressBookCreateWithOptions 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12083643/

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