2016-06-03 6 views
1

iOS 9.3 Apple에서 새 API를 출시했습니다. 이제 개발자는 사용자가 현재 Apple Music의 멤버인지 확인할 수 있습니다. 어떻게 작동하는지 이해하려고 노력 중입니다. 내 코드 만 사용하면 음악 라이브러리에 액세스 할 수 있는지 여부를 사용자에게 묻지 만 사용자가 회원인지 감지 할 수있는 방법을 결정하고 Apple 뮤직에 가입하는 방법을 이해할 수 없습니다. Shazam의 이러한 작업은 정말 훌륭합니다. 나는 어떻게 그런 것을 할 수 있습니까? 미리 감사드립니다.Apple Music detect is member

[SKCloudServiceController requestAuthorization:^(SKCloudServiceAuthorizationStatus status) { 

    NSLog(@"status is %ld", (long)status); 

    SKCloudServiceController *cloudServiceController = [[SKCloudServiceController alloc] init]; 

    [cloudServiceController requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError * _Nullable error) { 

     NSLog(@"%lu %@", (unsigned long)capabilities, error); 

     if (capabilities >= SKCloudServiceCapabilityAddToCloudMusicLibrary || capabilities==SKCloudServiceCapabilityMusicCatalogPlayback) { 

      NSLog(@"You CAN add to iCloud!"); 


     } else { 

      NSLog(@"The ability to add Apple Music track is not there. sigh."); 
     } 

    }]; 

}]; 

답변

4

기능면에서 SKCloudServiceCapabilityMusicCatalogPlayback 플래그가 있는지 확인해야합니다. 귀하의 질문에 코드는 능력 변수가 해당 플래그와 같은지 확인하지만 비트 연산자를 사용해야합니다. 여기 당신이 그렇게 할 것입니다.

SKCloudServiceController *controller = [SKCloudServiceController new]; 
[controller requestCapabilitiesWithCompletionHandler:^(SKCloudServiceCapability capabilities, NSError * _Nullable error) { 
    if (error != nil) { 
     NSLog(@"Error getting SKCloudServiceController capabilities: %@", error); 

    } else if (capabilities & SKCloudServiceCapabilityMusicCatalogPlayback) { 
     // The user has an active subscription 

    } else { 
     // The user does *not* have an active subscription 
    } 
}]; 

값이 비트 연산자를 사용하기 때문에 당신은 SKCloudServiceCapabilityMusicCatalogPlayback 그냥 일반 상수 값을 플래그입니다하지 않는 것이 말할 수 (이하 "< <은"애플의 설명서 참조).

SKCloudServiceCapabilityMusicCatalogPlayback = 1 << 0 

https://developer.apple.com/reference/storekit/skcloudservicecapability/skcloudservicecapabilitymusiccatalogplayback?language=objc