迅速に音楽アプリを作っています。このアプリを使用すると、ユーザーはApple MusicアプリからApple Musicサブスクリプションを介して音楽を再生できます。次の方法で、ユーザーがApple Musicサブスクリプションを持っているかどうかを確認できます。
SKCloudServiceController().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")
}
if capability.contains(SKCloudServiceCapability.musicCatalogSubscriptionEligible) {
print("user does not have subscription")
}
}
ただし、誰かが何らかの理由でApple Musicサブスクリプションを持っているが、Apple Musicアプリがデバイスにダウンロードされないシナリオがあります。ユーザーがサブスクリプションを持っているがデバイスは持っていない場合、基本的にそのケースをまるでサブスクリプションを持たないかのように扱いたい、つまりApple Music経由で音楽を再生できない。
それで、私はApple Musicがユーザーのデバイス上にあるかどうかのチェックを追加する方法を探しに行きます。私はこの答えを見つけます:Apple MusicのURLスキームを見つけるために、このリソースと組み合わせてSwiftを使用してアプリがインストールされているかどうかを確認し、ユーザーがApple Musicサブスクリプションと Apple Musicアプリの両方をデバイスにインストールしているかどうかを確認できます:
SKCloudServiceController()requestCapabilities { (capability:SKCloudServiceCapability, err:Error?) in
guard err == nil else {
print("error in capability check is \(err!)")
return
}
if capability.contains(SKCloudServiceCapability.musicCatalogPlayback) && UIApplication.shared.canOpenURL(URL(string: "music://")!) {
print("user has Apple Music subscription and has the apple music app installed")
}
if capability.contains(SKCloudServiceCapability.musicCatalogSubscriptionEligible) || !UIApplication.shared.canOpenURL(URL(string: "music://")!) {
print("user does not have subscription or doesn't have apple music installed")
}
}
問題は、デバイスからApple Musicを削除した後でも、最初のケース、つまり印刷するケースuser has Apple Music subscription and has the apple music app installed
がまだ呼び出されていることです。に変更"music://"
する"musi://"
と、2番目のケース、つまり印刷するuser does not have subscription or doesn't have apple music installed
ものが呼び出されるため、私は正しいURLスキームを持っていると思います。
でURL(string: "music://")
削除したApple Musicで開こうとするUIApplication.shared.open(URL(string: "music://")!)
と、次の警告が表示されます。
では、なぜURL(string: "music://")
Apple Musicを削除した後でもデバイスを開くことができると表示されているのですか?をURL
開くことができますが、結果は上記の警告の提示にすぎませんか?これは、ユーザーがデバイスにApple Musicをインストールしていることを確認する正しい方法ですか?ユーザーがデバイスにApple Musicをインストールしていることを確認する方法さえありますか?AppleがユーザーにApple Musicアプリを削除するオプションを提供する場合、アプリがインストールされているかどうかを確認する機能も開発者に提供する必要があります。
URL(string: "music://trackId=1377813289")!
、URL(string: "music://track=1377813289")
、URL(string: "music://artist=562555")!
、URL(string: "music://artistId=562555")!
。ディープリンクを作成する唯一の方法はのようなものを経由することですがURL(string: "https://music.apple.com/us/artist/562555")!
、これはHTTPであるため、明らかに役に立ちません。
UIApplication.shared.canOpenURL(URL(string: "music://")!)
がtrue
常に戻るということです。false
アプリが削除されたときに戻る必要があります。URLスキームをホワイトリストに登録しても、この問題は解決しません(試してみました)。
URL(string: "music://trackID=3214534")
。おそらく、この明示的なURLスキームは通常の方法で処理されますが、app restore
アラートはトリガーされません。