diff --git a/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.cs b/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.cs new file mode 100644 index 0000000..c4aff12 --- /dev/null +++ b/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.cs @@ -0,0 +1,57 @@ +#if UNITY_IOS + +using System; +using System.Collections.Generic; +using UnityEngine.iOS; + +namespace Unity.Advertisement.IosSupport +{ + using TrackingStatus = ATTrackingStatusBinding.AuthorizationTrackingStatus; + + public static class ATTracking + { + static Dictionary Statuses = new Dictionary() + { + { 0, TrackingStatus.NOT_DETERMINED}, + { 1, TrackingStatus.RESTRICTED}, + { 2, TrackingStatus.DENIED}, + { 3, TrackingStatus.AUTHORIZED} + }; + public static bool SupportediOSVersion => new Version(Device.systemVersion) > new Version("14.5"); + + public static bool IsTrackingAccepted() + { + // check with iOS to see if the user has accepted or declined tracking + var status = ATTrackingStatusBinding.GetAuthorizationTrackingStatus(); + + if (SupportediOSVersion) + { + return status == TrackingStatus.AUTHORIZED; + } + else + { + return true; + } + } + + public static bool RequestAuthorizationTracking(Action callback = null) + { + var authStatus = ATTrackingStatusBinding.GetAuthorizationTrackingStatus(); + + if (SupportediOSVersion) + { + if (authStatus == TrackingStatus.NOT_DETERMINED) + { + ATTrackingStatusBinding.RequestAuthorizationTracking((requestStatus) => + { + if (callback != null) + callback.Invoke(Statuses[requestStatus]); + }); + return true; + } + } + return false; + } + } +} +#endif \ No newline at end of file diff --git a/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.cs.meta b/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.cs.meta new file mode 100644 index 0000000..a046edd --- /dev/null +++ b/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cedd5f7f66e90e44ba50a39fb03b9ffd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.non_iOS.cs b/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.non_iOS.cs new file mode 100644 index 0000000..86166eb --- /dev/null +++ b/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.non_iOS.cs @@ -0,0 +1,23 @@ +#if !UNITY_IOS + +using System; + +namespace Unity.Advertisement.IosSupport +{ + using TrackingStatus = ATTrackingStatusBinding.AuthorizationTrackingStatus; + + public static class ATTracking + { + public static bool SupportediOSVersion => false; + public static bool IsTrackingAccepted() + { + return true; + } + public static bool RequestAuthorizationTracking(Action callback = null) + { + // Do nothing + return false; + } + } +} +#endif \ No newline at end of file diff --git a/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.non_iOS.cs.meta b/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.non_iOS.cs.meta new file mode 100644 index 0000000..897d09e --- /dev/null +++ b/com.unity.ads.ios-support/Runtime/iOSTransparency/ATTracking.non_iOS.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3be053b6204af6249aa4debaa5d9faeb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: