【问题标题】:IOS Objective-c - Getting contacts not working - No request prompt - Access deniedIOS Objective-c - 获取联系人不起作用 - 没有请求提示 - 访问被拒绝
【发布时间】:2018-11-13 09:52:51
【问题描述】:

我正在使用 Objective-c 为 iPad 开发应用程序。我需要获取联系人的通讯录。但是我没有收到访问请求提示,并且访问仍然被拒绝。布尔“已授予”永远不会为真,并且永远不会到达获取联系人数组的代码。因此,联系人数组 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 = ....
        }       
    }];
}

有什么帮助吗?

谢谢

【问题讨论】:

  • 看看stackoverflow.com/questions/47019095/…。它可能会对你有所帮助。
  • 首先您的 Info.plist 文件必须包含字符串值 NSContactsUsageDescription(参见 Apple 文档)。
  • 如果您已经拒绝了 iOS 的权限,请不要再询问。您必须在应用部分的“设置”应用中进行更改。
  • 谢谢你们的cmets。 @埃里达娜;在我的应用程序的 NSContactsUsageDescription 中添加了一个字符串值。 @洛伦佐利夫托;我的应用在设置中不可见,实际上列表是空的。
  • 嗯..如果您使用的是模拟器,请尝试重置它并重新安装应用程序。有时它真的很有帮助

标签: ios objective-c contacts addressbook


【解决方案1】:

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)
}

【讨论】:

  • 在我的 iPad 上的“设置”->“隐私”->“已请求访问您的联系人的应用程序将显示在此处”下的联系人。没有什么;未列出任何应用程序。此外,我从未见过请求访问联系人的提示。此外,我删除了应用程序并重新启动了 iPad;它没有帮助:(
猜你喜欢
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-18
  • 1970-01-01
  • 2013-10-20
相关资源
最近更新 更多