मैं स्विफ्ट के साथ एक म्यूजिक ऐप बना रहा हूं। ऐप उपयोगकर्ताओं को अपने ऐप्पल म्यूज़िक ऐप के माध्यम से ऐप्पल म्यूज़िक सब्सक्रिप्शन के माध्यम से संगीत चलाने की सुविधा देता है। मैं यह जांचने में सक्षम हूं कि क्या उपयोगकर्ता के पास Apple म्यूज़िक सदस्यता है:
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 के माध्यम से संगीत नहीं चला सकते हैं।
इसलिए, मैं यह जांचने के तरीके खोजता हूं कि क्या एप्पल म्यूजिक उपयोगकर्ता के डिवाइस पर है। मुझे यह उत्तर मिलता है: जांचें कि क्या ऐप्पल म्यूज़िक के url स्कीम को खोजने के लिए इस संसाधन के साथ संयुक्त रूप से स्विफ्ट का उपयोग करके एक ऐप इंस्टॉल किया गया है और मैं यह जांच सकता हूं कि क्या उपयोगकर्ता के पास Apple म्यूज़िक सब्सक्रिप्शन और ऐप्पल म्यूज़िक ऐप दोनों उनके डिवाइस पर इंस्टॉल हैं:
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 म्यूजिक को डिलीट करने के बाद भी, पहला केस यानी प्रिंट्स user has Apple Music subscription and has the apple music app installed
अभी भी कहा जा रहा है। मेरा मानना है कि क्योंकि जब बदल रहा है तो सही url योजना है "music://"
करने के लिए "musi://"
यानी एक है कि प्रिंट, दूसरे मामले, user does not have subscription or doesn't have apple music installed
बुलाया जा रहा है।
जब URL(string: "music://")
Apple म्यूजिक के माध्यम से खोलने की कोशिश की जाती है UIApplication.shared.open(URL(string: "music://")!)
, तो मैं निम्नलिखित अलर्ट से प्रभावित होता हूं:
तो क्यों डिवाइस कह रहा है कि मैं URL(string: "music://")
Apple म्यूजिक डिलीट होने के बाद भी खोल सकता हूं ? क्या URL
खोलने में सक्षम है, लेकिन परिणाम केवल उपरोक्त चेतावनी की प्रस्तुति है? क्या यह पुष्टि करने का सही तरीका है कि उपयोगकर्ता ने Apple संगीत को अपने डिवाइस पर स्थापित किया है? क्या उपयोगकर्ता को यह पुष्टि करने का एक तरीका भी है कि ऐप्पल म्यूजिक ने अपने डिवाइस पर इंस्टॉल किया है? यदि ऐप्पल उपयोगकर्ताओं को ऐप्पल म्यूज़िक ऐप को हटाने का विकल्प देता है, तो उन्हें डेवलपर्स को ऐप इंस्टॉल करने की जाँच करने की क्षमता भी देनी चाहिए।
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(string: "music://trackID=3214534")
। हो सकता है कि यह स्पष्ट url योजना सामान्य तरीके से व्यवहार की जाएगी, लेकिन एकapp restore
चेतावनी ट्रिगर नहीं ।