2016-08-19 10 views
6

В моем приложении я хочу обнаружить, что если пользователь предоставит разрешение на свою медиа-библиотеку или нет. Пользователь может отказаться от разрешения библиотеки мультимедиа при запросе системы или после ее установки. Есть ли способ определить статус разрешения медиа-библиотеки?Обнаружение разрешения медиа-библиотеки ios

Вот мой код, который содержит список композиций.

MPMediaQuery *everything = [MPMediaQuery songsQuery]; 
NSArray *songArray = [everything items]; 

См. Ниже скриншот, на котором пользователь может изменять разрешения медиабиблиотеки.

enter image description here

+0

Возможный дубликат [Задать разрешение на доступ к Фотопленка] (http://stackoverflow.com/questions/13572220/ask-permission-to-access-camera-roll) – rptwsthi

+2

@ rptwsthi, пожалуйста, внимательно прочитайте вопрос, разрешение на просмотр камеры и медиаплеера не такое. –

+0

Вы упомянули медиа-библиотеку в своем вопросе не игрока. Плюс проверьте принятый ответ на вопрос, который должен решить вашу проблему: http://stackoverflow.com/a/13572568/656600 – rptwsthi

ответ

17
-(void) checkMediaLibraryPermissions { 
    [MPMediaLibrary requestAuthorization:^(MPMediaLibraryAuthorizationStatus status){ 
     switch (status) { 
      case MPMediaLibraryAuthorizationStatusNotDetermined: { 
       // not determined 
       break; 
      } 
      case MPMediaLibraryAuthorizationStatusRestricted: { 
       // restricted 
       break; 
      } 
      case MPMediaLibraryAuthorizationStatusDenied: { 
       // denied 
       break; 
      } 
      case MPMediaLibraryAuthorizationStatusAuthorized: { 
       // authorized 
       break; 
      } 
      default: { 
       break; 
      } 
     } 
    }]; 
} 
+0

ALAssetsLibrary предназначен для доступа к вашей фотографии и видео, когда я пробежал над кодом, он запрашивает разрешения для ролика камеры. Мой вопрос касается разрешения на медиа-библиотеку (музыкальные файлы). –

+0

@ajay_nasa вы можете проверить мое обновление? –

+0

Спасибо за вашу помощь. Можете ли вы разместить свой код в объективе-C. –

3

Временно, я решить мою проблему, проверив songArray объект ниже кода

MPMediaQuery *everything = [MPMediaQuery songsQuery]; 
NSArray *songArray = [everything items]; 

Если пользователь отказано разрешение, то songArray объект всегда ноль, но если пользователь разрешает разрешение доступ к Media Library, то songArray объект имеет массив песен. Даже если в устройстве не будет песен, но пользователь даст разрешение на доступ Media Library, тогда будет массив с 0 отсчетами.

-1

описание товара Swift 4 проверка на доступ. Простое решение заключается в следующем, и вы можете изменить его, чтобы включить другие альтернативы, но в моем случае это был доступ или ничего.

private func checkPermissionForMusic() -> Bool { 
    switch MPMediaLibrary.authorizationStatus() { 
    case .authorized: 
     return true 
    default: 
     return false 
    } 
} 

Предупреждение об использовании вышеуказанных решений - они выполняют в качестве оператора блока и не возвращают значение (return true или return "authorised") на том же самом потоке; результат обрабатывается в фоновом потоке. Если вы решите использовать приведенные выше предложения, используйте обработчик (вызовите другую функцию) для обработки ожидаемого результата. Это решение, с другой стороны, сразу сообщает вам, есть ли у вас доступ или нет. Ожидания не требуется.

Более подробную информацию можно найти в Apple Docs

+0

Снизка для чего? –