На некоторых устройствах trackingAuthorizationStatus всегда возвращает значение .denied, даже если переключатель Разрешить приложениям запрашивать отслеживание включен. Это означает, что приложение никогда не сможет запросить разрешение на отслеживание. В «Настройки» > «Конфиденциальность» > «Отслеживание приложения» нет переключателя для повторного включения разрешения. У нашей команды есть несколько тестовых устройств, и два iPhone одной модели с одинаковой версией iOS дают разные результаты. Один из них может отображать приглашение requestTrackingAuthorization и ведет себя так, как ожидалось, в то время как два других остаются в состоянии ATTrackingManagerAuthorizationStatusDenied, несмотря ни на что. Мы пробовали «Общие» > «Сброс» > «Сбросить местоположение и конфиденциальность», а также удаляли приложение, переустанавливали, перезапускали, обновляли ОС. Ничто не исправляет состояние .denied. Вот код:
override func viewDidLoad() {
super.viewDidLoad()
let status = ATTrackingManager.trackingAuthorizationStatus
switch status {
case .authorized:
idfaLabel.text = "Yay"
case .denied:
idfaLabel.text = "Goodbye IDFA"
case .notDetermined:
idfaLabel.text = "You've got a choice to make"
case .restricted:
idfaLabel.text = "can't help you there"
default:
print("New case???")
}
ATTrackingManager.requestTrackingAuthorization(completionHandler: {_ in
print("Tracking Requested")
})
}
Заранее спасибо за любые подсказки.
.denied
, в то время как мой тестовый телефон работает должным образом. Я пробовал некоторые другие телефоны, которые также всегда получают.denied
. Единственная общая черта, которую я обнаружил, заключалась в том, что телефоны, которые возвращают.denied
, в какой-то момент имели 14,3, в то время как мой тестовый телефон был на 14,2 и сразу перешел на 14,4. - person Paulw11   schedule 05.02.2021