SDK_UnityMoney/Assets/Plugins/Android/ThinkingAnalyticsProxy.java

412 lines
14 KiB
Java

/*
* Copyright (C) 2024 ThinkingData
*/
package cn.thinkingdata.analytics;
import android.content.Context;
import android.text.TextUtils;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import cn.thinkingdata.analytics.TDAnalytics;
import cn.thinkingdata.analytics.TDAnalyticsAPI;
import cn.thinkingdata.analytics.TDConfig;
import cn.thinkingdata.analytics.TDFirstEvent;
import cn.thinkingdata.analytics.TDOverWritableEvent;
import cn.thinkingdata.analytics.TDUpdatableEvent;
import cn.thinkingdata.analytics.ThinkingAnalyticsSDK;
public class ThinkingAnalyticsProxy {
public static void setCustomerLibInfo(String libName, String libVersion) {
TDAnalytics.setCustomerLibInfo(libName, libVersion);
}
public static void enableTrackLog(boolean enableLog) {
TDAnalytics.enableLog(enableLog);
}
public static void calibrateTime(long timeStampMillis) {
TDAnalytics.calibrateTime(timeStampMillis);
}
public static void calibrateTimeWithNtp(String ntpServer) {
TDAnalytics.calibrateTimeWithNtp(ntpServer);
}
public static void init(Context context, String appId, String serverUrl, int mode, String name, String timeZone, int version, String publicKey) {
try {
if (context == null || TextUtils.isEmpty(appId) || TextUtils.isEmpty(serverUrl)) {
return;
}
String instanceName = "";
if (TextUtils.isEmpty(name)) {
instanceName = appId;
} else {
instanceName = name;
}
TDConfig tdConfig = TDConfig.getInstance(context, appId, serverUrl, instanceName);
if (!TextUtils.isEmpty(timeZone)) {
tdConfig.setDefaultTimeZone(TimeZone.getTimeZone(timeZone));
}
if (mode == 1 || mode == 2) {
tdConfig.setMode(TDConfig.TDMode.values()[mode]);
}
if (version > 0 && !TextUtils.isEmpty(publicKey)) {
tdConfig.enableEncrypt(version, publicKey);
}
TDAnalytics.init(tdConfig);
} catch (Exception ignore) {
}
}
public static void track(String eventName, String properties, long time, String timeZoneId, String appId) {
try {
ThinkingAnalyticsSDK instance = TDAnalyticsAPI.getInstance(appId);
if (null != instance) {
JSONObject pJson = null;
try {
pJson = new JSONObject(properties);
} catch (JSONException ignore) {
}
if (time < 0 || TextUtils.isEmpty(timeZoneId)) {
instance.track(eventName, pJson);
} else {
TimeZone timeZone = null;
if (TextUtils.equals(timeZoneId, "Local")) {
timeZone = TimeZone.getDefault();
} else {
timeZone = TimeZone.getTimeZone(timeZoneId);
}
instance.track(eventName, pJson, new Date(time), timeZone);
}
}
} catch (Exception ignore) {
}
}
public static void trackEvent(int type, String eventName, String properties, String eventId, long time, String timeZoneId, String appId) {
try {
Date date = null;
if (time > 0) {
date = new Date(time);
}
TimeZone timeZone = null;
if (TextUtils.equals(timeZoneId, "Local")) {
timeZone = TimeZone.getDefault();
} else {
timeZone = TimeZone.getTimeZone(timeZoneId);
}
JSONObject pJson = null;
try {
pJson = new JSONObject(properties);
} catch (JSONException ignore) {
}
if (type == 0) {
TDFirstEvent firstEvent = new TDFirstEvent(eventName, pJson);
firstEvent.setFirstCheckId(eventId);
firstEvent.setEventTime(date, timeZone);
TDAnalyticsAPI.track(firstEvent, appId);
} else if (type == 1) {
TDUpdatableEvent updatableEvent = new TDUpdatableEvent(eventName, pJson, eventId);
updatableEvent.setEventTime(date, timeZone);
TDAnalyticsAPI.track(updatableEvent, appId);
} else if (type == 2) {
TDOverWritableEvent overWritableEvent = new TDOverWritableEvent(eventName, pJson, eventId);
overWritableEvent.setEventTime(date, timeZone);
TDAnalyticsAPI.track(overWritableEvent, appId);
}
} catch (Exception ignore) {
}
}
public static void timeEvent(String eventName, String appId) {
TDAnalyticsAPI.timeEvent(eventName, appId);
}
public static void login(String accountId, String appId) {
TDAnalyticsAPI.login(accountId, appId);
}
public static void logout(String appId) {
TDAnalyticsAPI.logout(appId);
}
public static void identify(String distinctId, String appId) {
TDAnalyticsAPI.setDistinctId(distinctId, appId);
}
public static String getDistinctId(String appId) {
return TDAnalyticsAPI.getDistinctId(appId);
}
public static void userSet(String properties, long time, String appId) {
try {
ThinkingAnalyticsSDK instance = TDAnalyticsAPI.getInstance(appId);
if (null != instance) {
Date date = null;
if (time > 0) {
date = new Date(time);
}
instance.user_set(new JSONObject(properties), date);
}
} catch (Exception ignore) {
}
}
public static void userUnset(String properties, long time, String appId) {
try {
ThinkingAnalyticsSDK instance = TDAnalyticsAPI.getInstance(appId);
if (null != instance) {
Date date = null;
if (time > 0) {
date = new Date(time);
}
instance.user_unset(new JSONObject(properties), date);
}
} catch (Exception ignore) {
}
}
public static void userSetOnce(String properties, long time, String appId) {
try {
ThinkingAnalyticsSDK instance = TDAnalyticsAPI.getInstance(appId);
if (null != instance) {
Date date = null;
if (time > 0) {
date = new Date(time);
}
instance.user_setOnce(new JSONObject(properties), date);
}
} catch (Exception ignore) {
}
}
public static void userAdd(String properties, long time, String appId) {
try {
ThinkingAnalyticsSDK instance = TDAnalyticsAPI.getInstance(appId);
if (null != instance) {
Date date = null;
if (time > 0) {
date = new Date(time);
}
instance.user_add(new JSONObject(properties), date);
}
} catch (Exception ignore) {
}
}
public static void userDel(long time, String appId) {
try {
ThinkingAnalyticsSDK instance = TDAnalyticsAPI.getInstance(appId);
if (null != instance) {
Date date = null;
if (time > 0) {
date = new Date(time);
}
instance.user_delete(date);
}
} catch (Exception ignore) {
}
}
public static void userAppend(String properties, long time, String appId) {
try {
ThinkingAnalyticsSDK instance = TDAnalyticsAPI.getInstance(appId);
if (null != instance) {
Date date = null;
if (time > 0) {
date = new Date(time);
}
instance.user_append(new JSONObject(properties), date);
}
} catch (Exception ignore) {
}
}
public static void userUniqAppend(String properties, long time, String appId) {
try {
ThinkingAnalyticsSDK instance = TDAnalyticsAPI.getInstance(appId);
if (null != instance) {
Date date = null;
if (time > 0) {
date = new Date(time);
}
instance.user_uniqAppend(new JSONObject(properties), date);
}
} catch (Exception ignore) {
}
}
public static void setSuperProperties(String properties, String appId) {
try {
TDAnalyticsAPI.setSuperProperties(new JSONObject(properties), appId);
} catch (Exception ignore) {
}
}
public static void unsetSuperProperty(String property, String appId) {
TDAnalyticsAPI.unsetSuperProperty(property, appId);
}
public static void clearSuperProperties(String appId) {
TDAnalyticsAPI.clearSuperProperties(appId);
}
public static String getSuperProperties(String appId) {
return TDAnalyticsAPI.getSuperProperties(appId).toString();
}
public static String getPresetProperties(String appId) {
return TDAnalyticsAPI.getPresetProperties(appId).toEventPresetProperties().toString();
}
public static void flush(String appId) {
TDAnalyticsAPI.flush(appId);
}
public static String getDeviceId() {
return TDAnalytics.getDeviceId();
}
public static void setTrackStatus(int status, String appId) {
TDAnalytics.TDTrackStatus trackStatus = TDAnalytics.TDTrackStatus.NORMAL;
if (status == 1) {
trackStatus = TDAnalytics.TDTrackStatus.PAUSE;
} else if (status == 2) {
trackStatus = TDAnalytics.TDTrackStatus.STOP;
} else if (status == 3) {
trackStatus = TDAnalytics.TDTrackStatus.SAVE_ONLY;
}
TDAnalyticsAPI.setTrackStatus(trackStatus, appId);
}
public static String createLightInstance(String appId) {
return TDAnalyticsAPI.lightInstance(appId);
}
public static void setNetworkType(int type, String appId) {
if (type == 0 || type == 2) {
TDAnalyticsAPI.setNetworkType(TDAnalytics.TDNetworkType.ALL, appId);
} else if (type == 1) {
TDAnalyticsAPI.setNetworkType(TDAnalytics.TDNetworkType.WIFI, appId);
}
}
public static void enableThirdPartySharing(int types, String params, String appId) {
Map<String, Object> maps = new HashMap<>();
try {
JSONObject json = new JSONObject(params);
for (Iterator<String> it = json.keys(); it.hasNext(); ) {
String key = it.next();
maps.put(key, json.opt(key));
}
} catch (JSONException ignore) {
}
if (maps.isEmpty()) {
TDAnalyticsAPI.enableThirdPartySharing(types, appId);
} else {
TDAnalyticsAPI.enableThirdPartySharing(types, maps, appId);
}
}
public static void setDynamicSuperPropertiesTrackerListener(String appId, DynamicSuperPropertiesTrackerListener listener) {
ThinkingAnalyticsSDK ta = TDAnalyticsAPI.getInstance(appId);
if (null == ta) return;
ta.setAutoTrackDynamicProperties(new ThinkingAnalyticsSDK.AutoTrackDynamicProperties() {
@Override
public JSONObject getAutoTrackDynamicProperties() {
try {
String pStr = listener.getDynamicSuperPropertiesString();
if (pStr != null) {
return new JSONObject(pStr);
}
} catch (JSONException e) {
e.printStackTrace();
}
return new JSONObject();
}
});
}
public static void enableAutoTrack(int types, String properties, String appId) {
JSONObject json = null;
try {
json = new JSONObject(properties);
} catch (JSONException ignore) {
}
TDAnalyticsAPI.enableAutoTrack(types, json, appId);
}
public static void setAutoTrackProperties(int types, String properties, String appId) {
JSONObject json = null;
try {
json = new JSONObject(properties);
} catch (JSONException ignore) {
}
if (json == null) return;
ThinkingAnalyticsSDK instance = TDAnalyticsAPI.getInstance(appId);
List<ThinkingAnalyticsSDK.AutoTrackEventType> eventTypeList = new ArrayList<>();
if ((types & TDAnalytics.TDAutoTrackEventType.APP_START) > 0) {
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_START);
}
if ((types & TDAnalytics.TDAutoTrackEventType.APP_END) > 0) {
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_END);
}
if ((types & TDAnalytics.TDAutoTrackEventType.APP_INSTALL) > 0) {
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_INSTALL);
}
if ((types & TDAnalytics.TDAutoTrackEventType.APP_CRASH) > 0) {
eventTypeList.add(ThinkingAnalyticsSDK.AutoTrackEventType.APP_CRASH);
}
instance.setAutoTrackProperties(eventTypeList, json);
}
public static void enableAutoTrack(int types, AutoTrackEventTrackerListener listener, String appId) {
TDAnalyticsAPI.enableAutoTrack(types, new TDAnalytics.TDAutoTrackEventHandler() {
@Override
public JSONObject getAutoTrackEventProperties(int i, JSONObject jsonObject) {
try {
String name = appId;
if (TextUtils.isEmpty(name)) {
name = TDAnalytics.instance.mConfig.getName();
}
String eStr = listener.eventCallback(i, name, jsonObject.toString());
if (eStr != null) {
return new JSONObject(eStr);
}
} catch (JSONException e) {
e.printStackTrace();
}
return new JSONObject();
}
}, appId);
}
public interface DynamicSuperPropertiesTrackerListener {
String getDynamicSuperPropertiesString();
}
public interface AutoTrackEventTrackerListener {
/**
* Callback event name and current properties and get dynamic properties
*
* @return dynamic properties String
*/
String eventCallback(int type, String appId, String properties);
}
}