示例#1
0
        private void Apply()
        {
            using (var stringWriter = new StringWriter()) {
                using (XmlWriter xmlWriter = XmlWriter.Create(
                           stringWriter, new XmlWriterSettings()
                {
                    Indent = true
                })) {
                    analyticsSerialiser.Serialize(xmlWriter, analytics);
                    File.WriteAllText(CONFIG, stringWriter.ToString());
                }
            }

            if (iOS.Dirty)
            {
                iOS.Save();
            }
            if (AreAndroidNotificationsInProject())
            {
                notifications.Apply();
            }
            if (AreSmartAdsInProject())
            {
                ads.Apply();
            }

            Debug.Log("[DeltaDNA] Changes have been applied to XML configuration files, please commit the updates to version control");
        }
示例#2
0
        void OnGUI()
        {
            // workaround for OnEnable weirdness when initialising values
            if (logo == null)
            {
                logo = AssetDatabase.LoadAssetAtPath <Texture>(WindowHelper.FindFile("Editor/Resources/Logo.png"));
            }
            if (styleFoldout == null)
            {
                styleFoldout = new GUIStyle(EditorStyles.foldout)
                {
                    fontStyle = FontStyle.Bold,
                    fontSize  = 12
                }
            }
            ;

            SerializedObject cfg = GetSerializedConfig();

            GUILayout.Label(logo, GUILayout.ExpandWidth(false));

            GUILayout.Space(WindowHelper.HEIGHT_SEPARATOR);
            scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);

            foldoutAnalytics = CreateFoldout(
                foldoutAnalytics,
                "Analytics",
                true,
                styleFoldout);
            if (foldoutAnalytics)
            {
                GUILayout.Label("Required", EditorStyles.boldLabel);

                EditorGUILayout.PropertyField(
                    cfg.FindProperty("environmentKeyDev"),
                    new GUIContent(
                        "Environment key (dev)",
                        "Enter your game's development environment key"));

                EditorGUILayout.PropertyField(
                    cfg.FindProperty("environmentKeyLive"),
                    new GUIContent(
                        "Environment key (live)",
                        "Enter your game's live environment key"));

                SerializedProperty env_key = cfg.FindProperty("environmentKey");

                env_key.intValue = EditorGUILayout.Popup(

                    new GUIContent(
                        "Selected key",
                        "Select which environment key to use for the build"),
                    env_key.intValue,
                    new GUIContent[] {
                    new GUIContent("Development"),
                    new GUIContent("Live")
                });

                EditorGUILayout.PropertyField(
                    cfg.FindProperty("collectUrl"),
                    new GUIContent(
                        "Collect URL",
                        "Enter your game's collect URL"));

                EditorGUILayout.PropertyField(
                    cfg.FindProperty("engageUrl"),
                    new GUIContent(
                        "Engage URL",
                        "Enter your game's engage URL"));



                GUILayout.Label("Optional", EditorStyles.boldLabel);

                EditorGUILayout.PropertyField(
                    cfg.FindProperty("hashSecret"),
                    new GUIContent(
                        "Hash secret",
                        "Enter your game's hash secret if hashing is enabled"));

                EditorGUI.BeginDisabledGroup(cfg.FindProperty("useApplicationVersion").boolValue);

                EditorGUILayout.PropertyField(
                    cfg.FindProperty("clientVersion"),
                    new GUIContent(
                        "Client version",
                        "Enter your game's version or use the Editor value by enabling the checkbox below"));

                EditorGUI.EndDisabledGroup();

                EditorGUILayout.PropertyField(
                    cfg.FindProperty("useApplicationVersion"),
                    new GUIContent(
                        "Use application version",
                        "Check to use the application/bundle version as set in the Editor"));

                if (cfg.hasModifiedProperties)
                {
                    cfg.ApplyModifiedProperties();
                    AssetDatabase.SaveAssets();
                }
            }

            GUILayout.Space(WindowHelper.HEIGHT_SEPARATOR);

            EditorGUI.BeginChangeCheck();

            foldoutAndroidNotifications = CreateFoldout(
                foldoutAndroidNotifications,
                "Android Notifications",
                true,
                styleFoldout);
            if (foldoutAndroidNotifications)
            {
                if (!AreAndroidNotificationsInProject())
                {
                    GUILayout.Label("Configuration not available due to notification dependencies not present in project.");
                }
                else
                {
                    notifications.appId = EditorGUILayout.TextField(
                        new GUIContent(
                            "Application ID",
                            "Enter the Application ID for your application in the Firebase Console"),
                        notifications.appId);
                    notifications.senderId = EditorGUILayout.TextField(
                        new GUIContent(
                            "Sender ID",
                            "Enter the Sender ID for your application in the Firebase Console"),
                        notifications.senderId);
                    notifications.projectId = EditorGUILayout.TextField(
                        new GUIContent(
                            "Project ID",
                            "Enter the Project ID for your application in the Firebase Console"),
                        notifications.projectId);
                    notifications.apiKey = EditorGUILayout.TextField(
                        new GUIContent(
                            "Firebase API Key",
                            "Enter the API Key for your application in the Firebase Console"),
                        notifications.apiKey);
                    notifications.listenerService = EditorGUILayout.TextField(
                        new GUIContent(
                            "Listener Service",
                            "If you have your own implementation of the NotificationListenerService you should set the field to use your own class"),
                        notifications.listenerService);

                    notifications.notificationIcon = EditorGUILayout.TextField(
                        new GUIContent(
                            "Notification Icon",
                            "The icon for the notification should be the name of the drawable resource, for example 'icon_notification' if you have 'icon_notification.png' in the 'res/drawable' folder"),
                        notifications.notificationIcon);
                    notifications.notificationTitle = EditorGUILayout.TextField(
                        new GUIContent(
                            "Notification Title",
                            "The title should be the string literal that you would like to appear in the notification, or a localisable string resource from the 'res/values' folder such as '@string/resource_name'"),
                        notifications.notificationTitle);

                    if (GUILayout.Button("Apply Android Notification Settings"))
                    {
                        ApplyAndroidNotificationSettings();
                    }
                }
            }

            if (EditorGUI.EndChangeCheck())
            {
                if (AreAndroidNotificationsInProject())
                {
                    notifications.Apply();
                    Debug.Log("[DeltaDNA] Changes have been applied to XML configuration files, please commit the updates to version control");
                }
            }

            GUILayout.Space(WindowHelper.HEIGHT_SEPARATOR);


            foldoutiOSNotifications = CreateFoldout(
                foldoutiOSNotifications,
                "iOS Rich Push Notifications",
                true,
                styleFoldout);
            if (foldoutiOSNotifications)
            {
#if UNITY_2019_3_OR_NEWER
                DrawIOSRichPushNotificationSettings();
#elif UNITY_2018_4_OR_NEWER || UNITY_2019_1 || UNITY_2019_2
                EditorGUILayout.HelpBox("In order to support iOS Rich Push Notifications in this version of Unity, you must change the build system in the built XCode project to 'legacy' (File -> Project Settings -> Build System). This is done automatically in 2019.3 or newer.", MessageType.Warning);
                DrawIOSRichPushNotificationSettings();
#else
                EditorGUILayout.HelpBox("iOS rich push notifications can only be used in Unity 2018.4 or newer; 2019.3 or newer is recommended.", MessageType.Warning);
#endif
            }

            EditorGUILayout.EndScrollView();
        }
示例#3
0
        void OnGUI()
        {
            var style = new GUIStyle();

            style.wordWrap = true;
            style.margin   = new RectOffset(5, 5, 5, 5);

            if (!MenuItems.AreAndroidNotificationsInProject())
            {
                GUILayout.Label(
                    "Configuration not available due to notification dependencies not present " +
                    "in project.",
                    style);
                return;
            }

            GUILayout.BeginVertical();

            GUILayout.Label(
                "Configure notifications for Android here, filling in the Application " +
                "and Sender ID from the Google or Firebase Console for your application.\n" +
                "\n" +
                "If you have your own implementation of the NotificationListenerService you " +
                "should set the field to use your own class.\n" +
                "\n" +
                "The icon for the notification should be the name of the drawable resource, " +
                "for example 'icon_notification' if you have 'icon_notification.png' in the " +
                "'res/drawable' folders.\n" +
                "The title should be the string literal that you would like to appear in the " +
                "notification, or a localisable string resource from the 'res/values' folder " +
                "such as '@string/resource_name'.\n" +
                "\n" +
                "Hitting 'Apply' will persist the changes to the resource and manifest files. " +
                "You may leave the fields empty if you do not wish to use notifications.",
                style);

            GUILayout.Space(HEIGHT_SEPARATOR);

            GUILayout.BeginHorizontal();
            GUILayout.Label(
                "Application ID",
                GUILayout.Width(WIDTH_LABEL));
            configurator.appId = EditorGUILayout.TextField(configurator.appId);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label(
                "Sender ID",
                GUILayout.Width(WIDTH_LABEL));
            configurator.senderId = EditorGUILayout.TextField(configurator.senderId);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label(
                "Listener Service",
                GUILayout.Width(WIDTH_LABEL));
            configurator.listenerService = EditorGUILayout.TextField(configurator.listenerService);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label(
                "Notification Icon",
                GUILayout.Width(WIDTH_LABEL));
            configurator.notificationIcon = EditorGUILayout.TextField(configurator.notificationIcon);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label(
                "Notification Title",
                GUILayout.Width(WIDTH_LABEL));
            configurator.notificationTitle = EditorGUILayout.TextField(configurator.notificationTitle);
            GUILayout.EndHorizontal();

            GUILayout.Space(HEIGHT_SEPARATOR);

            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Apply", GUILayout.Width(WIDTH_BUTTON)))
            {
                configurator.Apply();
            }
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();
        }