我从地址簿中提取联系人,但弹出窗口未显示以请求访问联系人的权限。它会自动被拒绝,但是当我在演示中尝试相同的代码时,它运行正常,但它不能在我的应用程序中运行。 我读了很多文章,但我没有得到任何解决方案。我是否在plist或设置中遗漏了一些东西。
CNContactStore * contactStore = [[CNContactStore alloc]init];
if ([CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts] == CNAuthorizationStatusNotDetermined) {
[contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * __nullable error) {
if (granted==YES)
{
}
else
{
NSLog(@"Error");
}
}];
}
或第二种方法
CFErrorRef error = nil;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error)
{
if (error)
{
NSLog(@"error %@", error);
}
else if (granted)
{
}
CFRelease(addressBook);
});
}
答案 0 :(得分:3)
我今天也遇到了这个问题,我从Info.plist中删除了一些密钥:
<key>CFBundleDisplayName</key>
<string></string>
<key>LSApplicationCategoryType</key>
<dict/>
<key>CFBundleGetInfoString</key>
<string></string>
现在有效。有线外壳。
答案 1 :(得分:1)
在info.plist中输入我的应用程序名称“Bundle display name”键允许我的应用程序显示访问我的联系人的请求。
答案 2 :(得分:0)
我有同样的问题。科迪的回答让我尝试了这个对我有用的。
在您的Info.plist中,对于密钥&#34;捆绑显示名称&#34;,请确保它不是空字符串。提示输入联系人权限时使用此名称。