আমি দ্রুত সঙ্গে একটি সঙ্গীত অ্যাপ তৈরি করছি। অ্যাপ্লিকেশনটি ব্যবহারকারীদের তাদের অ্যাপল সঙ্গীত অ্যাপের মাধ্যমে অ্যাপল সঙ্গীত সাবস্ক্রিপশনের মাধ্যমে সঙ্গীত খেলতে দেয়। ব্যবহারকারীর অ্যাপল মিউজিক সাবস্ক্রিপশন রয়েছে কিনা তা আমি এই মাধ্যমে যাচাই করতে সক্ষম হয়েছি:
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")
}
}
তবে: এমন পরিস্থিতি রয়েছে যেখানে কারও কারও কাছে, কোনও কারণে অ্যাপল সংগীতের সাবস্ক্রিপশন থাকলেও তাদের ডিভাইসে অ্যাপল সংগীত অ্যাপ্লিকেশনটি ডাউনলোড করা হবে না। যদি ব্যবহারকারীটির সাবস্ক্রিপশন থাকে তবে ডিভাইসটি না থাকে তবে আমি মূলত সেই কেসটি এমনভাবে চিকিত্সা করতে চাই যেন তাদের সাবস্ক্রিপশন নেই, অর্থাৎ আমরা অ্যাপল মিউজিকের মাধ্যমে সঙ্গীত খেলতে পারি না।
সুতরাং, আমি অ্যাপল সঙ্গীত ব্যবহারকারীর ডিভাইসে আছে কিনা তা পরীক্ষা করার জন্য উপায়গুলি অনুসন্ধান করতে যাচ্ছি। আমি এই উত্তরটি খুঁজে পেয়েছি: অ্যাপল মিউজিকের ইউআরএল স্কিমটি সন্ধানের জন্য এই রিসোর্সের সাথে একত্রে সুইফট ব্যবহার করে কোনও অ্যাপ্লিকেশন ইনস্টল করা আছে কিনা তা পরীক্ষা করে দেখুন এবং উপসংহারে পৌঁছাতে পারি যে কোনও ব্যবহারকারীকে তাদের ডিভাইসে অ্যাপল মিউজিক সাবস্ক্রিপশন এবং অ্যাপল মিউজিক অ্যাপ্লিকেশন উভয়ই ইনস্টল করা আছে কিনা:
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")
}
}
সমস্যাটি হ'ল, এমনকি আমার ডিভাইস থেকে অ্যাপল সংগীত মুছে ফেলার পরে, প্রথম কেস, অর্থাৎ মুদ্রিত user has Apple Music subscription and has the apple music app installed
হওয়া এখনও কল করা হচ্ছে। আমি বিশ্বাস করি আমার সঠিক ইউআরএল স্কিম আছে কারণ পরিবর্তন "music://"
করার সময় "musi://"
, দ্বিতীয় কেস, অর্থাৎ প্রিন্ট user does not have subscription or doesn't have apple music installed
করা হচ্ছে।
URL(string: "music://")
অ্যাপল মিউজিকের মাধ্যমে খোলার চেষ্টা করার মাধ্যমে UIApplication.shared.open(URL(string: "music://")!)
, আমি নিম্নলিখিত সতর্কতার সাথে আঘাত পেয়েছি:
তাহলে ডিভাইসটি কেন বলছে যে URL(string: "music://")
অ্যাপল মিউজিক মোছার পরেও আমি খুলতে পারি ? URL
খোলার পক্ষে সক্ষম, তবে ফলাফলটি কি কেবল উপরের সতর্কতার উপস্থাপনা? ব্যবহারকারী কি তাদের ডিভাইসে অ্যাপল সঙ্গীত ইনস্টল করেছে তা নিশ্চিত করার সঠিক উপায়? এমনকি ব্যবহারকারীরা তাদের ডিভাইসে অ্যাপল সংগীত ইনস্টল করেছেন কি না তা নিশ্চিত করার কোনও উপায় আছে? অ্যাপল যদি ব্যবহারকারীদের অ্যাপল মিউজিক অ্যাপ্লিকেশনটি মুছে ফেলার বিকল্প দেয় তবে তাদের অ্যাপ্লিকেশনটি ইনস্টল করা আছে কিনা তা বিকাশকারীদেরও পরীক্ষা করার ক্ষমতা দেওয়া উচিত।
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")!
, তবে এটি অবশ্যই এইচটিটিপি হিসাবে কার্যকর হয় না।
UIApplication.shared.canOpenURL(URL(string: "music://")!)
ফিরছে true
। আমার false
অ্যাপ্লিকেশন মোছার পরে ফিরে আসা দরকার । ইউআরএল স্কিমকে হোয়াইটলিস্ট করা এই সমস্যাটি সমাধান করবে না (আমি এটি চেষ্টা করেছি)।
URL(string: "music://trackID=3214534")
। সম্ভবত এই সুস্পষ্ট url স্কিমটি একটি সাধারণ উপায়ে চিকিত্সা করা হবে তবে কোনওapp restore
সতর্কতা ট্রিগার করা হবে না ।