[英]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.