iOS 10에서는 이제 미디어 라이브러리에 액세스 할 수있는 권한이 필요합니다. 사용하기 전에 미디어 라이브러리에 대한 액세스 권한이 있는지 확인한 후 그렇지 않은 경우 [MPMediaLibrary requestAuthorization:
을 사용하여 사용자로부터 다시 권한을 요청합니다.미디어 라이브러리에 대한 프로그램 요청 권한 부여가 프로그래밍 방식으로 수행되지 않음
저는 앱 시작시 얻는 미디어 라이브러리에 액세스하는 것과 동일한 팝업 요청을 표시하려고하지만 아무 일도 일어나지 않을 것으로 예상됩니다. 단순히 이전에 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...
}
}];
}
업데이트는 분명히 다시 (아래 설명 참조) 원래 대화를 야기 할 수있는 방법이 없습니다. 지금은 적어도이 코드를 사용하여 사용자가 설정을 변경할 수 있도록 설정에서 올바른 위치로 옮깁니다. (iOS8 이상)
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
정상적으로 거부되는 것은 "알 수 없음"과 다릅니다. 응용 프로그램을 처음 실행할 때 액세스를 거부하지 않았습니까? 설정 (설정에서 또는 앱을 삭제 한 다음 다시 설치)에서이 경우 재설정해야합니다. – jcaron
예, 앱이 처음 시작될 때 초기 대화 상자가 표시되었을 때 액세스가 거부되었습니다. 그러나이 프롬프트가 다시 나타나지 않으면'MPMediaLibrary requestAuthorization' 호출의 요점은 무엇입니까? 그렇지 않으면 단순히'MPMediaLibrary.authorizationStatus'를 수행하고 기존 상태를보고하는 것과 같습니다. 그건 우리가 필요로하는 것이 아닙니다. –
내가 아는 모든 IOS 인증 대화 상자는 동일하게 작동합니다. 한 번 묻고 사용자가 선택한 것을 기억합니다. 앱을 제거하지 않는 한 특정 앱에 대해 다시 표시되지 않습니다. 그 후에 선택을 변경하는 유일한 방법은 설정 앱을 사용하는 것입니다. 호출의 요점은 처음으로 대화 상자를 표시하는 것입니다. – jcaron