2015-09-21 2 views
0

У меня есть приложение для одной страницы, где пользователь может нажать на изображение, и ImagePickerController появляется для использования, чтобы выбрать изображение из рулона камеры.«Это приложение не имеет доступа к вашим фотографиям и видео» в iOS 9.1

Тот же код, когда он включен в гораздо больший проект на основе контроллера табуляции, появляется ошибка «Это приложение не имеет доступа к вашим фотографиям и видео».

также я попытался включить «Конфиденциальность - описание использования библиотеки фотографий» в info.plist, но не повезло. Кто-нибудь столкнулся с этой проблемой?

Любая помощь будет оценена по достоинству.

ответ

0

Вы проверили ваши настройки конфиденциальности в настройках Apple> Конфиденциальность> Фотографии? iOS следует запросить разрешение на первое использование. Если пользователь отказывается, все, что вы можете сделать, это указать пользователю перейти к настройкам и разрешить доступ. Я предполагаю, что эта настройка выключена для вас.

Вы можете проверить статус авторизации в приложении. Я программирую в Objective C, и я использую только класс iOS 8+ PHPhotoLibrary, но, возможно, приведенный ниже код даст вам некоторые идеи. (Там какой-то "ShowMessage" псевдо-код также.)

- (void) loadView { 
    [self continueWithStatus: [PHPhotoLibrary authorizationStatus]]; 
} 

- (void) continueWithStatus: (PHAuthorizationStatus) status { 

    if (status == PHAuthorizationStatusRestricted) ShowMessage "Access to photo library is restricted."; 
    else if (status == PHAuthorizationStatusDenied) ShowMessage "You need to enable access to photos. Apple Settings > Privacy > Photos."; 
    else if (status == PHAuthorizationStatusNotDetermined) { 
     [PHPhotoLibrary requestAuthorization: ^(PHAuthorizationStatus status) { 
      dispatch_async (dispatch_get_main_queue(), ^{ // continue work on main thread 
       [self continueWithStatus: [PHPhotoLibrary authorizationStatus]]; 
      }); 
     }]; 
    } 
    else [self startAssetRetrieve]; 
} 

Спасибо за ваше руководство. Я использовал выше логику и создан после быстрого кода:

@IBAction func selectImageFromPhotoLibrary(sender: 
UITapGestureRecognizer) { 
    authHandler(PHPhotoLibrary.authorizationStatus()) 
} 
func authHandler(status: PHAuthorizationStatus) { 
    switch status { 
    case .Authorized: 
     startAssetRevrival() 
    case .Denied: 
     print("denied") 
    case .NotDetermined: 
     print("not determined") 
     PHPhotoLibrary.requestAuthorization(f) 
    case .Restricted: 
     print("restricted") 
    } 
    } 
    func f(status: PHAuthorizationStatus){ 
    dispatch_async(dispatch_get_main_queue()) { 
     self.authHandler(status) 
    } 
} 

func startAssetRevrival() { 
    let imagePickerController = UIImagePickerController() 
    // Only allow photos to be picked, not taken. 
    imagePickerController.sourceType = 
     UIImagePickerControllerSourceType.PhotoLibrary 
    // Make sure ViewController is notified when the user picks an 
     image. 
    imagePickerController.delegate = self 
    presentViewController(imagePickerController, animated: true, 
    completion: nil) 
} 

Теперь я вижу, что статус начинается с не определен, а затем запрещен. В настройке конфиденциальности я не вижу названия моего приложения.

+0

Я закончил тем, что воссоздал проект в Xcode. Изображения подбираются, как ожидалось. – user1848653