2017-03-10 1 views
4

크래시 틱스에서는 iOS 10 사용자가 자주 충돌하는 것을 볼 수 있습니다. 그러나 iPhone 7/10.2를 사용하여 시뮬레이터에서 테스트 할 때 충돌을 재현 할 수 없습니다. 내 plist에는 이미 문자열이 있습니다__CRASHING_DUE_TO_PRIVACY_VIOLATION__

NSCalendarsUsageDescription, NSMicrophoneUsageDescription 및 NSPhotoLibraryUsageDescription.

Crashed: com.apple.root.default-qos 
0 libsystem_kernel.dylib   0x183765d74 __abort_with_payload + 8 
1 libsystem_kernel.dylib   0x18376249c <redacted> + 100 
2 libsystem_kernel.dylib   0x1837624c8 abort_with_payload + 10 
3 TCC       0x1869d6328 __TCCAccessRequest_block_invoke_2.80 + 258 
4 TCC       0x1869d6224 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 702 
5 TCC       0x1869d9330 __tccd_send_block_invoke + 348 
6 libxpc.dylib     0x18386afcc _xpc_connection_reply_callout + 80 
7 libxpc.dylib     0x18386af3c _xpc_connection_call_reply + 40 
8 libdispatch.dylib    0x1836221bc _dispatch_client_callout + 16 
9 libdispatch.dylib    0x183630a4c _dispatch_queue_override_invoke + 732 
10 libdispatch.dylib    0x18363234c _dispatch_root_queue_drain + 572 
11 libdispatch.dylib    0x1836320ac _dispatch_worker_thread3 + 124 
12 libsystem_pthread.dylib  0x18382b2a0 _pthread_wqthread + 1288 
13 libsystem_pthread.dylib  0x18382ad8c start_wqthread + 4 

모든 단서가 어떻게 복제하거나이 문제를 해결하기 위해 다음과 같습니다

는 Crashlytics에서 스택 트레이스입니까? 사용자가 연락처에 액세스 할 수 있도록 허용하지만 시뮬레이터에서 해당 기능을 테스트 할 때 권한이 필요하지 않습니다. 그러나 사용자가 내 앱에서 카메라에 액세스하면 시뮬레이터에서 권한 요청 메시지를 표시합니다. 그 말은 문자열에 연락처에 액세스 할 필요가 없다고 생각하게 만듭니다.

답변

9

사용자가 사진을 찍을 수 있기 때문에 나는 plist에 NSCameraUsageDescription 문자열을 추가해야했습니다.

1

사용자가 주소록에 액세스 할 수있는 권한을 부여하려면 해야합니다.

#import <AddressBookUI/AddressBookUI.h> 

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

    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { 
    ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { 
     if (granted) { 
      // First time access has been granted, add the contact 
      [self _addContactToAddressBook]; 
     } else { 
      // User denied access 
      // Display an alert telling user the contact could not be added 
     } 
    }); 
    } 
    else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) { 
    // The user has previously given access, add the contact 
    [self _addContactToAddressBook]; 
    } 
    else { 
    // The user has previously denied access 
    // Send an alert telling user to change privacy setting in settings app 
    } 

업데이트는 아이폰 OS 9.0 이상이 애플의 웹 사이트에서

:

중요 주소록 UI 프레임 워크는 아이폰 OS 9.에서 대신 ContactsUI 프레임 워크에 정의 된 API를 사용되지 않습니다 . 자세한 내용은 ContactsUI를 참조하십시오.