iPhone,iPad向けのアプリで広告を表示している場合、ATTダイアログを出して確認する必要があるがAppleシリコンのMacでも動くようにする場合に問題があった。
MacだとATTダイアログが出ないです
そのため、”NOT_DETERMINED”のままになってしまい、決定を待っていると終わらなかった。
最終的にこんな実装をしました。
#if UNITY_IOS
using Unity.Advertisement.IosSupport;
using UnityEngine.iOS;
#endif
//
// 中略
//
#if UNITY_IPHONE || UNITY_IOS
// check with iOS to see if the user has accepted or declined tracking
var status = ATTrackingStatusBinding.GetAuthorizationTrackingStatus();
//まだATT方針を決めていないなら
if (status == ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED)
{
ATTrackingStatusBinding.RequestAuthorizationTracking();
}
//実機の時だけ完了待ちをする
#if !UNITY_EDITOR
// macでiPadアプリを動作させている.
if(Device.iosAppOnMac){
}
else {
while (status == ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED)
{
status = ATTrackingStatusBinding.GetAuthorizationTrackingStatus();
yield return new WaitForEndOfFrame();
}
}
#endif
#endif
“Device.iosAppOnMac”でMacかどうかを判定できるので、Macだったら無視するようにした。
Device.iosAppOnMac
コメント