2013-02-21 3 views
13

У меня есть приложение, в котором я делаю снимок с камерой и сохраняю это изображение в собственной галерее. Но если у приложения нет разрешения на это, я хочу, чтобы пользователь это знал. Итак, как я могу это проверить?Как я могу проверить, имеет ли приложение к галерее телефона

Кстати: я сохраняю изображение в галерею с:

UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); 

ответ

29

Вы должны проверить состояние ALAssetLibrary убедитесь, что вы AssetsLibrary/AssetsLibrary.h включены в файл

ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus]; 

// проверить состояние для ALAuthorizationStatusAuthorized или ALAuthorizationStatusDenied например

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

    } 
+0

Работает ли он на всех iOS? Спасибо, кстати. – gabrjan

+0

он должен работать на ios5 +, если вы видите ALAssetLibrary, то вы заметили бы, что он поддерживает ios5 + – nsgulliver

+0

еще один вопрос, какая структура мне нужна для этого? – gabrjan

3

Примечание: IOS 6 Только

Это то, что вы ищете

[ALAssetsLibrary authorizationStatus] == ALAuthorizationStatusAuthorized; 

Другие значения authorizationStatus:

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. 
+0

почему только этот iOS6? Мне нужно для всех joss, но это то, что мне нужно – gabrjan

+0

authorizationStatus метод доступен в iOS 6.0 и более поздних версиях. – msk

+0

Так что же я должен делать с более ранними версиями? – gabrjan

3

Если вы используете фото рамки поскольку библиотеки ALAsset устарели от ios 9, вы можете использовать PHAuthorizationStatus для проверки доступа галереи. Вам также нужно импортировать фреймворк.

#import <Photos/Photos.h> 

- (BOOL)hasGalleryPermission 
{ 
    BOOL hasGalleryPermission = NO; 
    PHAuthorizationStatus authorizationStatus = [PHPhotoLibrary authorizationStatus]; 

    if (authorizationStatus == PHAuthorizationStatusAuthorized) { 
     hasGalleryPermission = YES; 
    } 
    return hasGalleryPermission; 
} 
0

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 
    } 
} 
Смежные вопросы