Swift 3.1 SKCloudServiceCapability 问题
Swift 3.1 Issue with SKCloudServiceCapability
我正在尝试调用此函数来检查 Apple Music 订阅状态。我有一个活跃的订阅并在我的 iPhone 上听音乐。
但是当我在上面 运行 测试应用程序时,capability
值无效。
应该是SKCloudServiceCapability.musicCatalogPlayback
、SKCloudServiceCapability.addToCloudMusicLibrary
,或者不设置。我只能得到raw value = 257
.
func appleMusicCheckIfDeviceCanPlayback()
{
let serviceController = SKCloudServiceController()
serviceController.requestCapabilities { (capability:SKCloudServiceCapability, err:Error?) in
switch capability {
case SKCloudServiceCapability.musicCatalogPlayback:
print("The user has an Apple Music subscription and can playback music!")
case SKCloudServiceCapability.addToCloudMusicLibrary:
print("The user has an Apple Music subscription, can playback music AND can add to the Cloud Music Library")
case []:
print("The user doesn't have an Apple Music subscription available. Now would be a good time to prompt them to buy one?")
default: print("Something went wrong")
}
}
}
这是怎么回事?
最后 Apple 论坛的人给了我这个 link 文档,我找到了问题所在。
https://developer.apple.com/library/content/qa/qa1929/_index.html
我应该使用 if capability.contains(SKCloudServiceCapability.) 而不是 switch 来获取功能值。
所以这段代码工作得很好。
func appleMusicCheckIfDeviceCanPlayback()
{
let serviceController = SKCloudServiceController()
serviceController.requestCapabilities { (capability:SKCloudServiceCapability, err:Error?) in
if capability.contains(SKCloudServiceCapability.musicCatalogPlayback) {
print("The user has an Apple Music subscription and can playback music!")
} else if capability.contains(SKCloudServiceCapability.addToCloudMusicLibrary) {
print("The user has an Apple Music subscription, can playback music AND can add to the Cloud Music Library")
} else {
print("The user doesn't have an Apple Music subscription available. Now would be a good time to prompt them to buy one?")
}
}
}
是位运算
.musicCatalogPlayback(1 << 0 = 1) | . addToCloudMusicLibrary(1 << 8 = 256) = 257
使用
swift:
case SKCloudServiceCapability.addToCloudMusicLibrary|SKCloudServiceCapability.musicCatalogPlayback:{
//code
}break;
oc:
case SKCloudServiceCapabilityAddToCloudMusicLibrary|SKCloudServiceCapabilityMusicCatalogPlayback:{
//code
}break;
我正在尝试调用此函数来检查 Apple Music 订阅状态。我有一个活跃的订阅并在我的 iPhone 上听音乐。
但是当我在上面 运行 测试应用程序时,capability
值无效。
应该是SKCloudServiceCapability.musicCatalogPlayback
、SKCloudServiceCapability.addToCloudMusicLibrary
,或者不设置。我只能得到raw value = 257
.
func appleMusicCheckIfDeviceCanPlayback()
{
let serviceController = SKCloudServiceController()
serviceController.requestCapabilities { (capability:SKCloudServiceCapability, err:Error?) in
switch capability {
case SKCloudServiceCapability.musicCatalogPlayback:
print("The user has an Apple Music subscription and can playback music!")
case SKCloudServiceCapability.addToCloudMusicLibrary:
print("The user has an Apple Music subscription, can playback music AND can add to the Cloud Music Library")
case []:
print("The user doesn't have an Apple Music subscription available. Now would be a good time to prompt them to buy one?")
default: print("Something went wrong")
}
}
}
这是怎么回事?
最后 Apple 论坛的人给了我这个 link 文档,我找到了问题所在。 https://developer.apple.com/library/content/qa/qa1929/_index.html
我应该使用 if capability.contains(SKCloudServiceCapability.) 而不是 switch 来获取功能值。 所以这段代码工作得很好。
func appleMusicCheckIfDeviceCanPlayback()
{
let serviceController = SKCloudServiceController()
serviceController.requestCapabilities { (capability:SKCloudServiceCapability, err:Error?) in
if capability.contains(SKCloudServiceCapability.musicCatalogPlayback) {
print("The user has an Apple Music subscription and can playback music!")
} else if capability.contains(SKCloudServiceCapability.addToCloudMusicLibrary) {
print("The user has an Apple Music subscription, can playback music AND can add to the Cloud Music Library")
} else {
print("The user doesn't have an Apple Music subscription available. Now would be a good time to prompt them to buy one?")
}
}
}
是位运算
.musicCatalogPlayback(1 << 0 = 1) | . addToCloudMusicLibrary(1 << 8 = 256) = 257
使用
swift:
case SKCloudServiceCapability.addToCloudMusicLibrary|SKCloudServiceCapability.musicCatalogPlayback:{
//code
}break;
oc:
case SKCloudServiceCapabilityAddToCloudMusicLibrary|SKCloudServiceCapabilityMusicCatalogPlayback:{
//code
}break;