public static void OnCocoaPodsReady(BuildTarget buildTarget, string buildPath) { if (buildTarget != BuildTarget.iOS) { return; } var editorSettings = CASEditorSettings.Load(); var needLocalizeUserTracking = IsNeedLocalizeUserTrackingDescription(editorSettings); var needEmbedDynamicLibraries = IsNeedEmbedDynamicLibraries(); if (!needEmbedDynamicLibraries && !needLocalizeUserTracking) { return; } var project = OpenXCode(buildPath); string mainTargetGuid; string frameworkTargetGuid; GetTargetsGUID(project, out mainTargetGuid, out frameworkTargetGuid); if (needLocalizeUserTracking) { LocalizeUserTrackingDescription(buildPath, project, mainTargetGuid, editorSettings); } if (needEmbedDynamicLibraries) { var depManager = DependencyManager.Create(BuildTarget.iOS, Audience.Mixed, true); EmbedDynamicLibrariesIfNeeded(buildPath, project, mainTargetGuid, depManager); } SaveXCode(project, buildPath); }
[PostProcessBuild(47)] //must be between 40 and 50 to ensure that it's not overriden by Podfile generation (40) and that it's added before "pod install" (50) public static void MainPostprocess(BuildTarget target, string buildPath) { if (target != BuildTarget.iOS) { return; } // Init Settings can be null var initSettings = CASEditorUtils.GetSettingsAsset(BuildTarget.iOS, false); var editorSettings = CASEditorSettings.Load(); var depManager = DependencyManager.Create(BuildTarget.iOS, Audience.Mixed, true); string plistPath = Path.Combine(buildPath, "Info.plist"); PlistDocument plist = new PlistDocument(); plist.ReadFromFile(plistPath); UpdateGADDelayMeasurement(plist, editorSettings); UpdateGADAppId(plist, initSettings, depManager); UpdateSKAdNetworksInfo(plist); UpdateLSApplicationQueriesSchames(plist); UpdateAppTransportSecuritySettings(plist); SetAttributionReportEndpoint(plist, editorSettings); SetDefaultUserTrackingDescription(plist, editorSettings); File.WriteAllText(plistPath, plist.WriteToString()); var project = OpenXCode(buildPath); string mainTargetGuid; string frameworkTargetGuid; GetTargetsGUID(project, out mainTargetGuid, out frameworkTargetGuid); EnableSwiftLibraries(buildPath, project, mainTargetGuid, frameworkTargetGuid); CopyRawSettingsFile(buildPath, project, mainTargetGuid, initSettings); SetExecutablePath(buildPath, project, mainTargetGuid, depManager); SaveXCode(project, buildPath); if (editorSettings.generateIOSDeepLinksForPromo) { ApplyCrosspromoDynamicLinks(buildPath, mainTargetGuid, initSettings, depManager); } #if UNITY_2019_3_OR_NEWER UpdatePodfileForUnity2019(buildPath); #endif Debug.Log(CASEditorUtils.logTag + "Postrocess Build done."); }
public static void ConfigureProjectForTargetPlatform() { try { var target = EditorUserBuildSettings.activeBuildTarget; CASPreprocessBuild.ConfigureProject(target, CASEditorSettings.Load()); if (target == BuildTarget.Android) { TryResolveAndroidDependencies(); } EditorUtility.ClearProgressBar(); EditorUtility.DisplayDialog("Configure project", "CAS Plugin has successfully applied all required configurations to your project.", "Ok"); } finally { EditorUtility.ClearProgressBar(); } }
public static string GetNewVersionOrNull(string repo, string currVersion, bool force) { try { string newVerStr = null; if (!force) { var editorSettings = CASEditorSettings.Load(); if (!editorSettings.autoCheckForUpdatesEnabled) { return(null); } if (!HasTimePassed(editorLatestVersionTimestampPrefs + repo, 1, false)) { newVerStr = EditorPrefs.GetString(editorLatestVersionPrefs + repo); } } if (string.IsNullOrEmpty(newVerStr)) { newVerStr = GetLatestVersion(repo, currVersion); } if (newVerStr != null && newVerStr != currVersion && !currVersion.Contains("-RC")) { var currVer = new System.Version(currVersion); var newVer = new System.Version(newVerStr); if (currVer < newVer) { return(newVerStr); } } } catch (Exception e) { Debug.LogException(e); } return(null); }
private void InitEditorSettingsProperties() { editorSettingsObj = new SerializedObject(CASEditorSettings.Load(true)); autoCheckForUpdatesEnabledProp = editorSettingsObj.FindProperty("autoCheckForUpdatesEnabled"); delayAppMeasurementGADInitProp = editorSettingsObj.FindProperty("delayAppMeasurementGADInit"); buildPreprocessEnabledProp = editorSettingsObj.FindProperty("buildPreprocessEnabled"); updateGradlePluginVersionProp = editorSettingsObj.FindProperty("updateGradlePluginVersion"); multiDexEnabledProp = editorSettingsObj.FindProperty("multiDexEnabled"); exoPlayerIncludedProp = editorSettingsObj.FindProperty("exoPlayerIncluded"); permissionAdIdRemovedProp = editorSettingsObj.FindProperty("permissionAdIdRemoved"); mostPopularCountryOfUsersProp = editorSettingsObj.FindProperty("mostPopularCountryOfUsers"); attributionReportEndpointProp = editorSettingsObj.FindProperty("attributionReportEndpoint"); userTrackingUsageDescriptionProp = editorSettingsObj.FindProperty("userTrackingUsageDescription"); userTrackingList = new ReorderableList(editorSettingsObj, userTrackingUsageDescriptionProp, true, true, true, true) { drawHeaderCallback = DrawNSTrackingListHeader, drawElementCallback = DrawNSTrackingListElement, onCanRemoveCallback = DisabledRemoveLastItemFromList, }; }
public void OnPreprocessBuild(BuildTarget target, string path) { #endif if (target != BuildTarget.Android && target != BuildTarget.iOS) { return; } try { var editorSettings = CASEditorSettings.Load(); if (editorSettings.buildPreprocessEnabled) { ConfigureProject(target, editorSettings); EditorUtility.DisplayProgressBar("Hold on", "Prepare components...", 0.95f); } } catch (Exception e) { // If no errors are found then there is no need to clear the progress for the user. EditorUtility.ClearProgressBar(); throw e; } }
public static bool isUseAdvertiserIdLimited() { return(CASEditorSettings.Load().permissionAdIdRemoved); }
internal static string DownloadRemoteSettings(string managerID, BuildTarget platform, CASInitSettings settings, DependencyManager deps) { const string title = "Update CAS remote settings"; var editorSettings = CASEditorSettings.Load(); #region Create request URL #region Hash var managerIdBytes = new UTF8Encoding().GetBytes(managerID); var suffix = new byte[] { 48, 77, 101, 68, 105, 65, 116, 73, 111, 78, 104, 65, 115, 72 }; if (platform == BuildTarget.iOS) { suffix[0] = 49; } var sourceBytes = new byte[managerID.Length + suffix.Length]; Array.Copy(managerIdBytes, 0, sourceBytes, 0, managerIdBytes.Length); Array.Copy(suffix, 0, sourceBytes, managerIdBytes.Length, suffix.Length); var hashBytes = new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(sourceBytes); StringBuilder hashBuilder = new StringBuilder(); for (int i = 0; i < hashBytes.Length; i++) { hashBuilder.Append(Convert.ToString(hashBytes[i], 16).PadLeft(2, '0')); } var hash = hashBuilder.ToString().PadLeft(32, '0'); #endregion var urlBuilder = new StringBuilder("https://psvpromo.psvgamestudio.com/Scr/cas.php?platform=") .Append(platform == BuildTarget.Android ? 0 : 1) .Append("&bundle=").Append(UnityWebRequest.EscapeURL(managerID)) .Append("&hash=").Append(hash) .Append("&lang=").Append(SystemLanguage.English) .Append("&appDev=2") .Append("&appV=").Append(PlayerSettings.bundleVersion) .Append("&coppa=").Append(( int )settings.defaultAudienceTagged) .Append("&adTypes=").Append(( int )settings.allowedAdFlags) .Append("&nets=").Append(DependencyManager.GetActiveMediationPattern(deps)) .Append("&orient=").Append(Utils.GetOrientationId()) .Append("&framework=Unity_").Append(Application.unityVersion); if (deps != null) { var buildCode = deps.GetInstalledBuildCode(); if (buildCode > 0) { urlBuilder.Append("&sdk=").Append(buildCode); } } if (string.IsNullOrEmpty(editorSettings.mostPopularCountryOfUsers)) { urlBuilder.Append("&country=").Append("US"); } else { urlBuilder.Append("&country=").Append(editorSettings.mostPopularCountryOfUsers); } if (platform == BuildTarget.Android) { urlBuilder.Append("&appVC=").Append(PlayerSettings.Android.bundleVersionCode); } #endregion using (var loader = UnityWebRequest.Get(urlBuilder.ToString())) { try { loader.SendWebRequest(); while (!loader.isDone) { if (EditorUtility.DisplayCancelableProgressBar(title, managerID, Mathf.Repeat(( float )EditorApplication.timeSinceStartup * 0.2f, 1.0f))) { loader.Dispose(); throw new Exception("Update CAS Settings canceled"); } } if (string.IsNullOrEmpty(loader.error)) { var content = loader.downloadHandler.text.Trim(); if (string.IsNullOrEmpty(content)) { throw new Exception("ManagerID [" + managerID + "] is not registered in CAS."); } EditorUtility.DisplayProgressBar(title, "Write CAS settings", 0.7f); var data = JsonUtility.FromJson <AdmobAppIdData>(content); Utils.WriteToFile(content, Utils.GetNativeSettingsPath(platform, managerID)); return(data.admob_app_id); } throw new Exception("Server response " + loader.responseCode + ": " + loader.error); } finally { EditorUtility.ClearProgressBar(); } } }