在iOS 9.3中,Apple发布了新的API。现在,开发人员可以查看用户当前是否是 Apple Music 的成员。我试图了解它是如何工作的。我的代码 - 只是第一次 - 询问用户是否访问音乐库,但我不明白如何确定您可以通过哪些方式检测用户是否是会员并打开 Apple Music 加入它。沙赞的这些动作真的很棒。我怎么能做这样的事情?提前感谢!
[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.");
}
}];
}];
您应该检查功能中的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
是一个标志,而不仅仅是一个常规常量值,因为该值使用按位运算符(Apple 文档中显示的"<<")。
SKCloudServiceCapabilityMusicCatalogPlayback = 1 << 0
https://developer.apple.com/reference/storekit/skcloudservicecapability/skcloudservicecapabilitymusiccatalogplayback?language=objc