Определить разрешение медиа-библиотеки IOS
В моем приложении я хочу обнаружить это, если пользователь дает разрешение своей медиатеке или нет. Пользователь может отказать в доступе к библиотеке мультимедиа при запросе всплывающего окна системы или позже после настройки. Есть ли способ определить статус разрешения библиотеки мультимедиа?
Вот мой код доступа к списку песен.
MPMediaQuery *everything = [MPMediaQuery songsQuery];
NSArray *songArray = [everything items];
Смотрите скриншот ниже, где пользователь может изменять права доступа к библиотеке мультимедиа.
3 ответа
-(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;
}
}
}];
}
Временно я решил свою проблему, проверив songArray
объект в коде ниже
MPMediaQuery *everything = [MPMediaQuery songsQuery];
NSArray *songArray = [everything items];
Если пользователь отказал в разрешении, то songArray
объект всегда равен нулю, но если пользователь разрешает доступ к Media Library
затем songArray
Объект имеет массив песен. Даже если на устройстве не будет песен, но пользователь разрешит доступ Media Library
тогда будет массив с 0 отсчетом.
Swift 4 проверка доступа. Простое решение заключается в следующем, и вы можете изменить другие альтернативы, однако в моем случае это был доступ или ничего.
private func checkPermissionForMusic() -> Bool {
switch MPMediaLibrary.authorizationStatus() {
case .authorized:
return true
default:
return false
}
}
Осторожно при использовании вышеуказанных решений - они работают как оператор блока и не возвращают значение (return true
или же return "authorised"
) в той же теме; результат обрабатывается в фоновом потоке. Если вы решите использовать приведенные выше предложения, используйте обработчик (вызов другой функции) для обработки ожидаемого результата. Это решение, с другой стороны, немедленно сообщает вам, есть ли у вас доступ или нет. Ожидание не требуется.
Более подробная информация доступна в Apple Docs