こんにちは、HAL-JPです。
ところでみなさん、UnityでIDFAを取得するときにObjective-Cを作成したり、Xcode側でframeworkを追加したりしていませんか?毎回buildする時にいちいち設定するのはめんどくさいですよね。今回紹介する方法では最初に設定すれば毎回buildする時にいちいち設定する必要がなくなります。また、IDFAの説明なども表示することができるので便利です。
IDFAの取得とは
IDFA (Identifier for Advertisers) は、Appleがユーザーの端末にランダムに割り当てるデバイスIDです。広告主はこのIDを使ってアプリ内のユーザー行動を計測することで、カスタマイズした広告を配信することができます。しかし、IOS 14.5 のリリースによりすべてが変わりました。デバイスのIDFAに自由にアクセスできなくなり、IOS 14.5のリリースによりアプリはIDFAを使うための使用許可を要請するポップアップダイアログを表示する必要がでてきました。
IDFAのトラッキング許可を取得する
では、いよいよIDFAのトラッキング許可を取得していきましょう!
- STEP.1iOS 14 Advertising Supportをインストール
UnityからWindow>Package Managerを選択
そして、Unity RegistryからiOS 14 Advertising Supportを探し『Install』を選択
- STEP.2IDFAの説明を表示する
SamplesのImportを選択
インポートするとAssetフォルダにSamplesが作成されます。
Asset>Samples>iOS 14 Advertising Support>1.0.0>01 Context Screen>Prefabs>Context Screen.prefabを選択し、IDFAの説明を表示したいシーンにドラッグ&ドロップする
- STEP.3説明を日本語にする
タイトルや説明文が英語なので日本語にする
画像は英語を翻訳したものを掲載
- STEP.4表示するタイミングを設定
Example.csというスクリプトを作成し、以下の内容を入力
using System.Collections; using Unity.Advertisement.IosSupport; using UnityEngine; #if UNITY_IOS using UnityEngine.iOS; #endif public sealed class Example : MonoBehaviour { public GameObject ATT; #if UNITY_IOS private void Start() { // まだ許可ダイアログを表示したことがない場合 if (ATTrackingStatusBinding.GetAuthorizationTrackingStatus() == ATTrackingStatusBinding.AuthorizationTrackingStatus.NOT_DETERMINED) { // 許可ダイアログを表示します ATT.SetActive(true); } } #endif }
次にEventSystemを作成
作成したEventSystemにExample.csをドラッグ&ドロップし、Example.csのATTにContext Screenをドラッグ&ドロップ
最後に、Context Screenを非アクティブにする
- STEP.5ポップアップダイアログの説明を追加
AssetにEditorというフォルダーを作成
そのフォルダーの中にPostBuildStep.csというスクリプトを作成し、以下の内容を入力
※ポップアップダイアログの説明の所だけ各自変更してくださいusing UnityEditor; using UnityEditor.Callbacks; #if UNITY_IOS using UnityEditor.iOS.Xcode; #endif using System.IO; public class PostBuildStep { // Set the IDFA request description: const string k_TrackingDescription = "ポップアップダイアログの説明"; [PostProcessBuild(0)] public static void OnPostProcessBuild(BuildTarget buildTarget, string pathToXcode) { if (buildTarget == BuildTarget.iOS) { AddPListValues(pathToXcode); } } // Implement a function to read and write values to the plist file: static void AddPListValues(string pathToXcode) { // Retrieve the plist file from the Xcode project directory: string plistPath = pathToXcode + "/Info.plist"; PlistDocument plistObj = new PlistDocument(); // Read the values from the plist file: plistObj.ReadFromString(File.ReadAllText(plistPath)); // Set values from the root object: PlistElementDict plistRoot = plistObj.root; // Set the description key-value in the plist: plistRoot.SetString("NSUserTrackingUsageDescription", k_TrackingDescription); // Save changes to the plist: File.WriteAllText(plistPath, plistObj.WriteToString()); } }
- STEP.6ポップアップダイアログを閉じる
Assets/Samples/iOS 14 Advertising Support/1.0.0/01 Context Screen/Scripts/ContextScreenView.csを開き以下のマーカー部分を追加してください。
using System; using UnityEngine; namespace Unity.Advertisement.IosSupport.Components { /// <summary> /// This component controls an iOS App Tracking Transparency context screen. /// You should only have one of these in your app. /// </summary> public sealed class ContextScreenView : MonoBehaviour { /// <summary> /// This event will be invoked after the ContinueButton is clicked /// and after the tracking authorization request has been sent. /// It's a good idea to subscribe to this event so you can destroy /// this GameObject to free up memory after it's no longer needed. /// Once the tracking authorization request has been sent, there's no /// need for this popup again until the app is uninstalled and reinstalled. /// </summary> public event Action sentTrackingAuthorizationRequest; public void RequestAuthorizationTracking() { #if UNITY_IOS Debug.Log("Unity iOS Support: Requesting iOS App Tracking Transparency native dialog."); ATTrackingStatusBinding.RequestAuthorizationTracking(); sentTrackingAuthorizationRequest?.Invoke(); #else Debug.LogWarning("Unity iOS Support: Tried to request iOS App Tracking Transparency native dialog, " + "but the current platform is not iOS."); #endif gameObject.SetActive(false); } } }
最後にbuildしてIDFAリクエストを拒否していない端末で実行すれば許可画面が表示されます。
以上、Unity内だけで簡単にIDFAのトラッキング許可を取得する方法を紹介しました。 IDFAを取得して広告の収益を高めていきましょう!
もし、やり方がうまくわからない方はご気軽にお問い合わせください。
お問い合わせ
以上
コメント