using UnityEngine; using UnityEditor; using System.IO; using System.Xml; using Amanotes.TripleSDK.Core; namespace Amanotes.TripleSDK.Appsflyer { [InitializeOnLoad] [System.Diagnostics.MonitoringDescription("com.amanotes.sdk.appsflyer")] public class AppsflyerIntegration : EditorWindow { const string currentVersion = "v6.1.0"; private static AppsflyerConfiguration configuration; public static void Initialize() { CreateDefaultAppsflyerConfig(); } public static void CustomRender() { GUIHelper.DrawTitle("Appsflyer Settings"); var devKey = GUIHelper.DrawTextField("Dev Key:", configuration.devKey); var appId = GUIHelper.DrawTextField("App ID (iOS):", configuration.appId); if (configuration.appId == null || configuration.appId.Contains("Replace")) { GUILayout.Space(5); GUIHelper.DrawErrorText("* Warning: Invalid iOS App ID"); } if (devKey != configuration.devKey || appId != configuration.appId) { configuration.appId = appId; configuration.devKey = devKey; var file = Path.Combine(Application.dataPath, "appsflyer.json"); var text = JsonUtility.ToJson(configuration); File.WriteAllText(file, text); } } static AppsflyerIntegration() { //AndroidConfig_V4_20_3(); //AndroidConfig_V4_21_0(); iOSConfig_V4_20_3(); CreateDefaultAppsflyerConfig(); } private static void iOSConfig_V4_20_3() { } private static void AndroidConfig_V4_20_3() { var pluginDir = Path.Combine(Application.dataPath, "Plugins/Android/Appsflyer"); if(!Directory.Exists(pluginDir)) { Directory.CreateDirectory(pluginDir); } var receiverSnipet = @" "; var permissionsSnipet = @" "; var androidManifestFile = Path.Combine(pluginDir, "AndroidManifest.xml"); if(!File.Exists(androidManifestFile)) { var manifest = $@" {permissionsSnipet} {receiverSnipet} "; File.WriteAllText(androidManifestFile, manifest); } // AssetDatabase.Refresh(); } private static void AndroidConfig_V4_21_0() { var androidManifestFile = Path.Combine(Application.dataPath, "Plugins/Android/AndroidManifest.xml"); if (File.Exists(androidManifestFile)) { XmlDocument root = AndroidManifestHelper.LoadXmlDocument(androidManifestFile); if (root != null) { AndroidManifestHelper.AddApplicationAttribute(root, "replace", "android:fullBackupContent", "tools"); AndroidManifestHelper.AddApplicationAttribute(root, "allowBackup", "false"); AndroidManifestHelper.AddApplicationAttribute(root, "fullBackupContent", "false"); AndroidManifestHelper.AddPermission(root, "android.permission.INTERNET"); AndroidManifestHelper.AddPermission(root, "android.permission.ACCESS_NETWORK_STATE"); AndroidManifestHelper.AddPermission(root, "android.permission.ACCESS_WIFI_STATE"); AndroidManifestHelper.AddPermission(root, "android.permission.READ_PHONE_STATE"); string xml = root.InnerXml; root.InnerXml = xml.Replace("xmlns:tools=\"http://schemas.android.com/apk/res/android\"", ""); AndroidManifestHelper.SaveXml(root, androidManifestFile); } } else { Debug.LogWarning("AmaApsflyer: Plugins/Android/AndroidManifest.xml not found."); } } private static void CreateDefaultAppsflyerConfig() { var file = Path.Combine(Application.dataPath, "appsflyer.json"); if (!File.Exists(file)) { var content = @" { ""devKey"": ""nooRvfQi6Eqc5pzScifXxV"", ""appId"": ""1446874445"" } "; File.WriteAllText(file, content); } var text = File.ReadAllText(file); configuration = AppsflyerConfiguration.CreateInstance(); JsonUtility.FromJsonOverwrite(text, configuration); } } }