Hızlı bir müzik uygulaması yapıyorum. Uygulama, kullanıcıların Apple Music abonelikleri aracılığıyla Apple Music uygulamaları aracılığıyla müzik çalmalarını sağlar. Kullanıcının Apple Music aboneliğine sahip olup olmadığını kontrol edebiliyorum:
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")
}
}
Bununla birlikte , bir nedenden dolayı bir kişinin Apple Music aboneliğine sahip olacağı, ancak cihazlarına Apple Music uygulamasının indirilmeyeceği senaryolar vardır. Kullanıcı aboneliğe sahip ancak cihaza sahip değilse, bu davaya abonelikleri yokmuş gibi davranmak istiyorum, yani Apple Music üzerinden müzik çalamayız.
Bu yüzden, Apple Music'in kullanıcının cihazında olup olmadığını kontrol etmenin yollarını aramaya gidiyorum. Bu cevabı buluyorum: Apple Music'in url şemasını bulmak için Swift'in bu kaynakla birlikte bir uygulamanın yüklü olup olmadığını kontrol edin ve bir kullanıcının hem Apple Music aboneliğine hem de Apple Music uygulamasının cihazında yüklü olup olmadığını kontrol edebilirim :
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")
}
}
Sorun, Apple Music'i cihazımdan sildikten sonra bile, ilk durum, yani yazdırılan user has Apple Music subscription and has the apple music app installed
durum hala çağrılıyor. Ben değiştirirken çünkü doğru url şeması olduğuna inanmak "music://"
için "musi://"
yani baskılar o biri, ikinci durumda, user does not have subscription or doesn't have apple music installed
deniliyor.
URL(string: "music://")
Apple Music üzerinden silindi ile açmaya çalışırken UIApplication.shared.open(URL(string: "music://")!)
, aşağıdaki uyarıyla karşılaşıyorum:
Peki cihaz neden URL(string: "music://")
Apple Music silindikten sonra bile açabileceğimi söylüyor ? Açılabilir mi URL
, ancak sonuç sadece yukarıdaki uyarının sunumu mu? Bu, kullanıcının cihazında Apple Music'in yüklü olduğunu doğrulamanın doğru yolu mu? Kullanıcının cihazında Apple Music yüklü olduğunu onaylamanın bir yolu var mı? Apple kullanıcılara Apple Music uygulamasını silme seçeneği sunarsa, geliştiricilere uygulamanın yüklü olup olmadığını kontrol etme olanağı da vermelidir.
URL(string: "music://trackId=1377813289")!
, URL(string: "music://track=1377813289")
, URL(string: "music://artist=562555")!
, URL(string: "music://artistId=562555")!
. Derin bir bağlantı kurmanın tek yolu böyle bir şeydir URL(string: "https://music.apple.com/us/artist/562555")!
, ancak bu HTTP olduğu için bu yardımcı olmaz.
UIApplication.shared.canOpenURL(URL(string: "music://")!)
geri dönüyor true
olmasıdır. false
Uygulama silindiğinde geri dönmek istiyorum . URL şemasını beyaz listeye eklemek bu sorunu çözmez (denedim).
URL(string: "music://trackID=3214534")
. Belki bu açık url şeması olağan bir şekilde ele alınacak, ancak birapp restore
uyarıyı tetiklemeyecektir .