Теперь для iOS 10 требуется разрешение пользователя на доступ к медиатеке. Мы проверяем, есть ли у нас доступ к Медиа-библиотеке, прежде чем мы ее используем, а если нет, то мы будем использовать [MPMediaLibrary requestAuthorization:
для повторного запроса авторизации от пользователя.Запросить авторизацию Media Library программно не удается
Я ожидаю, что это покажет тот же всплывающий запрос для доступа к медиа-библиотеке, которую мы получаем при запуске приложения, но ничего не происходит. Он просто возвращается с статуса MPMediaLibraryAuthorizationStatusDenied
.
docs for requestAuthorization являются неполными в настоящее время, поэтому я не могу сказать, использую ли я это неправильно, или что-то еще не так.
if (MPMediaLibrary.authorizationStatus == MPMediaLibraryAuthorizationStatusAuthorized)
{
// we already have access to the Media Library - use it here...
}
else
{
// We expect this to show a popup so the user can grant access, but does not work
[MPMediaLibrary requestAuthorization:^(MPMediaLibraryAuthorizationStatus authorizationStatus)
{
if (authorizationStatus == MPMediaLibraryAuthorizationStatusAuthorized)
{
// success: the user authorized - use it here...
}
else
{
// user did not authorize - tell user why here...
}
}];
}
Update
Видимо нет никакого способа, чтобы вызвать первоначальный диалог вновь (см комментарии ниже). Я теперь использую этот код, чтобы по крайней мере отвезти меня в нужное место в настройках, чтобы пользователь мог внести изменения. (для iOS8 и выше)
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
Отклонено обычно не совпадает с «не определено», которое вы должны получить. Разве вы не отказали в доступе при первом запуске приложения? Вам придется сбросить это, если это так (либо в Настройках, либо удалив, а затем переустановив приложение)? – jcaron
Да, мы запретили доступ, когда начальный диалог был представлен при первом запуске приложения. Однако, какова точка вызова 'requestAuthorization' MPMediaLibrary, если он не вызывает повторное появление этого приглашения. В противном случае это то же самое, что просто сделать «MPMediaLibrary.authorizationStatus» и сообщить о существующем статусе. Это не то, что нам нужно. –
Все диалоги авторизации iOS Я знаю, что они работают одинаково: они спрашивают один раз и помнят, что выбрал пользователь. Они никогда больше не показываются для данного приложения, если оно не удалено. Единственный способ изменить выбор после этого - через приложение «Настройки». Точка вызова - показать диалог в первый раз. – jcaron