我正在使用 Objective-c 为 iPad 开发应用程序。我需要获取联系人的地址簿。但是我没有收到访问请求提示,访问仍然被拒绝。 bool 值“授予”永远不会为真,并且永远不会到达获取联系人数组的代码。因此联系人数组 contactsArray 保持为空。
以下是我使用的代码:
-(void) fetchAllContacts
{
contactsArray = [[NSMutableArray alloc] init];
CNContactStore *store = [[CNContactStore alloc] init];
[store requestAccessForEntityType : CNEntityTypeContacts completionHandler : ^(BOOL granted, NSError * _Nullable error)
{
if (granted)
{
// Code to get the contacts array
// contactsArray = ....
}
}];
}
有什么帮助吗?
谢谢
最佳答案
iOS 只会出现一次模态访问请求提示。如果您第一次拒绝访问,则该应用将无法访问它,直到用户在 iOS 设置中更改该应用的权限。
一个选项是使用 UIApplicationOpenSettingsURLString
作为 URL 显示一个自定义提示,说访问被拒绝,并使用一个按钮直接导航到应用程序设置页面。
//objc
NSURL * url = [[NSURL alloc] initWithString:UIApplicationOpenSettingsURLString];
[UIApplication.sharedApplication openURL:url];
//swift
if let url = URL(string: UIApplicationOpenSettingsURLString) {
UIApplication.shared.openURL(url)
}
关于IOS Objective-c - 让联系人不起作用 - 没有请求提示 - 访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53278239/