【问题标题】:iOS 6 contacts access alert never showed on debugiOS 6 联系人访问警报从未在调试时显示
【发布时间】:2012-10-08 17:04:17
【问题描述】:

我在 appstore 上的应用正在访问 iPhone 联系人,用户在 iOS 6 上下载后,它无法访问 iPhone 联系人,但在 iOS 5 上运行正常 问题是苹果在 iOS 6 中添加了新的隐私设置。所以在搜索后我发现我必须在我的代码中执行以下操作才能访问用户联系人:

    //in order to test addressbook availability we have to attempt to create an addressbook instance using ABAddressBookCreateWithOptions
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000

    // Request authorization to Address Book
    ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);

    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {

        ABAddressBookRequestAccessWithCompletion(addressBookRef,
                                                 ^(bool granted, CFErrorRef error) {
                                                     if (granted)
                                                         [self loadContacts];
                                                 });
    } else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {

        // The user has previously given access, add the contact
        [self loadContact];
    } else {

    }

#endif //end iOS6+

    //ABAddressBookCreateWithOptions not available or succeeded. return YES;
    [self loadContacts];

我现在的问题是在设备上调试时,没有显示警报,我不知道为什么? 我知道上面的代码应该可以正常工作,但只有当应用程序提交到应用商店但我想在提交之前在调试模式下测试它? 有什么建议吗?

感谢您的支持。 谢谢。

【问题讨论】:

  • ABAddressBookGetAuthorizationStatus 始终为 kABAuthorizationStatusAuthorized 即使应用程序是第一次运行!!!!

标签: debugging permissions ios6 contacts


【解决方案1】:

我已经设法解决了 以下是稍作修改后的新代码:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 60000

    __block MyClassType *controller = self;

    // Request authorization to Address Book
    ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);

    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {

        ABAddressBookRequestAccessWithCompletion(addressBookRef,
                                                 ^(bool granted, CFErrorRef error) {
                                                     if (granted)
                                                         [controller loadContacts];
                                                 });
    } else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {

        // The user has previously given access, add the contact
        [self loadContacts];
    } else {

    }

#else
    [self loadContacts];
#endif

能够测试它的关键是从设置>>常规>>重置>>重置位置和隐私中重置隐私和位置设置

对我来说效果很好。

【讨论】:

  • 我在想它是因为调试,但它与调试无关,你只需要重置隐私设置:)
  • 重置隐私设置对我有用
【解决方案2】:

重置位置和隐私对我不起作用。

无论我是否清除模拟器设置然后重置位置和隐私,我的授权状态始终是 kABAuthorizationStatusAuthorized。

【讨论】:

    猜你喜欢
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多