簡體   English   中英

iOS Simulator不顯示權限警報

[英]iOS Simulator does not show permission alert

我的應用程序使用通訊簿框架。 要顯示iOS 6或更高版本中的所有聯系人,我必須為其設置權限。

第一次在模擬器上運行應用程序時,我在下面看到此警報,但是當我嘗試再次顯示它時,我再也沒有看到該警報。

在此處輸入圖片說明

我重設了內容和設置,但並沒有幫助我。 因此,當我重新運行應用程序時,所有時間都會顯示聯系人,但是首先,當我重置模擬器時,該應用程序必須顯示警報。 有人遇到這個問題嗎?

代碼如下:

- (void)getPersonOutOfAddressBook
{

    if (self.tableData) {
        [self.tableData removeAllObjects];
    }

    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)
    {        
        if (addressBook != nil)
        {
            NSLog(@"Succesful.");

            NSArray *allContacts = (__bridge_transfer NSArray
                                    *)ABAddressBookCopyArrayOfAllPeople(addressBook);
            NSUInteger i = 0;
            for (i = 0; i < [allContacts count]; i++)
            {
                Contact *contact = [[Contact alloc] init];

                ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];
                NSString *firstName = (__bridge_transfer NSString
                                       *)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);
                NSString *lastName =  (__bridge_transfer NSString
                                       *)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);
                NSString *fullName = [NSString stringWithFormat:@"%@ %@",
                                      firstName, lastName];

                NSData  *imgData = (__bridge NSData *)ABPersonCopyImageData(contactPerson);

                contact.firstName = firstName;
                contact.lastName = lastName;
                contact.fullName = fullName;
                contact.image = [UIImage imageWithData:imgData];

                [self.tableData addObject:contact];
            }

            CFRelease(addressBook); 
        }
    }    
}

我的經驗是:將應用程序安裝到設備上時,它會要求您允許或不允許進行某些操作。 如果您刪除它並重新安裝,它不會再詢問您。 例如,某個應用程序想知道您啟用或禁用了推送消息。 如果您說:是,啟用,然后從設備中刪除該應用程序,並在再次下載並安裝后不再詢問您。 它只是自動出現在您的設置中。 通訊錄可以使用相同的功能,但是我不確定。 GPS並不相同,應用程序會要求您隨時啟用定位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM