※ これは 2021/04/09 時点の Unity 2020.3.3f1, Xcode 12.4 の情報です
最新版では動作が異なる可能性がありますのでご注意ください
前回までで AdMob、Firebase の iOS 14 ATT 対応を行ったが、下記で触れている Xcode の設定手順は一部手でやる必要がありめんどくさい
というわけで今回はこの手順を省けるよう自動化してみたい
というわけで今回は広告表示のほぼデファクトになりつつある AdMob SDK を利用する場合、上記前回の手順に加えて必要になる iOS 14 ATT 対応を試してみる
スポンサードリンク
まずは下記のような PostProcessBuild.cs
を Assets/Editor
直下に作る
using System.IO; using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; using UnityEngine; /// <summary> /// ビルド後処理。 /// </summary> public class PostprocessBuild : MonoBehaviour { /// <summary> /// ビルド後処理 /// </summary> /// <param name="buildTarget">ビルドターゲット情報</param> /// <param name="path">出力先パス</param> [PostProcessBuild(1)] public static void OnPostprocessBuild(BuildTarget buildTarget, string path) { if (buildTarget == BuildTarget.iOS) { BuildIOS(buildTarget, path); } } /// <summary> /// iOS 用ビルド後処理 /// </summary> /// <param name="buildTarget">ビルドターゲット情報</param> /// <param name="path">出力先パス</param> public static void BuildIOS(BuildTarget buildTarget, string path) { var exportPath = new DirectoryInfo(path).FullName; var projectPath = new DirectoryInfo( Path.Combine(Path.Combine(exportPath, "Unity-iPhone.xcodeproj"), "project.pbxproj")).FullName; // Unity が出力した Xcode プロジェクトファイルを読み込む var project = new PBXProject(); project.ReadFromFile(projectPath); // Xcode プロジェクト内のターゲット参照 var frameworks = project.GetUnityMainTargetGuid(); // ATT 用フレームワーク参照追加 project.AddFrameworkToProject(frameworks, "AppTrackingTransparency.framework", false); // Info.plist の書き換え var plist = new PlistDocument(); var plistPath = Path.Combine(path, "Info.plist"); plist.ReadFromFile(plistPath); // ATT 用説明文追加 plist.root.SetString("NSUserTrackingUsageDescription", "上記は広告表示と利用状況の分析に使用されます"); // Xcode のプロジェクトファイルに書き戻し plist.WriteToFile(plistPath); project.WriteToFile(projectPath); } }
フレームワーク参照の追加先が Unity-iPhone
ではなく UnityFramework
なのは注意
あとはビルドするだけ!できた Xcode のプロジェクトを開くと・・・
フレームワーク参照と
ダイアログ用の説明文も自動で追加されている!
これならかんたん