Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
871e8507
Commit
871e8507
authored
Jul 21, 2022
by
YKai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 埋点工具重新封装
parent
bda0ea8e
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
58 additions
and
314 deletions
+58
-314
ActionCountUtils.kt
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/actionutil/ActionCountUtils.kt
+58
-314
No files found.
ydl-platform/src/main/java/com/ydl/ydlcommon/utils/actionutil/ActionCountUtils.kt
View file @
871e8507
/*
package
com.ydl.ydlcommon.utils.actionutil
package
com.ydl.ydlcommon.utils.actionutil
import
android.annotation.SuppressLint
import
android.annotation.SuppressLint
...
@@ -7,20 +6,12 @@ import android.net.ConnectivityManager
...
@@ -7,20 +6,12 @@ import android.net.ConnectivityManager
import
android.net.NetworkInfo
import
android.net.NetworkInfo
import
android.net.wifi.WifiManager
import
android.net.wifi.WifiManager
import
android.os.Build
import
android.os.Build
import android.provider.Settings
import
com.umeng.commonsdk.UMConfigure
import android.text.TextUtils
import android.util.Log
import com.google.gson.Gson
import com.ydl.devicesidlib.DeviceIDHelper
import
com.ydl.devicesidlib.Utils
import
com.ydl.devicesidlib.Utils
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.base.BaseApp
import
com.ydl.ydlcommon.data.http.api.ApiRequestUtil
import
com.ydl.ydlcommon.data.http.api.ApiRequestUtil
import
com.ydl.ydlcommon.data.http.params.ActionDataBean
import
com.ydl.ydlcommon.data.http.params.ActionDataBean
import com.ydl.ydlcommon.data.http.params.BaiduActionDataBean
import
com.ydl.ydlcommon.modular.ModularServiceManager
import
com.ydl.ydlcommon.modular.ModularServiceManager
import com.ydl.ydlcommon.router.YdlCommonOut
import com.ydl.ydlcommon.utils.ActivityManager
import com.ydl.ydlcommon.utils.DeviceTool
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.LogUtil
import
com.yidianling.common.tools.RxDeviceTool
import
com.yidianling.common.tools.RxDeviceTool
import
com.yidianling.common.tools.RxTool
import
com.yidianling.common.tools.RxTool
...
@@ -33,11 +24,10 @@ import java.net.SocketException
...
@@ -33,11 +24,10 @@ import java.net.SocketException
import
java.util.*
import
java.util.*
*/
/**
/**
* 行为数据埋点工具类
* 行为数据埋点工具类
* Created by xj on 2019/6/22.
* Created by xj on 2019/6/22.
*/
/*
*/
class
ActionCountUtils
{
class
ActionCountUtils
{
...
@@ -46,332 +36,86 @@ class ActionCountUtils {
...
@@ -46,332 +36,86 @@ class ActionCountUtils {
var
appId
:
String
=
""
var
appId
:
String
=
""
var
appName
:
String
=
""
var
appName
:
String
=
""
var
packageName
:
String
=
""
var
packageName
:
String
=
""
var
oaId
=
""
*/
/**
/**
* appId:消息端来源 - ydl:ydl-app-android-user、xlzx:ydl-app-android-xlzx
* appId:消息端来源 - ydl:ydl-app-android-user、xlzx:ydl-app-android-xlzx
* appName:应用名称 - "心理咨询" else "壹点灵心理咨询"
* appName:应用名称 - "心理咨询" else "壹点灵心理咨询"
*/
/*
*/
fun
init
(
id
:
String
,
name
:
String
)
{
fun
init
(
id
:
String
,
name
:
String
)
{
packageName
=
BaseApp
.
instance
.
packageName
packageName
=
BaseApp
.
instance
.
packageName
appId
=
id
appId
=
id
appName
=
name
appName
=
name
}
// 获取oaid
UMConfigure
.
getOaid
(
BaseApp
.
instance
)
{
*/
oaId
=
it
/**
* BI埋点封装方法
* 传入埋点事件名称 格式:xxx|xxx
*
* 除非特殊说明 url 和 api 默认传空
*//*
fun count(eventName: String, vararg sign1: String) {
count(eventName, *sign1, urlStr = "", apiStr = "")
}
fun countUid(eventName: String, uid: String, vararg sign1: String) {
count(eventName, *sign1, urlStr = "", apiStr = "", uid = uid)
}
fun count(
eventName: String,
vararg sign1: String,
urlStr: String = "",
apiStr: String = "",
uid: String = ""
) {
var partId = ""
var position = ""
var userId = uid
if (TextUtils.isEmpty(uid)) {
userId = ModularServiceManager.getPlatformUserService()?.getUser()?.userId ?: ""
}
if (eventName.contains("|")) {
val splitList = eventName.split("|")
if (splitList.isNotEmpty() && splitList.size > 1) {
partId = splitList[0]
position = splitList[1]
}
}
}
}
//除非特殊说明 url 和 api 默认传空
count(userId, partId, position, url = urlStr, api = apiStr, signs = *sign1)
}
*/
/**
* 行为数据埋点调用的方法
*//*
fun count(
uid: String?,
partId: String,
position: String,
url: String,
api: String,
sign1: String
) {
count(uid, partId, position, url, api, signs = *arrayOf(sign1))
}
*/
/*
*
* 测试用埋点,现在服务端统一用百度埋点
* *//*
fun count(
uid: String?,
partId: String,
position: String,
url: String,
api: String,
vararg signs: String
) {
try {
val actionDataParams = ActionDataBean.Builder()
actionDataParams.partId(partId)
actionDataParams.position(position)
actionDataParams.url(url)
uid?.let {
actionDataParams.uid(uid)
}
actionDataParams.time(System.currentTimeMillis())
actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp()))
actionDataParams.appId(appId)
actionDataParams.api(api)
actionDataParams.manufacturer(Build.BRAND.trim().toUpperCase())
actionDataParams.model(Build.MODEL)
actionDataParams.os(BIConstants.OS)
actionDataParams.osVersion(Build.VERSION.RELEASE)
actionDataParams.wifi(if (isWifi()) 0 else 1)
var deviceId = ""
*/
/*
* 因为DeviceIDHelper.getInstance().deviceId对于imei
* 序列号对于小米手机Utils.getIMEI(context)
* 第一次安装获取失败,第二次打开就能成功
* 所以Utils.getIMEI(topTaskActivity)传入activity解决这个问题
* *//*
deviceId = if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
val topTaskActivity = ActivityManager.getInstance().getTopTaskActivity()
//获取imei
Utils.getIMEI(topTaskActivity)
} else {
//android Q及以上取oaid
DeviceIDHelper.getInstance().deviceId
}
actionDataParams.deviceId(deviceId)
signs == null ?: signs.forEachIndexed { index, s ->
//拓展参数个数确定,暂不使用反射调用
//actionDataParams.javaClass.getMethod("sign$index").invoke(s)
when (index) {
0 -> {
actionDataParams.sign1(s)
}
1 -> {
actionDataParams.sign2(s)
}
2 -> {
actionDataParams.sign3(s)
}
3 -> {
actionDataParams.sign4(s)
}
4 -> {
actionDataParams.sign5(s)
}
}
}
actionDataParams.screenWidth(RxDeviceTool.getScreenWidth(RxTool.getContext()!!))
actionDataParams.screenHeight(RxDeviceTool.getScreenHeight(RxTool.getContext()!!))
//剩余额外参数根据需求定义
LogUtil.e("androididgetMacFromHardwareMAC地址:${DeviceTool.getMacFromHardware()}")
//请求
request(actionDataParams.build())
} catch (e: Exception) {
LogUtil.i(TAG, e.toString())
}
}
/**
* 埋点构造方法
*/
*/
/**
fun
baiDuCountSign1
(
partId
:
String
,
position
:
String
,
sign1
:
String
){
* 百度检测数据埋点调用的方法
baiDuCount
(
partId
,
position
,
sign1
,
""
,
""
,
""
,
""
)
*//*
fun baiduCount(partId: String, position: String, convertType: Int) {
val userId = ModularServiceManager.getPlatformUserService()?.getUser()?.userId ?: ""
baiduCount(userId, partId, position, "", "", convertType, "")
}
}
/**
* 埋点构造方法
*/
*/
/**
fun
baiDuCountSign2
(
partId
:
String
,
position
:
String
,
sign1
:
String
,
sign2
:
String
){
* 百度检测数据埋点调用的方法
baiDuCount
(
partId
,
position
,
sign1
,
sign2
,
""
,
""
,
""
)
*//*
fun baiduCount(partId: String, position: String, convertType: Int, openInstallKey: String) {
val userId = ModularServiceManager.getPlatformUserService()?.getUser()?.userId ?: ""
baiduCount(userId, partId, position, "", "", convertType, openInstallKey)
}
}
/**
* 埋点构造方法
*/
*/
/**
fun
baiDuCountSign3
(
partId
:
String
,
position
:
String
,
sign1
:
String
,
sign2
:
String
,
sign3
:
String
){
* 百度检测数据埋点调用的方法
baiDuCount
(
partId
,
position
,
sign1
,
sign2
,
sign3
,
""
,
""
)
*//*
fun baiduCount(
uid: String?,
partId: String,
position: String,
url: String,
api: String,
convertType: Int
) {
val userId = ModularServiceManager.getPlatformUserService()?.getUser()?.userId ?: ""
baiduCount(userId, partId, position, url, api, convertType, "")
}
}
/**
* 埋点构造方法
*/
*/
/**
fun
baiDuCountSign4
(
partId
:
String
,
position
:
String
,
sign1
:
String
,
sign2
:
String
,
sign3
:
String
,
sign4
:
String
){
* @param openInstallKey openInstall统计渠道的key和Value值
baiDuCount
(
partId
,
position
,
sign1
,
sign2
,
sign3
,
sign4
,
""
)
* *//*
fun baiduCount(
uid: String?,
partId: String,
position: String,
url: String,
api: String,
convertType: Int,
openInstallKey: String?
) {
try {
val actionDataParams = ActionDataBean.Builder()
actionDataParams.partId(partId)
actionDataParams.position(position)
actionDataParams.url(url)
actionDataParams.time(System.currentTimeMillis())
actionDataParams.appVersion(RxDeviceTool.getAppVersionName(BaseApp.getApp()))
actionDataParams.appId(appId)
actionDataParams.api(api)
actionDataParams.manufacturer(Build.BRAND.trim().toUpperCase())
actionDataParams.model(Build.MODEL)
actionDataParams.os(BIConstants.OS)
actionDataParams.uid=uid
actionDataParams.osVersion(Build.VERSION.RELEASE)
actionDataParams.wifi(if (isWifi()) 0 else 1)
actionDataParams.screenWidth(RxDeviceTool.getScreenWidth(RxTool.getContext()!!))
actionDataParams.screenHeight(RxDeviceTool.getScreenHeight(RxTool.getContext()!!))
val baiduActionDataParams = BaiduActionDataBean.Builder()
baiduActionDataParams.pkname = packageName
baiduActionDataParams.deviceType = 2
var deviceId = ""
*/
/*
* 因为DeviceIDHelper.getInstance().deviceId对于imei
* 序列号对于小米手机Utils.getIMEI(context)
* 第一次安装获取失败,第二次打开就能成功
* 所以Utils.getIMEI(topTaskActivity)传入activity解决这个问题
* *//*
deviceId = if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {
val topTaskActivity = ActivityManager.getInstance().getTopTaskActivity()
//获取imei
Utils.getIMEI(topTaskActivity)
} else {
//android Q及以上取oaid
DeviceIDHelper.getInstance().deviceId
}
baiduActionDataParams.deviceId(deviceId)
baiduActionDataParams.convertType(convertType)
baiduActionDataParams.convertTime(System.currentTimeMillis() / 1000)
baiduActionDataParams.appid(0.toLong())
baiduActionDataParams.appName(appName)
try {
@SuppressLint("HardwareIds") val id =
Settings.Secure.getString(
RxTool.getContext().contentResolver,
Settings.Secure.ANDROID_ID
)
LogUtil.e("androidid未加密:${id}")
} catch (e: java.lang.Exception) {
}
}
baiduActionDataParams.androidId(DeviceTool.getAndroidID())//MD5加密的androidId
baiduActionDataParams.ip("")
baiduActionDataParams.ipv6("")//给服务端传IPV6地址DeviceTool.getLocalIpV6()
baiduActionDataParams.tp(Build.MODEL)
baiduActionDataParams.network(DeviceTool.getNetworkState(RxTool.getContext()))
baiduActionDataParams.convertParam("")
baiduActionDataParams.uid(uid)
Log.e("baiduActionDataParams", "---------${baiduActionDataParams}")
try {
var mac = DeviceTool.getMacFromHardware()//获得mac地址,gprs和wifi返回同一个mac地址
LogUtil.e("androidid:mac:${mac}")
baiduActionDataParams.mac(mac)
} catch (e: Exception) {
}
baiduActionDataParams.channel(YdlCommonOut.getChannelName())
val gson = Gson().toJson(baiduActionDataParams)
Log.e("Action", "---------$gson")
actionDataParams.sign2(gson)
actionDataParams.sign3(YdlCommonOut.getChannelName())
//openInstall渠道统计
openInstallKey?.let {
actionDataParams.sign4(it)
}
//剩余额外参数根据需求定义
//请求
ActionCountUtils.request(actionDataParams.build())
} catch (e: Exception) {
}
}
/**
* 埋点方法
* @param partId 例如:pardId-ydl_user_error_business
*/
*/
/**
* 接口返回错误埋点调用该方法
* @param partId pardId-ydl_user_error_business
* @param position error_log
* @param sign1 访问接口对应的参数
* @param sign2 接口返回的错误信息
*//*
fun
baiDuCount
(
fun
baiDuCount
(
partId
:
String
,
partId
:
String
,
position
:
String
,
position
:
String
,
api: String,
sign1
:
String
,
sign1
:
String
,
sign2: String
sign2
:
String
,
sign3
:
String
,
sign4
:
String
,
sign5
:
String
)
{
)
{
val
actionDataParams
=
ActionDataBean
.
Builder
()
val
actionDataParams
=
ActionDataBean
.
Builder
()
actionDataParams
.
partId
=
partId
actionDataParams
.
partId
=
partId
actionDataParams
.
position
=
position
actionDataParams
.
position
=
position
actionDataParams
.
sign1
=
sign1
actionDataParams
.
sign1
=
sign1
actionDataParams
.
sign2
=
sign2
actionDataParams
.
sign2
=
sign2
actionDataParams.api = api
actionDataParams
.
sign3
=
sign3
actionDataParams
.
sign4
=
sign4
actionDataParams
.
sign5
=
sign5
actionDataParams
.
appVersion
(
RxDeviceTool
.
getAppVersionName
(
BaseApp
.
getApp
()))
actionDataParams
.
appVersion
(
RxDeviceTool
.
getAppVersionName
(
BaseApp
.
getApp
()))
val
deviceId
=
if
(
Build
.
VERSION
.
SDK_INT
<=
Build
.
VERSION_CODES
.
P
)
{
val
deviceId
=
if
(
Build
.
VERSION
.
SDK_INT
<=
Build
.
VERSION_CODES
.
P
)
{
val topTaskActivity = ActivityManager.getInstance().getTopTaskActivity()
//获取imei
//获取imei
Utils.getIMEI(
topTaskActivity
)
Utils
.
getIMEI
(
BaseApp
.
instance
)
}
else
{
}
else
{
//android Q及以上取oaid
//android Q及以上取oaid
DeviceIDHelper.getInstance().device
Id
oa
Id
}
}
actionDataParams.deviceId=deviceId
actionDataParams
.
deviceId
=
deviceId
actionDataParams
.
time
(
System
.
currentTimeMillis
())
actionDataParams
.
time
(
System
.
currentTimeMillis
())
actionDataParams
.
appId
(
appId
)
actionDataParams
.
appId
(
appId
)
actionDataParams
.
manufacturer
(
Build
.
BRAND
.
trim
().
toUpperCase
())
actionDataParams
.
manufacturer
(
Build
.
BRAND
.
trim
().
toUpperCase
())
...
@@ -384,10 +128,10 @@ class ActionCountUtils {
...
@@ -384,10 +128,10 @@ class ActionCountUtils {
request
(
actionDataParams
.
build
())
request
(
actionDataParams
.
build
())
}
}
*/
/**
/**
* 传入ActionDataParams参数,访问接口
* 传入ActionDataParams参数,访问接口
*/
/*
*/
@SuppressLint
(
"CheckResult"
)
@SuppressLint
(
"CheckResult"
)
fun
request
(
actionDataBean
:
ActionDataBean
)
{
fun
request
(
actionDataBean
:
ActionDataBean
)
{
...
@@ -405,24 +149,24 @@ class ActionCountUtils {
...
@@ -405,24 +149,24 @@ class ActionCountUtils {
}
}
}
}
*/
/**
/**
* 获取当前ipv4地址
* 获取当前ipv4地址
* @return
* @return
*/
/*
*/
fun
getIpAddress
(
context
:
Context
):
String
{
fun
getIpAddress
(
context
:
Context
):
String
{
// 获取WiFi服务
// 获取WiFi服务
val
wifiManager
=
context
.
getSystemService
(
Context
.
WIFI_SERVICE
)
as
WifiManager
val
wifiManager
=
context
.
getSystemService
(
Context
.
WIFI_SERVICE
)
as
WifiManager
// 判断WiFi是否开启
// 判断WiFi是否开启
if (wifiManager.isWifiEnabled) {
return
if
(
wifiManager
.
isWifiEnabled
)
{
// 已经开启了WiFi
// 已经开启了WiFi
val
wifiInfo
=
wifiManager
.
connectionInfo
val
wifiInfo
=
wifiManager
.
connectionInfo
val
ipAddress
=
wifiInfo
.
ipAddress
val
ipAddress
=
wifiInfo
.
ipAddress
return
intToIp(ipAddress)
intToIp
(
ipAddress
)
}
else
{
}
else
{
// 未开启WiFi
// 未开启WiFi
return
getIpAddress()
getIpAddress
()
}
}
}
}
...
@@ -457,13 +201,13 @@ class ActionCountUtils {
...
@@ -457,13 +201,13 @@ class ActionCountUtils {
}
}
fun
getLocalIPAddress
():
String
{
fun
getLocalIPAddress
():
String
{
va
r
en: Enumeration<NetworkInterface> = NetworkInterface.getNetworkInterfaces()
va
l
en
:
Enumeration
<
NetworkInterface
>
=
NetworkInterface
.
getNetworkInterfaces
()
while
(
en
.
hasMoreElements
())
{
while
(
en
.
hasMoreElements
())
{
va
r
intf: NetworkInterface = en.nextElement()
va
l
intf
:
NetworkInterface
=
en
.
nextElement
()
va
r
enumIpAddr: Enumeration<InetAddress> = intf.inetAddresses
va
l
enumIpAddr
:
Enumeration
<
InetAddress
>
=
intf
.
inetAddresses
while
(
enumIpAddr
.
hasMoreElements
())
{
while
(
enumIpAddr
.
hasMoreElements
())
{
va
r
inetAddress: InetAddress = enumIpAddr.nextElement()
va
l
inetAddress
:
InetAddress
=
enumIpAddr
.
nextElement
()
if
(!
inetAddress
.
isLoopbackAddress
&&
(
inetAddress
is
Inet4Address
))
{
if
(!
inetAddress
.
isLoopbackAddress
&&
(
inetAddress
is
Inet4Address
))
{
return
inetAddress
.
getHostAddress
().
toString
()
return
inetAddress
.
getHostAddress
().
toString
()
...
@@ -473,18 +217,18 @@ class ActionCountUtils {
...
@@ -473,18 +217,18 @@ class ActionCountUtils {
return
"null"
return
"null"
}
}
*/
/**
/**
* 判断是否是wifi
* 判断是否是wifi
*/
/*
*/
private
fun
isWifi
():
Boolean
{
private
fun
isWifi
():
Boolean
{
try
{
try
{
va
r
connectivityManager: ConnectivityManager =
va
l
connectivityManager
:
ConnectivityManager
=
RxTool
.
getContext
()
RxTool
.
getContext
()
.
getSystemService
(
Context
.
CONNECTIVITY_SERVICE
)
as
ConnectivityManager
.
getSystemService
(
Context
.
CONNECTIVITY_SERVICE
)
as
ConnectivityManager
va
r
info: NetworkInfo = connectivityManager.activeNetworkInfo
va
l
info
:
NetworkInfo
=
connectivityManager
.
activeNetworkInfo
if (info
!= null && info
.type == ConnectivityManager.TYPE_WIFI) {
if
(
info
.
type
==
ConnectivityManager
.
TYPE_WIFI
)
{
return
true
return
true
}
}
return
false
return
false
...
@@ -494,4 +238,4 @@ class ActionCountUtils {
...
@@ -494,4 +238,4 @@ class ActionCountUtils {
}
}
}
}
}
*/
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment