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);
}
}
}