com.unity.ads.ios-support icon indicating copy to clipboard operation
com.unity.ads.ios-support copied to clipboard

ATTrackingStatusBinding.RequestAuthorizationTracking is calling back on backgound thread

Open abcjjy opened this issue 2 years ago • 1 comments

This behavior is error prone. Please make it in main thread or give a warning in the doc.

abcjjy avatar Aug 16 '23 04:08 abcjjy

if you have UniTask in your project, this is my workaround, but I agree with you, it should be noticed in Doc

public UniTask AppTrackingTransparencyAsync()
{
    var status = ATTrackingStatusBinding.GetAuthorizationTrackingStatus();
    Version currentVersion = new Version(Device.systemVersion);
    Version ios14 = new Version("14.5");

    Debug.Log($"GetAuthorizationTrackingStatus={status}");
    if (status == ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED && currentVersion >= ios14)
    {
        var utcs = new UniTaskCompletionSource();

        ATTrackingStatusBinding.RequestAuthorizationTracking(async (int status) =>
        {
            // 2:not allow 3:allow
            Debug.Log("RequestAuthorizationTracking: " + status);

            // callback is in another thread, switch back to Unity main thread
            await UniTask.SwitchToMainThread();
            utcs.TrySetResult();
        });

        return utcs.Task;
    }

    return UniTask.CompletedTask;
}

simon129 avatar May 10 '24 08:05 simon129