diff --git a/Assets/Scripts/GoogleSignInIOSBuildPatch.cs b/Assets/Scripts/GoogleSignInIOSBuildPatch.cs index 610c8572..de19d515 100644 --- a/Assets/Scripts/GoogleSignInIOSBuildPatch.cs +++ b/Assets/Scripts/GoogleSignInIOSBuildPatch.cs @@ -1,7 +1,5 @@ #if UNITY_IOS && UNITY_EDITOR using UnityEditor; -using UnityEditor.Build; -using UnityEditor.Build.Reporting; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; using UnityEngine; @@ -12,7 +10,8 @@ public class GoogleSignInIOSBuildPatch [PostProcessBuild(100)] public static void OnPostProcessBuild(BuildTarget buildTarget, string pathToBuiltProject) { - if (buildTarget != BuildTarget.iOS) return; + if (buildTarget != BuildTarget.iOS) + return; string plistPath = Path.Combine(pathToBuiltProject, "Info.plist"); @@ -21,20 +20,19 @@ public class GoogleSignInIOSBuildPatch plist.ReadFromFile(plistPath); PlistElementDict rootDict = plist.root; - // 1. Set GIDClientID rootDict.SetString("GIDClientID", GameConstants.iOS_ClientID); - // 2. Add CFBundleURLSchemes PlistElementArray urlTypes = rootDict.CreateArray("CFBundleURLTypes"); PlistElementDict urlDict = urlTypes.AddDict(); PlistElementArray schemes = urlDict.CreateArray("CFBundleURLSchemes"); schemes.AddString(GameConstants.iOS_URL_Scheme); plist.WriteToFile(plistPath); - Debug.Log("✅ Info.plist patched with GIDClientID and CFBundleURLSchemes."); + Debug.Log("✅ Patched Info.plist with GIDClientID and URL scheme."); // === Modify UnityAppController.mm === string appControllerPath = Path.Combine(pathToBuiltProject, "Classes", "UnityAppController.mm"); + if (!File.Exists(appControllerPath)) { Debug.LogWarning("⚠️ UnityAppController.mm not found."); @@ -42,23 +40,37 @@ public class GoogleSignInIOSBuildPatch } string content = File.ReadAllText(appControllerPath); - string injection = $"[GIDSignIn sharedInstance].clientID = @\"{GameConstants.iOS_ClientID}\";"; + // 1. Inject #import if missing + string importLine = "#import "; + if (!content.Contains(importLine)) + { + int importInsertIndex = content.IndexOf("#import"); + if (importInsertIndex >= 0) + { + int endOfLine = content.IndexOf("\n", importInsertIndex); + content = content.Insert(endOfLine + 1, importLine + "\n"); + } + } + + // 2. Inject GIDSignIn client ID line + string injection = $"[GIDSignIn sharedInstance].clientID = @\"{GameConstants.iOS_ClientID}\";"; if (!content.Contains(injection)) { string marker = "didFinishLaunchingWithOptions:(NSDictionary*)launchOptions"; - int index = content.IndexOf(marker); - if (index > -1) + int markerIndex = content.IndexOf(marker); + if (markerIndex >= 0) { - int braceIndex = content.IndexOf("{", index); - if (braceIndex > -1) + int braceIndex = content.IndexOf("{", markerIndex); + if (braceIndex >= 0) { content = content.Insert(braceIndex + 1, "\n " + injection); - File.WriteAllText(appControllerPath, content); - Debug.Log("✅ UnityAppController.mm patched with GIDClientID."); } } } + + File.WriteAllText(appControllerPath, content); + Debug.Log("✅ Patched UnityAppController.mm with GIDSignIn setup."); } } #endif