Swift

[Swift]App Tracking Transparency permissionのダイアログをちょっとだけ表示しやすくするコツ

iOS用のアプリでIDFAを取得する場合、iOS14からApp Tracking Transparency permissionのダイアログを表示させてユーザーに許可を得なければならなくなりました。

いままでリリースしたアプリではこのようなコードで呼び出しを行なっていたのですが、確かに言われてみるとダイアログが表示される場合と表示されない場合があり、なんだか不安定でした。

DispatchQueue.main.async {
    ATTrackingManager.requestTrackingAuthorization(completionHandler: { [weak self] status in
        switch status {
        case .authorized:
            print("🎉")
            //IDFA取得
            print("IDFA: \(ASIdentifierManager.shared().advertisingIdentifier)")


            break
        case .denied:
            print("denied 😭")
            break
        case  .restricted:
            print("restricted 😭")
            break
        case   .notDetermined:
            print("not determinded😭")
            break
        }
        self?.adMobInitialize()

    }) 
}

 

そこで、ATTrackingManager.requestTrackingAuthorizationの呼び出しを1秒程度遅らせてみることにしました。そうすると、ダイアログが安定的に表示されるようになりました。

// 1秒遅らせる
            DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
                ATTrackingManager.requestTrackingAuthorization(completionHandler: { [weak self] status in
                    switch status {
                    case .authorized:
                        print("🎉")
                        //IDFA取得
                        print("IDFA: \(ASIdentifierManager.shared().advertisingIdentifier)")
                        break
                    case .denied:
                        print("denied 😭")
                        break
                    case  .restricted:
                        print("restricted 😭")
                        break
                    case   .notDetermined:
                        print("not determinded😭")
                        break
                    }

                }) 
            }

 

 

-Swift

© 2023 かずのアプリときどきキャンプ飯 Powered by AFFINGER5