Я делаю музыкальное приложение со Swift. Приложение позволяет пользователям воспроизводить музыку через подписку на 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 на устройстве пользователя. Я нахожу этот ответ: Проверьте , установлено ли приложение с помощью Swift в сочетании с этим ресурсом для поиска схемы URL - адреса 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) && 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
оповещение.