iOS 10 - App crashes To access photo library or de

2019-01-15 10:43发布

问题:

Below is my code to access photo library

-(void)click_gallery
{

    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])
     {

    UIImagePickerController *imgPicker= [[UIImagePickerController alloc] init];
    UIColor* color = [UIColor colorWithRed:46.0/255 green:127.0/255 blue:244.0/255 alpha:1];
    [imgPicker.navigationBar setTintColor:color];
    imgPicker.delegate = self;
    imgPicker.allowsEditing = YES;
    imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    [self presentViewController:imgPicker animated:NO completion:Nil];
     }

}

And it aborts with

This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

libsystem_kernel.dylib`__pthread_kill:
    0x109955efc <+0>:  movl   $0x2000148, %eax          ; imm = 0x2000148 
    0x109955f01 <+5>:  movq   %rcx, %r10
    0x109955f04 <+8>:  syscall 
->  0x109955f06 <+10>: jae    0x109955f10               ; <+20>
    0x109955f08 <+12>: movq   %rax, %rdi
    0x109955f0b <+15>: jmp    0x1099507cd               ; cerror_nocancel
    0x109955f10 <+20>: retq   
    0x109955f11 <+21>: nop    
    0x109955f12 <+22>: nop    
    0x109955f13 <+23>: nop    

And I get Thread 10:EXC_BAD_INTRUCTION code=exc_i386_invop, Same code was working fine in iOS 9. Can someone help me to solve this issue. Thanks in Advance.

回答1:

In iOS 10. You have to set privacy Setting for Camera & Photo Library.

Camera :

Key       :  Privacy - Camera Usage Description   
Value     :  $(PRODUCT_NAME) camera use

Photo Library:

Key       :  Privacy - Photo Library Usage Description    
Value     :  $(PRODUCT_NAME) photo use


回答2:

IOS 10 Now Requires User Permission to Access Media Library, Photos, Camera and other Hardware like these. The solution for this is to add their keys into info.plist with description for user that how we are using their data , iOS already required permissions to access microphone, camera, and media library earlier (iOS6, iOS7), but since iOS10 the apps will crash if you don't provide the description why you are asking for the permission.

Add below key value in plist file.

There is a list of all Cocoa Keys that you can specify in your Info.plist file

Photo :

Key       :  Privacy - Photo Library Usage Description    
Value   :  $(PRODUCT_NAME) photo use

Microphone :

Key        :  Privacy - Microphone Usage Description    
Value    :  $(PRODUCT_NAME) microphone use

Camera :

Key       :  Privacy - Camera Usage Description   
Value   :  $(PRODUCT_NAME) camera use