一键连新增百度埋点统计

This commit is contained in:
level 2025-06-19 16:56:50 +08:00
parent cca042f8eb
commit 1cd8f98921
17 changed files with 120 additions and 172 deletions

View File

@ -14,6 +14,7 @@ plugins {
dependencies {
implementation(fileTree(mapOf("dir" to "src/main/libs", "include" to listOf("*.aar"))))
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
implementation(files("src\\main\\libs\\Baidu_ocpc_action_2_7_2.aar"))
// implementation(files("src\\main\\libs\\OpenInstall_v2.8.5.jar"))
// implementation("com.google.firebase:firebase-crashlytics-buildtools:3.0.2")
// implementation(files("src/main/libs/openinstall.jar"))
@ -113,14 +114,14 @@ dependencies {
// implementation("com.luozm.captcha:captcha:1.1.2")
// implementation("com.aliyun.dpa:oss-android-sdk:2.9.19")
// implementation ("com.hihonor.mcs:ads-identifier:1.0.3.301")
// implementation("com.github.gzu-liyujiang:Android_CN_OAID:4.2.8") {
// exclude("com.hihonor.mcs", "ads-identifier")
// exclude("com.huawei.hms", "ads-identifier")
// }
implementation("com.github.gzu-liyujiang:Android_CN_OAID:4.2.8") {
exclude("com.hihonor.mcs", "ads-identifier")
exclude("com.huawei.hms", "ads-identifier")
}
// 华为的最新版本广告标识服务SDK参阅 https://developer.huawei.com/consumer/cn/doc/HMSCore-Guides/identifier-service-version-change-history-0000001050066927
// api ("com.huawei.hms:ads-identifier:3.4.62.300")
api ("com.huawei.hms:ads-identifier:3.4.62.300")
// // 荣耀的最新版本广告标识服务SDK参阅 https://developer.hihonor.com/cn/kitdoc?kitId=11030&navigation=guides&docId=intergrate.md
// api ("com.hihonor.mcs:ads-identifier:1.0.2.301")
api ("com.hihonor.mcs:ads-identifier:1.0.2.301")
//stripe 支付
implementation("com.stripe:stripe-android:21.4.2")// 使用最新版本
implementation("com.github.getActivity:XXPermissions:20.0")

View File

@ -146,7 +146,7 @@ class AgreementAndPrivacyActivity : BaseActivity() {
}
"English" -> {
webView.loadUrl("file:android_asset/privacy_en.html")
webView.loadUrl("https://yjl.zuoyou852.top/privacy.html")
}
}
}

View File

@ -10,6 +10,8 @@ import android.widget.Toast
import androidx.appcompat.widget.AppCompatImageView
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.observe
import com.baidu.mobads.action.ActionType
import com.baidu.mobads.action.BaiduAction
import com.yingmao.clash.view.dialog.RxDialogShapeLoading
import com.tencent.mmkv.MMKV
@ -144,8 +146,9 @@ class BandPhoneActivity : BaseActivity() {
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_PH_TOKEN)
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_TOKEN)
MMKV.defaultMMKV().removeValueForKey(BZYConstants.MMKV_KEY_CURRENT_NODE)
//百度埋点完成注册
BaiduAction.logAction(ActionType.REGISTER)
var intent=Intent(CommonUtils.getApp(), LoginActivity::class.java)
intent.putExtra(BZYConstants.EXTRA_Bind_Account,phoneNumber)
startActivity(intent)
finish()

View File

@ -31,6 +31,8 @@ import androidx.viewpager2.widget.ViewPager2
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.customview.customView
import com.afollestad.materialdialogs.customview.getCustomView
import com.baidu.mobads.action.ActionType
import com.baidu.mobads.action.BaiduAction
import com.cncat.vpn.common.log.Log
import com.cncat.vpn.core.model.LogMessage
import com.cncat.vpn.service.ClashManager
@ -493,6 +495,7 @@ class NewMainActivity : BaseActivity() {
checkPayResultDia?.dismiss()
mainAtyVM.getAirNodes()
RxToast.info(resources.getString(R.string.SuccessfullyUpdatedUserInformation))
BaiduAction.logAction(ActionType.PURCHASE)
} else {
// RxToast.info(resources.getString(R.string.PaymentResultsStr))
}

View File

@ -35,18 +35,24 @@ import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.customview.customView
import com.baidu.mobads.action.ActionType
import com.baidu.mobads.action.BaiduAction
import com.baidu.mobads.action.PrivacyStatus
import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.SimpleTarget
import com.bumptech.glide.request.transition.Transition
import com.cncat.vpn.service.ClashManager
import com.cncat.vpn.service.remote.IClashManager
import com.cncat.vpn.service.remote.wrap
import com.github.gzuliyujiang.oaid.DeviceID
import com.github.gzuliyujiang.oaid.IGetter
import com.google.gson.JsonObject
import com.orhanobut.logger.Logger
import com.tencent.mmkv.MMKV
import com.yingmao.clash.BuildConfig
import com.yingmao.clash.R
import com.yingmao.clash.app.MainApplication
import com.yingmao.clash.app.MainApplication.Companion.OAID
import com.yingmao.clash.base.BaseActivity
import com.yingmao.clash.captcha.Captcha
import com.yingmao.clash.conf.BZYConstants
@ -174,6 +180,29 @@ class SplashActivity : BaseActivity() {
private fun initApplication(isNeedRegister: Boolean) {
username = Utils.getUniqueID(this)
MainApplication.initUtil()
var oaId= OAID
Log.i("SplashActOAID","OAID::"+ OAID +"oaId.isEmpty()::"+oaId.isEmpty())
if(oaId.isEmpty()){
DeviceID.getOAID(this, object : IGetter {
override fun onOAIDGetComplete(result: String) {
// 不同厂商的OAID/AAID格式是不一样的可进行MD5、SHA1之类的哈希运算统一
Log.i("SplashActOAID","result::"+result)
BaiduAction.setOaid(result)
//设置同意隐私政策激活设备
BaiduAction.setPrivacyStatus(PrivacyStatus.AGREE)
}
override fun onOAIDGetError(error: Exception) {
// 获取OAID/AAID失败
com.cncat.vpn.common.log.Log.d("OAID 获取失败 ${error}")
error.printStackTrace()
}
})
}else{
BaiduAction.setOaid(oaId)
//设置同意隐私政策激活设备
BaiduAction.setPrivacyStatus(PrivacyStatus.AGREE)
}
setLocalLanguage()
// splashAtyVM.getSplashBg()
var clashBinder = MainApplication.getApp()?.let {

View File

@ -12,9 +12,13 @@ import android.os.Build
import androidx.annotation.RequiresApi
import androidx.core.content.ContextCompat.getString
import androidx.core.content.getSystemService
import com.baidu.mobads.action.BaiduAction
import com.cncat.vpn.common.Global
import com.cncat.vpn.common.compat.currentProcessName
import com.cncat.vpn.common.log.Log
import com.github.gzuliyujiang.oaid.DeviceID
import com.github.gzuliyujiang.oaid.DeviceIdentifier
import com.github.gzuliyujiang.oaid.IGetter
import com.jakewharton.processphoenix.ProcessPhoenix
import com.orhanobut.logger.Logger
@ -23,6 +27,7 @@ import com.tencent.mmkv.MMKV
import com.yingmao.clash.R
import com.yingmao.clash.act.SplashActivity
import com.yingmao.clash.conf.BZYConstants
import com.yingmao.clash.conf.Constants
import com.yingmao.clash.entity.UserData
import com.yingmao.clash.util.CrashCatchHandler
import com.yingmao.clash.util.clashDir
@ -91,7 +96,7 @@ class MainApplication : Application() {
fun initUtil() {
getApp()?.let { mainApplication ->
// DeviceIdentifier.register(mApp)
DeviceIdentifier.register(mApp)
val processName = mainApplication.currentProcessName
mainApplication.extractGeoFiles()
@ -104,21 +109,21 @@ class MainApplication : Application() {
val crashCatchHandler: CrashCatchHandler = CrashCatchHandler.getInstance() //获得单例
crashCatchHandler.init(mainApplication) //初始化,传入context
//
// if (DeviceID.supportedOAID(mainApplication)) {
// // 获取OAID/AAID异步回调
// DeviceID.getOAID(mainApplication, object : IGetter {
// override fun onOAIDGetComplete(result: String) {
// // 不同厂商的OAID/AAID格式是不一样的可进行MD5、SHA1之类的哈希运算统一
// Log.d("onOAIDGetComplete ${result}")
// OAID = result
// }
//
// override fun onOAIDGetError(error: Exception) {
// // 获取OAID/AAID失败
// error.printStackTrace()
// }
// })
// }
if (DeviceID.supportedOAID(mainApplication)) {
// 获取OAID/AAID异步回调
DeviceID.getOAID(mainApplication, object : IGetter {
override fun onOAIDGetComplete(result: String) {
// 不同厂商的OAID/AAID格式是不一样的可进行MD5、SHA1之类的哈希运算统一
Log.d("onOAIDGetComplete ${result}")
OAID = result
}
override fun onOAIDGetError(error: Exception) {
// 获取OAID/AAID失败
error.printStackTrace()
}
})
}
//openinstall
// OpenInstall.init(applicationContext);
PaymentConfiguration.init(
@ -151,7 +156,13 @@ class MainApplication : Application() {
// if (privacyPolicyAgreed) {
// }
// 是否在控制台输出⽇志可⽤于观察⽤⼾⾏为⽇志上报情况建议仅在调试时使⽤release版 请设置为false
BaiduAction.setPrintLog(false)
// 是否允许通过应用商店获取referrer信息仅支持华为、小米默认true
BaiduAction.enableMarketReferrer(true)
BaiduAction.init(this, Constants.USER_ACTION_SET_ID, Constants.APP_SECRET_KEY)
// 设置应用激活的间隔,此方法在初始化成功后才有意义,建议在初始化后执行,具体执行的时机没有限制
BaiduAction.setActivateInterval(this, 7)
}

View File

@ -0,0 +1,9 @@
package com.yingmao.clash.conf;
public class Constants {
// SDK应用ID 示例,需要在百度申请
public static long USER_ACTION_SET_ID = 22209;
// SDK应用密钥 示例需要在百度申请
public static String APP_SECRET_KEY = "d1af5d8ba02d88b3c03916207f67401b";
}

View File

@ -1,114 +0,0 @@
package com.yingmao.clash.view.dialog
import android.app.Activity
import android.content.Context
import android.content.DialogInterface
import android.view.LayoutInflater
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import com.yingmao.clash.R
import com.yingmao.clash.conf.PayType
/**
* @author tamsiree
* @date 2016/7/19
* 确认 取消 Dialog
*/
open class DialogSelectServerChoose : RxDialog {
lateinit var titleView: TextView
private set
lateinit var rb_wxpay: View
private set
lateinit var rb_alipay: View
private set
lateinit var rb_typay: View
private set
lateinit var rb_alipay_app: View
private set
lateinit var rg_pay_type: LinearLayout
private set
lateinit var onPayTypeCheckedListener: OnPayTypeCheckedListener
private set
private var title: String = ""
constructor(context: Context?, themeResId: Int) : super(context!!, themeResId) {
initView()
}
constructor(context: Context?, cancelable: Boolean, cancelListener: DialogInterface.OnCancelListener?) : super(context!!, cancelable, cancelListener) {
initView()
}
constructor(context: Context?) : super(context!!) {
initView()
}
constructor(context: Activity?) : super(context!!) {
initView()
}
constructor(context: Context?, alpha: Float, gravity: Int) : super(context, alpha, gravity) {
initView()
}
private fun initView() {
val dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_select_server_choose, null)
titleView = dialogView.findViewById(R.id.tv_title)
rg_pay_type = dialogView.findViewById(R.id.rg_pay_type)
rb_alipay = dialogView.findViewById(R.id.rb_alipay)
rb_typay = dialogView.findViewById(R.id.rb_typay)
rb_alipay_app = dialogView.findViewById(R.id.rb_alipay_app)
rb_wxpay = dialogView.findViewById(R.id.rb_wxpay)
if (title.isBlank()) {
titleView.visibility = View.GONE
}
setContentView(dialogView)
rb_alipay_app.setOnClickListener {
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_ALI_APP)
}
rb_alipay.setOnClickListener {
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_ALI)
}
rb_wxpay.setOnClickListener {
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_WX)
}
rb_typay.setOnClickListener {
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_Stripe)
}
dialogView.findViewById<ImageView>(R.id.iv_bilai_zfb).setOnClickListener {
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_BiLai_ZFB)
}
dialogView.findViewById<ImageView>(R.id.iv_bilai_wx).setOnClickListener {
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_BiLai_WX)
}
dialogView.findViewById<ImageView>(R.id.iv_bilai_jd).setOnClickListener {
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_BiLai_ZFB)
}
dialogView.findViewById<LinearLayout>(R.id.ll_bilai_url).setOnClickListener {
onPayTypeCheckedListener.onPayTypeChecked(PayType.PAY_TYPE_BiLai_WEB)
}
}
fun setOnPayTypeCheckedListener(onPayTypeCheckedListener : OnPayTypeCheckedListener){
this.onPayTypeCheckedListener = onPayTypeCheckedListener
}
interface OnPayTypeCheckedListener{
fun onPayTypeChecked(payType :String)
}
fun setTitle(titleStr: String) {
title = titleStr
if (title.isBlank()) {
titleView.visibility = View.GONE
return
}
titleView.visibility = View.VISIBLE
titleView.text = title
}
}

Binary file not shown.

View File

@ -25,7 +25,7 @@
app:layout_constraintHeight_percent="0.11"
android:layout_height="0dp"
android:layout_marginTop="@dimen/dp_15"
android:background="@drawable/activity_bt_shape"
android:background="@drawable/oc_login_bg"
android:text="@string/recharge"
android:textColor="@color/white"
android:textSize="18sp"
@ -46,5 +46,7 @@
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="20dp"
android:layout_marginTop="@dimen/dp_15"
app:srcCompat="@drawable/ic_close_activity" />
app:srcCompat="@drawable/ic_close_activity"
android:tint="#B36C1B"
/>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -2,7 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/pay_dialog_bg"
android:background="@drawable/oc_activity_add_group_bg"
android:gravity="center"
android:orientation="vertical">
@ -16,7 +16,7 @@
android:layout_marginRight="20dp"
android:gravity="center"
android:text="@string/DeviceBinding"
android:textColor="@color/blue_4072FE"
android:textColor="#B36C1B"
android:textSize="18sp"
android:textStyle="bold" />
@ -32,8 +32,8 @@
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_weight="1"
android:background="@drawable/activity_close_bg"
android:textColor="@color/blue_4072FE"
android:background="@drawable/oc_login_bg"
android:textColor="@color/white"
android:gravity="center"
android:paddingLeft="20dp"
android:paddingTop="@dimen/dp_10"
@ -49,7 +49,7 @@
android:layout_marginLeft="50dp"
android:layout_marginBottom="20dp"
android:layout_weight="1"
android:background="@drawable/activity_jump_bg"
android:background="@drawable/oc_login_bg"
android:textColor="@color/white"
android:gravity="center"
android:paddingLeft="20dp"

View File

@ -13,7 +13,7 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@drawable/activity_bg"
android:background="@drawable/oc_activity_add_group_bg"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
@ -31,7 +31,7 @@
android:layout_marginBottom="10dp"
android:gravity="center"
android:text="@string/sure_restart"
android:textColor="@color/blue_4072FE"
android:textColor="#B36C1B"
android:textSize="16sp"
android:textStyle="bold" />
@ -44,7 +44,8 @@
android:id="@+id/but_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/activity_close_bg"
android:background="@drawable/oc_login_bg"
android:textColor="@color/white"
android:layout_weight="1"
android:gravity="center"
android:paddingTop="5dp"
@ -55,7 +56,8 @@
android:id="@+id/but_try"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/activity_jump_bg"
android:background="@drawable/oc_login_bg"
android:textColor="@color/white"
android:layout_marginStart="10dp"
android:layout_weight="1"
android:gravity="center"

View File

@ -15,7 +15,7 @@
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:background="@drawable/activity_bingding_bg"
android:background="@drawable/oc_activity_add_group_bg"
android:layout_marginStart="@dimen/dp_10"
android:layout_marginEnd="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_10"
@ -38,7 +38,7 @@
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/VersionUpdate"
android:textColor="#4072FE"
android:textColor="#B36C1B"
android:textSize="16sp"
android:textStyle="bold"
/>
@ -54,7 +54,7 @@
android:autoLink="web"
android:gravity="left"
android:textColor="#4072FE"
android:textColor="#B36C1B"
android:textSize="14sp" />
<TextView
@ -66,7 +66,7 @@
android:layout_marginEnd="10dp"
android:autoLink="web"
android:gravity="left"
android:textColor="#4072FE"
android:textColor="#B36C1B"
android:textSize="13sp" />
<LinearLayout
android:id="@+id/down_pb_ll"
@ -91,7 +91,7 @@
android:layout_weight="1"
android:text="0%"
android:textSize="14sp"
android:textColor="#4072FE"
android:textColor="#B36C1B"
android:layout_marginEnd="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
@ -115,7 +115,7 @@
android:textSize="16sp"
android:visibility="visible"
android:layout_weight="1"
android:background="@drawable/activity_close_bg"
android:background="@drawable/oc_login_bg"
android:gravity="center"
android:paddingLeft="20dp"
android:paddingTop="@dimen/dp_10"
@ -123,7 +123,7 @@
android:paddingBottom="@dimen/dp_10"
android:text="@string/close"
android:layout_marginStart="@dimen/dp_10"
android:textColor="@color/blue_4072FE"
android:textColor="@color/white"
/>
<TextView
@ -135,7 +135,7 @@
android:layout_marginEnd="@dimen/dp_10"
android:layout_marginStart="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/activity_jump_bg"
android:background="@drawable/oc_login_bg"
android:textColor="@color/white"
android:gravity="center"
android:paddingLeft="20dp"

View File

@ -13,7 +13,7 @@
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@drawable/activity_bg"
android:background="@drawable/oc_activity_add_group_bg"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
@ -31,7 +31,7 @@
android:layout_marginBottom="10dp"
android:gravity="center"
android:text="@string/domain_warn"
android:textColor="@color/blue_4072FE"
android:textColor="#B36C1B"
android:textSize="16sp"
android:textStyle="bold" />
@ -62,7 +62,8 @@
android:id="@+id/but_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/activity_close_bg"
android:background="@drawable/oc_login_bg"
android:textColor="@color/white"
android:layout_weight="1"
android:gravity="center"
android:paddingTop="5dp"
@ -74,7 +75,8 @@
android:id="@+id/but_try"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/activity_jump_bg"
android:background="@drawable/oc_login_bg"
android:textColor="@color/white"
android:layout_marginStart="10dp"
android:layout_weight="1"
android:gravity="center"

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/show_loading_bg"
android:background="@drawable/oc_activity_add_group_bg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
@ -20,7 +20,7 @@
<ProgressBar
android:layout_centerHorizontal="true"
android:indeterminateTint="@color/blue_4072FE"
android:indeterminateTint="#B36C1B"
android:id="@+id/pg"
android:layout_width="70dp"
android:layout_height="70dp"/>
@ -32,7 +32,7 @@
<!-- android:layout_height="wrap_content"/>-->
<TextView
android:id="@+id/tv_dialog_msg"
android:textColor="@color/blue_4072FE"
android:textColor="#B36C1B"
android:textSize="16sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@ -16,7 +16,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/activity_bg"
android:background="@drawable/oc_activity_add_group_bg"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintStart_toStartOf="parent"
@ -31,7 +31,7 @@
android:textStyle="bold"
android:gravity="center"
android:textSize="16sp"
android:textColor="#4F4F4F"
android:textColor="#B36C1B"
android:text="@string/sptips"
android:layout_marginTop="60dp"
android:layout_marginStart="21dp"
@ -84,7 +84,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/activity_close_bg"
android:background="@drawable/oc_login_bg"
android:gravity="center"
android:paddingLeft="20dp"
android:paddingTop="5dp"
@ -92,7 +92,7 @@
android:paddingBottom="5dp"
android:text="@string/close"
android:layout_marginStart="@dimen/dp_10"
android:textColor="@color/blue_4072FE" />
android:textColor="@color/white" />
<TextView
android:id="@+id/tv_pay_finish"
@ -103,7 +103,7 @@
android:layout_marginEnd="@dimen/dp_10"
android:layout_marginStart="@dimen/dp_10"
android:layout_weight="1"
android:background="@drawable/activity_jump_bg"
android:background="@drawable/oc_login_bg"
android:textColor="@color/white"
android:gravity="center"
android:paddingLeft="20dp"

View File

@ -138,7 +138,7 @@ subprojects {
)
)
}
create("9505") {
create("2977") {
isDefault = true
dimension = flavorDimensionList[0]
buildConfigField("boolean", "PREMIUM", "Boolean.parseBoolean(\"false\")")
@ -149,7 +149,7 @@ subprojects {
buildConfigField("String", "applicationId", "\"com.jsq.wufu\"")
buildConfigField("String", "service_url", "\"https://api.yijianlianjsq.com/\"")
buildConfigField("boolean", "is_free", "false")
buildConfigField("String", "productId", "\"9505\"")
buildConfigField("String", "productId", "\"2977\"")
manifestPlaceholders(
mapOf(
"APP_NAME" to "@string/wf",