From f0246db5dc85fd8bd389eb754f30fc2293e5e23a Mon Sep 17 00:00:00 2001
From: lwb <q3213421wrwqr>
Date: 星期二, 29 十二月 2020 16:56:13 +0800
Subject: [PATCH] 接入appsflyer
---
Channel/Android/gtgame/release/libs/library-release-gtgame.aar | 0
SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java | 2
SdkProject/plugins/appsflyer/deps.gradle | 4 +
SdkProject/channel/GTGame/java/com/secondworld/sdk/command/CmdPayFinished.java | 1
SdkProject/plugins/appsflyer/java/com/secondworld/sdk/AppsFlyerUtil.java | 55 +++++++++++++
SdkProject/library/build.gradle | 56 ++++++++++----
SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java | 1
SdkProject/plugins/appsflyer/java/com/secondworld/sdk/command/CmdAFTrackEvent.java | 33 ++++++++
Channel/Android/gtgame/deps.gradle | 4 +
Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar | 0
SdkProject/channel/gtgame/config.properties | 2
SdkProject/build.gradle | 2
SdkProject/library/src/main/java/com/secondworld/sdk/utils/Util.java | 7 +
SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java | 6 +
SdkProject/plugins/appsflyer/AndroidManifest.xml | 12 +++
15 files changed, 166 insertions(+), 19 deletions(-)
diff --git a/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar b/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
index 1b9f1ac..43fb549 100644
--- a/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
+++ b/Channel/Android/gtgame/debug/libs/library-debug-gtgame.aar
Binary files differ
diff --git a/Channel/Android/gtgame/deps.gradle b/Channel/Android/gtgame/deps.gradle
index 6391af4..0541a81 100644
--- a/Channel/Android/gtgame/deps.gradle
+++ b/Channel/Android/gtgame/deps.gradle
@@ -3,3 +3,7 @@
implementation "com.android.billingclient:billing:2.0.3"
implementation 'com.facebook.android:facebook-login:[5,6)'
}
+dependencies {
+ implementation 'com.appsflyer:af-android-sdk:5.0.0'
+ implementation 'com.android.installreferrer:installreferrer:2.1'
+}
diff --git a/Channel/Android/gtgame/release/libs/library-release-gtgame.aar b/Channel/Android/gtgame/release/libs/library-release-gtgame.aar
index 66a0449..d3a9c5a 100644
--- a/Channel/Android/gtgame/release/libs/library-release-gtgame.aar
+++ b/Channel/Android/gtgame/release/libs/library-release-gtgame.aar
Binary files differ
diff --git a/SdkProject/build.gradle b/SdkProject/build.gradle
index 338aa7e..9a6f965 100644
--- a/SdkProject/build.gradle
+++ b/SdkProject/build.gradle
@@ -8,7 +8,7 @@
dependencies {
classpath "com.android.tools.build:gradle:4.1.1"
// NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
+ // in the individual module deps.gradle files
}
}
diff --git a/SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java b/SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java
index 5190397..8ee623a 100644
--- a/SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java
+++ b/SdkProject/channel/GTGame/java/com/secondworld/sdk/MySdkMgr.java
@@ -3,6 +3,7 @@
import android.app.Activity;
import android.widget.Toast;
+import com.appsflyer.AFInAppEventType;
import com.cy.yyjia.sdk.center.SdkManager;
import com.cy.yyjia.sdk.listener.ChangePasswordListener;
import com.cy.yyjia.sdk.listener.ExitGameListener;
diff --git a/SdkProject/channel/GTGame/java/com/secondworld/sdk/command/CmdPayFinished.java b/SdkProject/channel/GTGame/java/com/secondworld/sdk/command/CmdPayFinished.java
index cfda334..5938411 100644
--- a/SdkProject/channel/GTGame/java/com/secondworld/sdk/command/CmdPayFinished.java
+++ b/SdkProject/channel/GTGame/java/com/secondworld/sdk/command/CmdPayFinished.java
@@ -12,6 +12,5 @@
@Override
public void process(JSONObject json) throws Exception {
-
}
}
diff --git a/SdkProject/channel/gtgame/config.properties b/SdkProject/channel/gtgame/config.properties
index 22ff451..6189f47 100644
--- a/SdkProject/channel/gtgame/config.properties
+++ b/SdkProject/channel/gtgame/config.properties
@@ -1 +1 @@
-PLUGINS=
\ No newline at end of file
+PLUGINS=appsflyer
\ No newline at end of file
diff --git a/SdkProject/library/build.gradle b/SdkProject/library/build.gradle
index 49ec44b..09ab1a6 100644
--- a/SdkProject/library/build.gradle
+++ b/SdkProject/library/build.gradle
@@ -25,6 +25,7 @@
//鎻掍欢鑴氭湰
plugins.each {
applyGradle("${rootPath}/plugins/${it}/build")
+ applyGradle("${rootPath}/plugins/${it}/deps")
}
//娓犻亾闇�瑕佽鐩栦富鐩綍鐨刯ava鏂囦欢
@@ -112,12 +113,6 @@
outputFileName = "library-${buildType.name}-${CHANNEL_NAME}.aar"
}
}
-//鎷疯礉娓犻亾鐨勭涓夋柟渚濊禆搴撹剼鏈�
-task copyDepsGradle(type: Copy) {
- from "${channelPath}/"
- include "deps.gradle"
- into "${outPutPath}\\${CHANNEL_NAME}\\"
-}
//鎷疯礉娓呭崟鏂囦欢
task copyDebugManifest(type: Copy) {
@@ -140,18 +135,47 @@
into "${outPutPath}\\${CHANNEL_NAME}\\debug\\libs\\"
}
-//鎵ц鎵撳寘浠诲姟浠ュ強鎷疯礉鍒板閮�
-task assembleAndCopySdk(type: Copy) {
- delete "${outPutPath}\\${CHANNEL_NAME}"
-
- dependsOn 'assembleMerger'
-// dependsOn copyManifest
- dependsOn copyDebugSdk
- dependsOn copyDepsGradle
-
+task copyReleaseSdk(type: Copy) {
from "build/outputs/aar/"
include "library-release-${CHANNEL_NAME}.aar"
into "${outPutPath}\\${CHANNEL_NAME}\\release\\libs\\"
+}
+
+task deleteSdk() {
+ delete "${outPutPath}\\${CHANNEL_NAME}"
+}
+
+//鎵ц鎵撳寘浠诲姟浠ュ強鎷疯礉鍒板閮�
+task assembleAndCopySdk() {
+ dependsOn 'assembleMerger'
+ dependsOn deleteSdk
+ dependsOn copyDebugSdk
+ dependsOn copyReleaseSdk
+
+ tasks.findByName('deleteSdk').mustRunAfter 'assembleMerger'
+ tasks.findByName('copyDebugSdk').mustRunAfter 'deleteSdk'
+ tasks.findByName('copyReleaseSdk').mustRunAfter 'deleteSdk'
+
+ //瀵煎嚭鎵�鏈夊閮ㄥ紩鐢�
+ String content = ""
+ def deps = file("${channelPath}\\deps.gradle")
+ deps.eachLine { line ->
+ if (line != null)
+ content += line + "\n"
+ }
+ plugins.each {
+ deps = file("${rootPath}/plugins/${it}/deps.gradle")
+ deps.eachLine { line ->
+ if (line != null)
+ content += line + "\n"
+ }
+ }
+ def dir = new File("${outPutPath}\\${CHANNEL_NAME}")
+ def libraries = new File("${outPutPath}\\${CHANNEL_NAME}\\deps.gradle")
+ dir.mkdir()
+ if (!libraries.exists())
+ libraries.createNewFile()
+ libraries.text = content
}
dependencies {
@@ -163,7 +187,7 @@
// implementation 'com.github.pqpo:Log4a:1.4.2@aar'
- implementation fileTree(dir:"../channel/${CHANNEL_NAME}/libs/", include: ['*.jar'])
+ implementation fileTree(dir: "../channel/${CHANNEL_NAME}/libs/", include: ['*.jar'])
implementation fileTree(dir: 'libs', include: ['*.jar'], exclude: ['unity-classes.jar'])
compileOnly files('libs/unity-classes.jar')
}
\ No newline at end of file
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java
index 6720b71..1ff049c 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeA2U.java
@@ -53,4 +53,6 @@
public static final int PlatformPayFail = 19;
public static final int PlatformPayCancel = 20;
public static final int PlatformRegisterOk = 21;
+
+
}
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java
index 67b76f4..f0edbd8 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/CodeU2A.java
@@ -73,4 +73,10 @@
int RoleLevelUp = 108;
int TencentLogin = 109;
+
+ /**
+ * 鎻掍欢
+ */
+ public static final int AFTrackEvent=1000; //appsflyer缁熻娓告垙浜嬩欢
+
}
diff --git a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/Util.java b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/Util.java
index 55f2a07..d5aeaf8 100644
--- a/SdkProject/library/src/main/java/com/secondworld/sdk/utils/Util.java
+++ b/SdkProject/library/src/main/java/com/secondworld/sdk/utils/Util.java
@@ -2,8 +2,15 @@
import android.text.TextUtils;
+import org.json.JSONObject;
+
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
public class Util {
diff --git a/SdkProject/plugins/appsflyer/AndroidManifest.xml b/SdkProject/plugins/appsflyer/AndroidManifest.xml
new file mode 100644
index 0000000..f0735e8
--- /dev/null
+++ b/SdkProject/plugins/appsflyer/AndroidManifest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="com.secondworld.sdk">
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+ <!-- Optional : -->
+ <!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
+
+</manifest>
\ No newline at end of file
diff --git a/SdkProject/plugins/appsflyer/deps.gradle b/SdkProject/plugins/appsflyer/deps.gradle
new file mode 100644
index 0000000..b1169f7
--- /dev/null
+++ b/SdkProject/plugins/appsflyer/deps.gradle
@@ -0,0 +1,4 @@
+dependencies {
+ implementation 'com.appsflyer:af-android-sdk:5.0.0'
+ implementation 'com.android.installreferrer:installreferrer:2.1'
+}
\ No newline at end of file
diff --git a/SdkProject/plugins/appsflyer/java/com/secondworld/sdk/AppsFlyerUtil.java b/SdkProject/plugins/appsflyer/java/com/secondworld/sdk/AppsFlyerUtil.java
new file mode 100644
index 0000000..c469175
--- /dev/null
+++ b/SdkProject/plugins/appsflyer/java/com/secondworld/sdk/AppsFlyerUtil.java
@@ -0,0 +1,55 @@
+package com.secondworld.sdk;
+
+import com.appsflyer.AppsFlyerConversionListener;
+import com.appsflyer.AppsFlyerLib;
+import com.secondworld.sdk.utils.LogUtil;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class AppsFlyerUtil {
+
+ private static final String AF_DEV_KEY = "qrdZGj123456789";
+
+ public static void init() {
+ AppsFlyerConversionListener conversionListener = new AppsFlyerConversionListener() {
+ @Override
+ public void onConversionDataSuccess(Map<String, Object> conversionData) {
+
+ for (String attrName : conversionData.keySet()) {
+ LogUtil.debug("AppsFlyerMgr", "attribute: " + attrName + " = " + conversionData.get(attrName));
+ }
+ }
+
+ @Override
+ public void onConversionDataFail(String errorMessage) {
+ LogUtil.debug("AppsFlyerMgr", "error getting conversion data: " + errorMessage);
+ }
+
+ @Override
+ public void onAppOpenAttribution(Map<String, String> conversionData) {
+
+ for (String attrName : conversionData.keySet()) {
+ LogUtil.debug("AppsFlyerMgr", "attribute: " + attrName + " = " + conversionData.get(attrName));
+ }
+
+ }
+
+ @Override
+ public void onAttributionFailure(String errorMessage) {
+ LogUtil.debug("AppsFlyerMgr", "error onAttributionFailure : " + errorMessage);
+ }
+ };
+
+ AppsFlyerLib.getInstance().init(AF_DEV_KEY, conversionListener, GameApp.I);
+ AppsFlyerLib.getInstance().startTracking(GameApp.I);
+ }
+
+ //缁熻浜嬩欢
+ public static void trackEvent(String eventName, Map<String, Object> eventValues) {
+ if (eventValues == null)
+ eventValues = new HashMap<>();
+ AppsFlyerLib.getInstance().trackEvent(GameApp.I, eventName, eventValues);
+ }
+
+}
diff --git a/SdkProject/plugins/appsflyer/java/com/secondworld/sdk/command/CmdAFTrackEvent.java b/SdkProject/plugins/appsflyer/java/com/secondworld/sdk/command/CmdAFTrackEvent.java
new file mode 100644
index 0000000..545187d
--- /dev/null
+++ b/SdkProject/plugins/appsflyer/java/com/secondworld/sdk/command/CmdAFTrackEvent.java
@@ -0,0 +1,33 @@
+package com.secondworld.sdk.command;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.reflect.TypeToken;
+import com.secondworld.sdk.AppsFlyerUtil;
+import com.secondworld.sdk.utils.CodeU2A;
+
+import org.json.JSONObject;
+
+import java.util.Map;
+
+public class CmdAFTrackEvent implements ICommand {
+ @Override
+ public int getCode() {
+ return CodeU2A.AFTrackEvent;
+ }
+
+ @Override
+ public void process(JSONObject json) throws Exception {
+ String eventName = json.getString("eventName");
+ if(json.has("eventValues")){
+ JSONObject values = json.getJSONObject("eventValues");
+ GsonBuilder gb = new GsonBuilder();
+ Gson g = gb.create();
+ Map<String, Object> map = g.fromJson(values.toString(), new TypeToken<Map<String, Object>>() {}.getType());
+ AppsFlyerUtil.trackEvent(eventName, map);
+ }else
+ {
+ AppsFlyerUtil.trackEvent(eventName, null);
+ }
+ }
+}
--
Gitblit v1.8.0