¿Cómo puedo comprobar si mi aplicación tiene acceso a la galería del teléfono?

Tengo una aplicación en la que tomo una foto con la camera y la guardo en la galería nativa. Pero si la aplicación no tiene permiso para eso, quiero que el usuario lo sepa. Entonces, ¿cómo lo verifico?

Por cierto: guardo la image en la galería con:

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 

Necesita verificar el estado de ALAssetLibrary Asegúrese de tener AssetsLibrary/AssetsLibrary.h incluidos en su file

  ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus]; 

// verifique el estado de ALAuthorizationStatusAuthorized o ALAuthorizationStatusDenied por ej.

  if (status != ALAuthorizationStatusAuthorized) { //show alert for asking the user to give permission } 

Nota: iOS 6 solamente

Es esto lo que estás buscando

 [ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusAuthorized; 

Otros valores de autorizaciónStatus son

 ALAuthorizationStatusRestricted, // This application is not authorized to access photo data. // The user cannot change this application's status, possibly due to active restrictions // such as parental controls being in place. ALAuthorizationStatusDenied, // User has explicitly denied this application access to photos data. ALAuthorizationStatusAuthorized // User has authorized this application to access photos data. 

Si está utilizando Framework de fotos, ya que las bibliotecas de ALAsset están en desuso de ios 9, puede usar PHAuthorizationStatus para verificar el acceso a la galería. También necesita importar marco de fotos.

  #import <Photos/Photos.h> - (BOOL)hasGalleryPermission { BOOL hasGalleryPermission = NO; PHAuthorizationStatus authorizationStatus = [PHPhotoLibrary authorizationStatus]; if (authorizationStatus == PHAuthorizationStatusAuthorized) { hasGalleryPermission = YES; } return hasGalleryPermission; } 

Swift 3

 import photos PHPhotoLibrary.requestAuthorization { status in switch status { case .authorized: self.processSnapShotPhotos() case .restricted: print("handle restricted") case .denied: print("handle denied") default: // place for .notDetermined - in this callback status is already determined so should never get here break } }