2016-08-19 3 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

도움을 주셔서 감사합니다. 코드를 objective-C에 게시 할 수 있습니까? –

3

일시적으로, 난, 사용자가 권한을 다음 songArray 객체는 항상 nil 일 거부

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

경우 아래 코드에서 songArray 객체를 선택하여 내 문제를 해결하지만, 사용자가 권한을 허용하는 경우 Media Library에 액세스하면 songArray 개체에 노래 배열이 있습니다. 장치에 노래가 없을지라도 사용자가 Media Library에 액세스 할 수있는 권한을 부여하면 0 카운트의 배열이됩니다.

-1

스위프트 4 액세스 확인. 간단한 해결책은 다음과 같습니다. 그러나 다른 대안을 포함하도록 변경할 수는 있지만 제 경우에는 모두 액세스 또는 아무것도 아닙니다. 위의 방법을 사용하는 방법에 대한

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

주의 - 그들은 블록 문으로 수행 않고 같은 스레드에서 값 (return true 또는 return "authorised")을 반환하지 않는; 결과는 백그라운드 스레드에서 처리됩니다. 위의 제안을 사용하기로 결정한 경우 처리기 (다른 함수 호출)를 사용하여 예상 한 결과를 처리하십시오. 반면에이 솔루션은 액세스 권한이 있는지 여부를 즉시 알려줍니다. 기다릴 필요가 없습니다.

더 많은 정보가의 Apple Docs

+0

Downvote 무엇을 위해? –