Commit 1a439fc5 authored by mengcuiguang's avatar mengcuiguang

代码优化

parent c1277cf6
...@@ -223,13 +223,16 @@ dependencies { ...@@ -223,13 +223,16 @@ dependencies {
// 穿山甲聚合 接入【穿山甲、快手】 // 穿山甲聚合 接入【穿山甲、快手】
implementation "com.pangle.cn:mediation-sdk:6.4.1.5" implementation "com.pangle.cn:mediation-sdk:6.4.1.5"
// 穿山甲Applog 上报组件(必须) // // 穿山甲Applog 上报组件(必须)
implementation 'com.bytedance.applog:RangersAppLog-Lite-cn:6.16.3' // implementation 'com.bytedance.applog:RangersAppLog-Lite-cn:6.16.3'
// 穿山甲商业化转化组件(必须) // // 穿山甲商业化转化组件(必须)
implementation 'com.bytedance.ads:AppConvert:1.3.0.5' // implementation 'com.bytedance.ads:AppConvert:1.3.0.5'
//埋点开发工具,DevTools是 Debug 环境下辅助开发者或测试人员进行应用内埋点验证和 SDK 接入问题排查的组件。请使用 debug 依赖,建议仅在 debug 下做调试 //埋点开发工具,DevTools是 Debug 环境下辅助开发者或测试人员进行应用内埋点验证和 SDK 接入问题排查的组件。请使用 debug 依赖,建议仅在 debug 下做调试
// debugImplementation 'com.bytedance.applog:RangersAppLog-DevTools:3.3.4' // debugImplementation 'com.bytedance.applog:RangersAppLog-DevTools:3.3.4'
// 引力引擎
implementation "cn.gravity.android:GravityEngineSDK:4.8.11"
// 腾讯播放器 // 腾讯播放器
implementation "com.tencent.liteav:LiteAVSDK_Player:11.3.0.13176" implementation "com.tencent.liteav:LiteAVSDK_Player:11.3.0.13176"
......
...@@ -11,7 +11,7 @@ import com.downloader.PRDownloader; ...@@ -11,7 +11,7 @@ import com.downloader.PRDownloader;
import com.downloader.PRDownloaderConfig; import com.downloader.PRDownloaderConfig;
import com.duben.infinitefunjia.ad.TTAdManagerHolder; import com.duben.infinitefunjia.ad.TTAdManagerHolder;
import com.duben.infinitefunjia.common.Constant; import com.duben.infinitefunjia.common.Constant;
import com.duben.infinitefunjia.manager.CsjAppLogManager; import com.duben.infinitefunjia.manager.GravityEngineManager;
import com.duben.infinitefunjia.manager.TXCSDKService; import com.duben.infinitefunjia.manager.TXCSDKService;
import com.duben.infinitefunjia.manager.TalkingDataManager; import com.duben.infinitefunjia.manager.TalkingDataManager;
import com.duben.infinitefunjia.net.LoanService; import com.duben.infinitefunjia.net.LoanService;
...@@ -82,7 +82,7 @@ public class MintsApplication extends MultiDexApplication { ...@@ -82,7 +82,7 @@ public class MintsApplication extends MultiDexApplication {
TXCSDKService.init(this); TXCSDKService.init(this);
CsjAppLogManager.INSTANCE.init(this); GravityEngineManager.INSTANCE.initGravityEngine(this);
TalkingDataManager.INSTANCE.init(this); TalkingDataManager.INSTANCE.init(this);
......
package com.duben.infinitefunjia.manager //package com.duben.infinitefunjia.manager
//
import android.app.Application //import android.app.Application
import android.text.TextUtils //import android.text.TextUtils
import com.bytedance.ads.convert.BDConvert //import com.bytedance.ads.convert.BDConvert
import com.bytedance.applog.AppLog //import com.bytedance.applog.AppLog
import com.bytedance.applog.IDataObserver //import com.bytedance.applog.IDataObserver
import com.bytedance.applog.InitConfig //import com.bytedance.applog.InitConfig
import com.bytedance.applog.util.UriConstants //import com.bytedance.applog.util.UriConstants
import com.bytedance.hume.readapk.HumeSDK //import com.bytedance.hume.readapk.HumeSDK
import com.duben.infinitefunjia.BuildConfig //import com.duben.infinitefunjia.BuildConfig
import com.duben.infinitefunjia.MintsApplication //import com.duben.infinitefunjia.MintsApplication
import com.duben.infinitefunjia.utils.LogUtil //import com.duben.infinitefunjia.utils.LogUtil
import com.duben.infinitefunjia.utils.MateUtils.getAppMetaData //import com.duben.infinitefunjia.utils.MateUtils.getAppMetaData
import org.json.JSONObject //import org.json.JSONObject
//
//
/** ///**
* CsjAppLogManager // * CsjAppLogManager
*/ // */
object CsjAppLogManager { //object CsjAppLogManager {
//
// 获取方式,穿山甲平台-Adspark-免费广告监测-应用管理创建 // // 获取方式,穿山甲平台-Adspark-免费广告监测-应用管理创建
const val APP_LOG_ID = "643002" // const val APP_LOG_ID = "643002"
//
fun init(application: Application) { // fun init(application: Application) {
// 第一个参数APPID: 参考2.1节获取 // // 第一个参数APPID: 参考2.1节获取
// 第二个参数CHANNEL: 填写渠道信息,请注意不能为空 // // 第二个参数CHANNEL: 填写渠道信息,请注意不能为空
val config = InitConfig(APP_LOG_ID, createChannel()) // val config = InitConfig(APP_LOG_ID, createChannel())
// 设置数据上送地址 // // 设置数据上送地址
config.setUriConfig(UriConstants.DEFAULT) // config.setUriConfig(UriConstants.DEFAULT)
config.isImeiEnable = false //建议关停获取IMEI(出于合规考虑) // config.isImeiEnable = false //建议关停获取IMEI(出于合规考虑)
config.isAutoTrackEnabled = false // 全埋点开关,true开启,false关闭 // config.isAutoTrackEnabled = false // 全埋点开关,true开启,false关闭
config.isLogEnable = BuildConfig.LOG_DEBUG // true:开启日志,参考4.3节设置logger,false:关闭日志 // config.isLogEnable = BuildConfig.LOG_DEBUG // true:开启日志,参考4.3节设置logger,false:关闭日志
AppLog.setEncryptAndCompress(true) // 加密开关,true开启,false关闭 // AppLog.setEncryptAndCompress(true) // 加密开关,true开启,false关闭
config.setEnablePlay(true) // 配置心跳事件(时长统计) // config.setEnablePlay(true) // 配置心跳事件(时长统计)
/** // /**
* 用于获取用户唯一性bd_did // * 用于获取用户唯一性bd_did
* @description // * @description
*/ // */
AppLog.addDataObserver(object : IDataObserver { // AppLog.addDataObserver(object : IDataObserver {
/** // /**
* 本地的id数据加载结果通知 // * 本地的id数据加载结果通知
* @param did device id // * @param did device id
* @param iid install id // * @param iid install id
* @param ssid ssid // * @param ssid ssid
*/ // */
override fun onIdLoaded(s: String, s1: String, s2: String) {} // override fun onIdLoaded(s: String, s1: String, s2: String) {}
//
/** // /**
* 通知注册结果,以及id变化情况 // * 通知注册结果,以及id变化情况
* 仅主进程会被调用 // * 仅主进程会被调用
* @param changed 是否和本地缓存有所不同 // * @param changed 是否和本地缓存有所不同
* @param oldDid 原device id // * @param oldDid 原device id
* @param newDid server返回新的device id // * @param newDid server返回新的device id
* @param oldIid 原install id // * @param oldIid 原install id
* @param newIid server返回新install id // * @param newIid server返回新install id
* @param oldSsid 原ssid // * @param oldSsid 原ssid
* @param newSsid server返回新ssid // * @param newSsid server返回新ssid
*/ // */
override fun onRemoteIdGet( // override fun onRemoteIdGet(
b: Boolean, // b: Boolean,
s: String?, // s: String?,
s1: String, // s1: String,
s2: String, // s2: String,
s3: String, // s3: String,
s4: String, // s4: String,
s5: String // s5: String
) { // ) {
val bd_did = AppLog.getDid() // val bd_did = AppLog.getDid()
LogUtil.d("mcg --> 用户唯一性bd_did=" + bd_did) // LogUtil.d("mcg --> 用户唯一性bd_did=" + bd_did)
} // }
//
/** // /**
* Config拉取数据,和本地数据对比有变化的通知 // * Config拉取数据,和本地数据对比有变化的通知
* 仅主进程会被调用 // * 仅主进程会被调用
* @param changed 是否和本地缓存有所不同 // * @param changed 是否和本地缓存有所不同
* @param config server返回新config内容 // * @param config server返回新config内容
*/ // */
override fun onRemoteConfigGet(b: Boolean, jsonObject: JSONObject?) {} // override fun onRemoteConfigGet(b: Boolean, jsonObject: JSONObject?) {}
//
/** // /**
* server拉取AbConfig数据,和本地数据对比有变化的通知 // * server拉取AbConfig数据,和本地数据对比有变化的通知
* 仅主进程会被调用 // * 仅主进程会被调用
* @param changed 是否和本地缓存有所不同 // * @param changed 是否和本地缓存有所不同
* @param abConfig server返回新abConfig内容 // * @param abConfig server返回新abConfig内容
*/ // */
override fun onRemoteAbConfigGet(b: Boolean, jsonObject: JSONObject) { // override fun onRemoteAbConfigGet(b: Boolean, jsonObject: JSONObject) {
LogUtil.d("mcg -->---测试---返回全部进组信息", "" + jsonObject.toString()) // LogUtil.d("mcg -->---测试---返回全部进组信息", "" + jsonObject.toString())
} // }
//
/** // /**
* Vid变化通知 // * Vid变化通知
*/ // */
override fun onAbVidsChange(s: String, s1: String) {} // override fun onAbVidsChange(s: String, s1: String) {}
}) // })
//SDK会采集OAID、ANDROID_ID和其他的设备特征字段,请遵循相关合规要求在隐私弹窗后采集 // //SDK会采集OAID、ANDROID_ID和其他的设备特征字段,请遵循相关合规要求在隐私弹窗后采集
//传入需要init的AppLog实例,若没有多个AppLog实例,则传入AppLog.getInstance()即可 // //传入需要init的AppLog实例,若没有多个AppLog实例,则传入AppLog.getInstance()即可
BDConvert.getInstance().init(application, AppLog.getInstance()) // BDConvert.getInstance().init(application, AppLog.getInstance())
// 如果在 onCreate 阶段初始化拿不到 XXXActivity 则不需要传递第三个参数 // // 如果在 onCreate 阶段初始化拿不到 XXXActivity 则不需要传递第三个参数
AppLog.init(application, config) // AppLog.init(application, config)
// 请在用户授权后调用如下方法,start 开始实际采集用户信息+上报: // // 请在用户授权后调用如下方法,start 开始实际采集用户信息+上报:
AppLog.start() // AppLog.start()
// 在初始化后必须设置AppLog.setHeaderInfo("csj_attribution",1),否则会直接影响归因结果。 // // 在初始化后必须设置AppLog.setHeaderInfo("csj_attribution",1),否则会直接影响归因结果。
AppLog.setHeaderInfo("csj_attribution", 1) // AppLog.setHeaderInfo("csj_attribution", 1)
} // }
//
//
/** // /**
* 创建渠道 // * 创建渠道
* // *
* @return // * @return
*/ // */
private fun createChannel(): String { // private fun createChannel(): String {
var channel = getAppMetaData(MintsApplication.getContext(), "CHANNEL_NAME") // var channel = getAppMetaData(MintsApplication.getContext(), "CHANNEL_NAME")
try {
// 穿山甲分包渠道
val ttChannel = HumeSDK.getChannel(MintsApplication.getContext())
if (!TextUtils.isEmpty(ttChannel)) {
// 此处方式不能修改,已和后端约定
channel = channel + "_" + ttChannel
}
} catch (e: Exception) {
e.printStackTrace()
}
return channel
}
object GrownEventType {
//注册
const val REGISTER = "grown_attribution_event_register"
//付费
const val PURCHASE = "grown_attribution_event_purchase"
//关键行为
const val KEY_BEHAVIOR = "grown_attribution_event_key_behavior"
//下单
const val ORDER = "grown_attribution_event_order"
//下载
const val DOWNLOAD = "grown_attribution_event_download"
//应用内拉起
const val DEEPLINK = "grown_attribution_event_deelink"
//授权
const val AUTHORIZATION = "grown_attribution_event_authorization"
//广告变现
const val AD_PURCHASE = "grown_attribution_event_ad_purchase"
//次留
const val RETENTION_2D = "grown_attribution_event_retention_2d"
//添加购物车
const val ADD_TO_CART = "grown_attribution_event_add_to_cart"
//表单提交
const val FORM_SUBMIT = "grown_attribution_event_form_submit"
//拉活
const val APP_RE_ACTIVE_WAKE_UP = "grown_attribution_event_app_re_active_wake_up"
//自定义激活
const val CUSTOM_ACTIVITION = "grown_attribution_event_custom_activition"
//自定义注册
const val CUSTOM_REGISTER = "grown_attribution_event_custom_register"
}
fun event(v: String) {
//方式一,穿山甲
AppLog.onEventV3(v)
// //方式二,自定义
// val paramsObj = JSONObject()
// try { // try {
// paramsObj.put("key_string", "value_string") // // 穿山甲分包渠道
// paramsObj.put("key_int", 10) // val ttChannel = HumeSDK.getChannel(MintsApplication.getContext())
// if (!TextUtils.isEmpty(ttChannel)) {
// // 此处方式不能修改,已和后端约定
// channel = channel + "_" + ttChannel
// }
// } catch (e: Exception) { // } catch (e: Exception) {
// e.printStackTrace() // e.printStackTrace()
// } // }
// AppLog.onEventV3(GrownEventType.PURCHASE, paramsObj) // return channel
} // }
} //
\ No newline at end of file //
// object GrownEventType {
// //注册
// const val REGISTER = "grown_attribution_event_register"
//
// //付费
// const val PURCHASE = "grown_attribution_event_purchase"
//
// //关键行为
// const val KEY_BEHAVIOR = "grown_attribution_event_key_behavior"
//
// //下单
// const val ORDER = "grown_attribution_event_order"
//
// //下载
// const val DOWNLOAD = "grown_attribution_event_download"
//
// //应用内拉起
// const val DEEPLINK = "grown_attribution_event_deelink"
//
// //授权
// const val AUTHORIZATION = "grown_attribution_event_authorization"
//
// //广告变现
// const val AD_PURCHASE = "grown_attribution_event_ad_purchase"
//
// //次留
// const val RETENTION_2D = "grown_attribution_event_retention_2d"
//
// //添加购物车
// const val ADD_TO_CART = "grown_attribution_event_add_to_cart"
//
// //表单提交
// const val FORM_SUBMIT = "grown_attribution_event_form_submit"
//
// //拉活
// const val APP_RE_ACTIVE_WAKE_UP = "grown_attribution_event_app_re_active_wake_up"
//
// //自定义激活
// const val CUSTOM_ACTIVITION = "grown_attribution_event_custom_activition"
//
// //自定义注册
// const val CUSTOM_REGISTER = "grown_attribution_event_custom_register"
// }
//
// fun event(v: String) {
// //方式一,穿山甲
// AppLog.onEventV3(v)
//
//// //方式二,自定义
//// val paramsObj = JSONObject()
//// try {
//// paramsObj.put("key_string", "value_string")
//// paramsObj.put("key_int", 10)
//// } catch (e: Exception) {
//// e.printStackTrace()
//// }
//// AppLog.onEventV3(GrownEventType.PURCHASE, paramsObj)
// }
//}
\ No newline at end of file
package com.duben.infinitefunjia.manager
import android.app.Application
import android.text.TextUtils
import cn.gravity.android.GEConfig
import cn.gravity.android.GravityEngineSDK
import cn.gravity.android.GravityEngineSDK.AutoTrackEventType
import cn.gravity.android.InitializeCallback
import com.bytedance.hume.readapk.HumeSDK
import com.duben.infinitefunjia.MintsApplication
import com.duben.infinitefunjia.utils.DeviceUuidFactory
import com.duben.infinitefunjia.utils.LogUtil
import com.duben.infinitefunjia.utils.MateUtils.getAppMetaData
import com.duben.library.utils.json.JsonUtil
import com.duben.infinitefunjia.BuildConfig
import org.json.JSONObject
/**
* 描述:引力引擎SDK
* 作者:孟崔广
*/
object GravityEngineManager {
private const val ACCESS_TOKEN = "eYoSAvnnJtrjG7Ecq4bdBLcPRaTgq8zO"
private const val ENABLE_SYNC_ATTRIBUTION = false
/**
* 初始化
*
* ACCESS_TOKEN : 项目通行证,同启动 SDK 时保持一致
USER_CLIENT_ID : 用户唯一 ID(例如 UID 或者设备 ID)
USER_CLIENT_NAME : 用户昵称
CHANNEL : 用户初始化渠道(例如 xiaomi、huawei 等)
ENABLE_SYNC_ATTRIBUTION : 是否开启同步获取归因信息,具体请参考同步归因
*/
fun initGravityEngine(application: Application) {
try {
// 在主线程中配置并启动SDK
val config: GEConfig = GEConfig.getInstance(application, ACCESS_TOKEN)
if (BuildConfig.DEBUG) {
config.mode = GEConfig.ModeEnum.DEBUG
}
// 保存此实例,后续调用方法均需要用到
val gravityEngineSDKInstance = GravityEngineSDK.setupAndStart(config)
gravityEngineSDKInstance.initialize(
ACCESS_TOKEN,
DeviceUuidFactory().deviceUuid.toString(),
DeviceUuidFactory().deviceUuid.toString(),
createChannel(),
object : InitializeCallback {
override fun onFailed(errorMsg: String, initializeBody: JSONObject?) {
LogUtil.d("mcg --> gravityEngineSDKInstance onFailed=" + errorMsg)
}
override fun onSuccess(responseJson: JSONObject?, initializeBody: JSONObject?) {
//responseJson=={"nameValuePairs":{"token":"b10c4ce9-b40b-3f89-b442-237fe82e5efd"}}
LogUtil.d(
"mcg --> gravityEngineSDKInstance onSuccess=" + JsonUtil.toJson(
responseJson
)
)
enableAutoTrack(gravityEngineSDKInstance)
}
},
ENABLE_SYNC_ATTRIBUTION
)
} catch (e: Exception) {
e.printStackTrace()
}
}
/**
* 开启自动采集
*/
fun enableAutoTrack(gravityEngineSDKInstance: GravityEngineSDK) {
val typeList: MutableList<AutoTrackEventType> = ArrayList()
typeList.add(AutoTrackEventType.APP_INSTALL)
typeList.add(AutoTrackEventType.APP_END)
typeList.add(AutoTrackEventType.APP_CRASH)
typeList.add(AutoTrackEventType.APP_VIEW_SCREEN)
typeList.add(AutoTrackEventType.APP_CLICK)
gravityEngineSDKInstance.enableAutoTrack(typeList)
}
private fun createChannel(): String {
var channel = getAppMetaData(MintsApplication.getContext(), "CHANNEL_NAME")
try {
// 穿山甲分包渠道
val ttChannel = HumeSDK.getChannel(MintsApplication.getContext())
if (!TextUtils.isEmpty(ttChannel)) {
// 此处方式不能修改,已和后端约定
channel = channel + "_" + ttChannel
}
} catch (e: Exception) {
e.printStackTrace()
}
return channel
}
}
\ No newline at end of file
...@@ -16,7 +16,13 @@ buildscript { ...@@ -16,7 +16,13 @@ buildscript {
maven { maven {
url "https://artifact.bytedance.com/repository/pangle" url "https://artifact.bytedance.com/repository/pangle"
} }
// 引力引擎 SDK
maven {
url 'https://nexus.gravity-engine.com/repository/maven-releases/'
}
maven {
url 'https://nexus.gravity-engine.com/repository/maven-snapshots/'
}
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.1.1' classpath 'com.android.tools.build:gradle:7.1.1'
...@@ -40,6 +46,13 @@ allprojects { ...@@ -40,6 +46,13 @@ allprojects {
maven { maven {
url "https://artifact.bytedance.com/repository/pangle" url "https://artifact.bytedance.com/repository/pangle"
} }
// 引力引擎 SDK
maven {
url 'https://nexus.gravity-engine.com/repository/maven-releases/'
}
maven {
url 'https://nexus.gravity-engine.com/repository/maven-snapshots/'
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment