IDFA iOS14 возвращает отказ без отображения всплывающего окна аутентификации

Я занимаюсь исследованием получения IDFA на iOS 14. Я использую iPhone 8 Plus.

я добавил

<key>NSUserTrackingUsageDescription</key>
<string>App would like to access IDFA for tracking purpose</string>

в файле .plist.

Затем добавил

let type = ATTrackingManager.trackingAuthorizationStatus;

который возвращает .denied, имея

func requestPermission() {
        ATTrackingManager.requestTrackingAuthorization { status in
            switch status {
            case .authorized:
                // Tracking authorization dialog was shown
                // and we are authorized
                print("Authorized")
            
                // Now that we are authorized we can get the IDFA
            print(ASIdentifierManager.shared().advertisingIdentifier)
            case .denied:
               // Tracking authorization dialog was
               // shown and permission is denied
                 print("Denied")
            case .notDetermined:
                    // Tracking authorization dialog has not been shown
                    print("Not Determined")
            case .restricted:
                    print("Restricted")
            @unknown default:
                    print("Unknown")
            }
        }
    }

Но я получаю .denied без каких-либо всплывающих окон.

Вы знаете, что происходит?


person freezing_    schedule 09.07.2020    source источник
comment
У меня тоже не работает на реальном устройстве, только на симуляторе (даже если включено отслеживание приложений). Обычно активированные приложения перечислены под общим режимом отслеживания приложений, но перечисленные приложения отсутствуют на физическом устройстве. Сейчас неясно, как с этим быть в продуктивной эксплуатации. Надеюсь на быстрое исправление от Apple!   -  person MosTwanTedT    schedule 17.02.2021


Ответы (5)


В системном приложении «Настройки» есть параметр Разрешить приложениям запрашивать отслеживание, и если он отключен, requestTrackingAuthorization немедленно вернет .denied.

Privacy Setting
person dlackty    schedule 10.07.2020
comment
У меня он активен, я переустановил приложение, и оно все еще не выводит оповещение. - person Iulian Onofrei; 06.01.2021
comment
@lulianOnofrei, в конце концов, ты заставил это работать. у меня такая же проблема с 14.4 - person Pixel; 11.02.2021
comment
У меня такая же проблема. Предупреждение появилось один раз, и просто для того, чтобы поиграть, я нажал «Спросить приложение не отслеживать», и теперь запуск приложения снова всегда возвращает отказ без отображения предупреждения, даже если я удалю приложение или изменю переключатель отслеживания, показанный выше в настройках. Это на iOS 14.4 на реальном устройстве. Как мы можем тестировать и отлаживать, если нет возможности вернуться к исходному состоянию, когда отображается предупреждение? - person Bbx; 22.02.2021
comment
О, наконец-то я вернул оповещение. 1) При установленном приложении выберите «Настройки» > «Дисплей диска (моя игра)» > «Разрешить отслеживание» и включите его. 2) Удалите приложение. 3) Убедитесь, что параметр «Разрешить приложениям запрашивать отслеживание» (см. рис. выше) включен. 3) Установите приложение еще раз, а статус TrackingAuthorizationStatus изначально имеет значение NotDetermined, и появится предупреждение. - person Bbx; 23.02.2021
comment
@Bbx Я попробовал ваш шаг в режиме отладки, и он не работает. - person Houman; 29.04.2021
comment
@Houman Да, теперь я не могу воспроизвести исходную проблему. Я использую Xcode 12.4 и настоящее устройство iOS 14.4, и я всегда получаю предупреждение, если каждый раз удаляю приложение. - person Bbx; 30.04.2021
comment
Вы знаете, когда TrackingAuthorizationStatus будет ограничен? - person Deepjyot Kaur; 16.06.2021

Если глобальная настройка Разрешить приложениям запрашивать отслеживание выключена, requestTrackingAuthorization немедленно вернет .denied.

Но для некоторых пользователей даже после включения параметра Разрешить приложениям запрашивать отслеживание requestTrackingAuthorization возвращает .denied.

Это проблема ОС, которая исправлена ​​в выпуске 14.5.1, поэтому просто обновите свою ОС, чтобы получить диалоговое окно ATT.

Примечания к выпуску для iOS и iPadOS 14.5.1

Это обновление устраняет проблему с прозрачностью отслеживания приложений, из-за которой некоторые пользователи, которые ранее отключили «Разрешить приложениям запрашивать отслеживание» в настройках, могут не получать запросы от приложений после повторного включения. Это обновление также содержит важные обновления безопасности и рекомендуется для всех пользователей.

person Abhishek Aryan    schedule 04.05.2021

Поскольку разрешение отклонено от пользователя

Вы можете переместить пользователя на страницу настроек приложения с помощью моего кода

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!, options: [:], completionHandler: nil)
person Tritmm    schedule 24.08.2020

Глупый вопрос с моей стороны, вы действительно вызываете функцию? Имейте в виду, что после ответа он больше не появится. Вам придется удалить и установить приложение, чтобы представить его снова

person Oscar    schedule 10.07.2020
comment
Да, я удалил приложение и много раз устанавливал. Я вызываю функцию, так как она печатает Denied - person freezing_; 13.07.2020

Кажется, вам нужно использовать iOS 14.4.

Я предполагаю, что вы уже однажды установили разрешение / запрет. Я столкнулся с той же проблемой: предупреждение о запросе разрешения больше никогда не появлялось, даже если я удалил приложение, когда я пробовал его с iOS 14.0. Но когда я использую iOS до 14.4, я могу сбросить настройки и снова увидеть предупреждение с запросом, удалив свое приложение.

person hiroshi046    schedule 29.01.2021
comment
У меня даже с 14.4 это не работает. - person Pixel; 11.02.2021