Я создаю музыкальное приложение с помощью 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, они также должны дать разработчикам возможность проверить, установлено ли приложение.