苹果在StoreKit框架内提供了一种检测用户是否有苹果音乐订阅的方法,尽管它根本不起作用。我订阅了Apple Music,可以在我的应用程序中听歌曲,也可以从我的应用程序中将项目添加到我的库中--但是,当我请求我的能力时,它也说我没有。这是我的代码:
let serviceController = SKCloudServiceController()
serviceController.requestCapabilities { (capability:SKCloudServiceCapability, err:Error?) in
print("error in capability check is \(err)")
switch capability {
case SKCloudServiceCapability.musicCatalogPlayback:
print("user has Apple Music subscription and can play music from apple music api")
case SKCloudServiceCapability.addToCloudMusicLibrary:
print("user has an Apple Music subscription, can play music from api, also can add to their music library")
case SKCloudServiceCapability.musicCatalogSubscriptionEligible:
print("user does not have subscription")
default:
print("default and capability is \(capability.rawValue)")
}
}
每次我运行我的应用程序时,它都会打印“默认值和功能是257。”我试过卸载/重新安装大概有十几次了--每次都是一样的。
注意,我确实可以通过获取我的用户标记并将歌曲添加到我的库中。
还有其他人经历过这种情况,是否还有其他解决办法来查看用户是否有Apple Music订阅?
发布于 2019-01-13 20:36:10
capability
是一个OptionSet
,因为用户可能具有musicCatalogPlayback
或addToCloudMusicLibrary
或两者兼有。
您所看到的原始值是实际值的按位OR
,因为正如您所说的,您具有这两种功能。
您可以使用一系列if
语句或特定的if
语句来检查所需的功能:
let serviceController = SKCloudServiceController()
serviceController.requestCapabilities { (capability:SKCloudServiceCapability, err:Error?) in
guard err == nil else {
print("error in capability check is \(err!)")
return
}
if capability.contains(SKCloudServiceCapability.musicCatalogPlayback) {
print("user has Apple Music subscription and can play music from apple music api")
}
if capability.contains(SKCloudServiceCapability.addToCloudMusicLibrary) {
print("user has an Apple Music subscription, can play music from api, also can add to their music library")
}
if capability.contains(SKCloudServiceCapability.musicCatalogSubscriptionEligible) {
print("user does not have subscription")
}
}
给出
用户有苹果音乐订阅,可以播放来自苹果音乐api的音乐 用户有苹果音乐订阅,可以播放api音乐,也可以添加到他们的音乐库
https://stackoverflow.com/questions/54175721
复制