private void OnEnable()
        {
            var props = serializedObject;

            showInEditorProp                    = props.FindProperty("showInEditor");
            withAudienceDefinitionProp          = props.FindProperty("withAudienceDefinition");
            withDeclineOptionProp               = props.FindProperty("withDeclineOption");
            withMediationSettingsProp           = props.FindProperty("withMediationSettings");
            withRequestTrackingTransparencyProp = props.FindProperty("withRequestTrackingTransparency");
            uiPrefabProp                 = props.FindProperty("uiPrefab");
            settingsTogglePrefabProp     = props.FindProperty("settingsTogglePrefab");
            privacyPolicyUrlProp         = props.FindProperty("privacyPolicyUrl");
            termsOfUseUrlProp            = props.FindProperty("termsOfUseUrl");
            trackingUsageDescriptionProp = props.FindProperty("trackingUsageDescription");

            privacyPolicyList = new ReorderableList(props, privacyPolicyUrlProp, true, true, true, true)
            {
                drawHeaderCallback  = DrawPrivacyPolicyHeader,
                drawElementCallback = DrawURLElement,
                elementHeight       = EditorGUIUtility.singleLineHeight * 2.0f + 8.0f
            };

            termsOfUseList = new ReorderableList(props, termsOfUseUrlProp, true, true, true, true)
            {
                drawHeaderCallback  = DrawTermsOfUseHeader,
                drawElementCallback = DrawURLElement,
                elementHeight       = privacyPolicyList.elementHeight
            };

            allowedPackageUpdate = Utils.IsPackageExist(packageName);

            EditorApplication.delayCall +=
                () => newCASVersion      = Utils.GetNewVersionOrNull(gitRepoName, UserConsent.version, false);
        }
示例#2
0
        private static void CopyRawSettingsFile(string rootPath, PBXProject project, string target, CASInitSettings casSettings)
        {
            if (!casSettings)
            {
                return;
            }

            var resourcesBuildPhase = project.GetResourcesBuildPhaseByTarget(target);

            for (int i = 0; i < casSettings.managersCount; i++)
            {
                string managerId       = casSettings.GetManagerId(i);
                int    managerIdLength = managerId.Length;
                string suffixChar      = char.ToLower(managerId[managerIdLength - 1]).ToString();
                string fileName        = "cas_settings" + managerIdLength.ToString() + suffixChar + ".json";
                string pathInAssets    = CASEditorUtils.GetNativeSettingsPath(BuildTarget.iOS, managerId);
                if (File.Exists(pathInAssets))
                {
                    try
                    {
                        File.Copy(pathInAssets, Path.Combine(rootPath, fileName), true);
                        var fileGuid = project.AddFile(fileName, fileName, PBXSourceTree.Source);
                        project.AddFileToBuildSection(target, resourcesBuildPhase, fileGuid);
                    }
                    catch (Exception e)
                    {
                        Debug.LogWarning(CASEditorUtils.logTag + "Copy Raw File To XCode Project failed: " + e.ToString());
                    }
                }
                else
                {
                    Debug.Log(CASEditorUtils.logTag + "Not found Raw file: " + pathInAssets);
                }
            }
        }
示例#3
0
        private static void UpdateSKAdNetworksInfo(PlistDocument plist)
        {
            var templateFile = CASEditorUtils.GetTemplatePath(CASEditorUtils.iosSKAdNetworksTemplateFile);

            if (string.IsNullOrEmpty(templateFile))
            {
                Debug.LogError(CASEditorUtils.logTag + "Not found SKAdNetworkItems. Try reimport CAS package.");
                return;
            }
            var networksLines = File.ReadAllLines(templateFile);

            PlistElementArray adNetworkItems;
            var adNetworkItemsField = plist.root["SKAdNetworkItems"];

            if (adNetworkItemsField == null)
            {
                adNetworkItems = plist.root.CreateArray("SKAdNetworkItems");
            }
            else
            {
                adNetworkItems = adNetworkItemsField.AsArray();
            }

            for (int i = 0; i < networksLines.Length; i++)
            {
                if (!string.IsNullOrEmpty(networksLines[i]))
                {
                    var dict = adNetworkItems.AddDict();
                    dict.SetString("SKAdNetworkIdentifier", networksLines[i]);
                }
            }
        }
 protected override void OnHeaderGUI()
 {
     EditorGUILayout.Space();
     EditorGUILayout.BeginHorizontal();
     GUILayout.Label("CleverAdsSolutions", HelpStyles.largeTitleStyle);
     GUILayout.Label("Consent", HelpStyles.largeTitleStyle, GUILayout.ExpandWidth(false));
     EditorGUILayout.EndHorizontal();
     EditorGUILayout.Space();
     Utils.OnHeaderGUI(gitRepoName, allowedPackageUpdate, UserConsent.version, ref newCASVersion);
 }
        public static CASEditorSettings Load(bool createAsset = false)
        {
            var asset = CASEditorUtils.GetSettingsAsset("CASEditorSettings",
                                                        CASEditorUtils.editorFolderPath, typeof(CASEditorSettings), createAsset, null);

            if (asset)
            {
                return(( CASEditorSettings )asset);
            }
            return(CreateInstance <CASEditorSettings>());
        }
示例#6
0
        [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.");
        }
示例#7
0
        private static void UpdateGADAppId(PlistDocument plist, CASInitSettings initSettings, DependencyManager deps)
        {
            if (!initSettings)
            {
                return;
            }
            #region Read Admob App ID from CAS Settings
            bool admobAppIdRequired = deps == null;
            if (deps != null)
            {
                var admobDep = deps.Find(AdNetwork.GoogleAds);
                if (admobDep != null)
                {
                    admobAppIdRequired = admobDep.IsInstalled();
                }
            }

            string admobAppId = null;
            if (initSettings.managersCount > 0)
            {
                string settingsPath = CASEditorUtils.GetNativeSettingsPath(BuildTarget.iOS, initSettings.GetManagerId(0));
                if (File.Exists(settingsPath))
                {
                    try
                    {
                        admobAppId = CASEditorUtils.GetAdmobAppIdFromJson(File.ReadAllText(settingsPath));
                    }
                    catch (Exception e)
                    {
                        if (!initSettings.IsTestAdMode() && admobAppIdRequired)
                        {
                            CASEditorUtils.StopBuildWithMessage(e.ToString(), BuildTarget.iOS);
                        }
                    }
                }
            }
            if (string.IsNullOrEmpty(admobAppId) && initSettings.IsTestAdMode())
            {
                admobAppId = CASEditorUtils.iosAdmobSampleAppID;
            }

            #endregion

            if (!string.IsNullOrEmpty(admobAppId))
            {
                plist.root.SetString("GADApplicationIdentifier", admobAppId);
            }
        }