ฉันกำลังสร้างแอปเพลงด้วยความรวดเร็ว แอพช่วยให้ผู้ใช้เล่นเพลงผ่านการสมัครรับข้อมูล 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 อยู่ในอุปกรณ์ของผู้ใช้หรือไม่ ผมพบคำตอบนี้: ตรวจสอบว่าแอปมีการติดตั้งโดยใช้สวิฟท์รวมกับทรัพยากรนี้สำหรับการหารูปแบบ URL แอปเปิ้ลเพลงและสรุปผมสามารถตรวจสอบว่าผู้ใช้มีทั้งการสมัครใช้บริการแอปเปิ้ลเพลงและแอปแอปเปิ้ลเพลงที่ติดตั้งบนอุปกรณ์ของพวกเขาผ่าน:
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
ยังคงมีการพิมพ์ ฉันเชื่อว่าฉันมีแผน URL ที่ถูกต้องเพราะเมื่อมีการเปลี่ยนแปลง"music://"
ไป"musi://"
ในกรณีที่สองคือคนที่พิมพ์user does not have subscription or doesn't have apple music installed
จะถูกเรียกว่า
เมื่อพยายามเปิด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
ตลอดเวลาแม้ว่าแอป Apple Music จะถูกลบ ฉันต้องการให้ส่งคืนfalse
เมื่อลบแอพ การอนุญาต URL แบบแผนไม่สามารถแก้ไขปัญหานี้ได้ (ฉันลองใช้แล้ว)
URL(string: "music://trackID=3214534")
.: บางทีรูปแบบ URL ที่ชัดเจนนี้อาจได้รับการจัดการในลักษณะปกติ แต่จะไม่เปิดการapp restore
แจ้งเตือน