#if UNITY_IOS || UNITY_IPHONE using System.IO; using UnityEditor.Callbacks; using UnityEditor; using System; using UnityEngine; using UnityEditor.iOS.Xcode; using System.Text.RegularExpressions; /// /// PostProcessor script to automatically fill all required dependencies /// public class IronSourcePlistProcessor { [PostProcessBuild] public static void OnPostprocessBuild(BuildTarget buildTarget, string buildPath) { if (File.Exists(IronSourceMediationSettings.IRONSOURCE_SETTINGS_ASSET_PATH)) { if (buildTarget == BuildTarget.iOS) { /* * PBXProject */ string plistPath = Path.Combine(buildPath, "Info.plist"); PBXProject project = new PBXProject(); string projectPath = PBXProject.GetPBXProjectPath(buildPath); project.ReadFromFile(projectPath); PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); if (plist != null) { // Get root PlistElementDict rootDict = plist.root; // Check if SKAdNetworkItems already exists PlistElementArray SKAdNetworkItems = null; if (rootDict.values.ContainsKey("SKAdNetworkItems")) { try { SKAdNetworkItems = rootDict.values["SKAdNetworkItems"] as PlistElementArray; } catch (Exception e) { Debug.LogWarning(string.Format("Could not obtain SKAdNetworkItems PlistElementArray: {0}", e.Message)); } } //Add IronSource's SKAdNetwork ID if (IronSourceMediationSettingsInspector.IronSourceMediationSettings.AddIronsourceSkadnetworkID) { // If not exists, create it if (SKAdNetworkItems == null) { SKAdNetworkItems = rootDict.CreateArray("SKAdNetworkItems"); } string plistContent = File.ReadAllText(plistPath); if (!plistContent.Contains(IronSourceConstants.IRONSOURCE_SKAN_ID_KEY)) { PlistElementDict SKAdNetworkIdentifierDict = SKAdNetworkItems.AddDict(); SKAdNetworkIdentifierDict.SetString("SKAdNetworkIdentifier", IronSourceConstants.IRONSOURCE_SKAN_ID_KEY); } } File.WriteAllText(plistPath, plist.WriteToString()); } } } if ( File.Exists(IronSourceMediatedNetworkSettings.MEDIATION_SETTINGS_ASSET_PATH)) { if (buildTarget == BuildTarget.iOS) { /* * PBXProject */ string plistPath = Path.Combine(buildPath, "Info.plist"); PBXProject project = new PBXProject(); string projectPath = PBXProject.GetPBXProjectPath(buildPath); project.ReadFromFile(projectPath); PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); if (plist != null) { // Get root PlistElementDict rootDict = plist.root; //Adding AdMob App ID to Plist if (IronSourceMediatedNetworkSettingsInspector.IronSourceMediatedNetworkSettings.EnableAdmob == true) { string appId = IronSourceMediatedNetworkSettingsInspector.IronSourceMediatedNetworkSettings.AdmobIOSAppId; if (appId.Length == 0) { StopBuildWithMessage( "iOS AdMob app ID is empty. Please enter your app ID to run ads properly"); } else if (!Regex.IsMatch(appId, "^[a-zA-Z0-9-~]*$")) { StopBuildWithMessage( "iOS AdMob app ID is not valid. Please enter a valid app ID to run ads properly"); } else { plist.root.SetString("GADApplicationIdentifier", appId); } } File.WriteAllText(plistPath, plist.WriteToString()); } } } } private static void StopBuildWithMessage(string message) { string prefix = "[IronSourceApplicationSettings] "; EditorUtility.DisplayDialog( "IronSource Developer Settings", "Error: " + message, "", ""); #if UNITY_2017_1_OR_NEWER throw new BuildPlayerWindow.BuildMethodException(prefix + message); #else throw new OperationCanceledException(prefix + message); #endif } } #endif