diff --git a/app/src/default/java/com/gh/gamecenter/provider/FlavorProviderImp.kt b/app/src/default/java/com/gh/gamecenter/provider/FlavorProviderImp.kt index 60db253c3f..a472cc328d 100644 --- a/app/src/default/java/com/gh/gamecenter/provider/FlavorProviderImp.kt +++ b/app/src/default/java/com/gh/gamecenter/provider/FlavorProviderImp.kt @@ -26,7 +26,7 @@ class FlavorProviderImp : IFlavorProvider { return channel } - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { // do nothing } diff --git a/app/src/gdt/java/com/gh/gamecenter/provider/FlavorProviderImp.kt b/app/src/gdt/java/com/gh/gamecenter/provider/FlavorProviderImp.kt index 3f10aa4b89..dad3c0358c 100644 --- a/app/src/gdt/java/com/gh/gamecenter/provider/FlavorProviderImp.kt +++ b/app/src/gdt/java/com/gh/gamecenter/provider/FlavorProviderImp.kt @@ -12,7 +12,7 @@ import com.leon.channel.helper.ChannelReaderUtil class FlavorProviderImp : IFlavorProvider { - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { GdtHelper.init(application, getChannelStr(application)) if (HaloApp.getInstance().isBrandNewInstall) { diff --git a/app/src/kuaishou/java/com/gh/gamecenter/provider/FlavorProviderImp.kt b/app/src/kuaishou/java/com/gh/gamecenter/provider/FlavorProviderImp.kt index b5a1a2e550..fad34869ec 100644 --- a/app/src/kuaishou/java/com/gh/gamecenter/provider/FlavorProviderImp.kt +++ b/app/src/kuaishou/java/com/gh/gamecenter/provider/FlavorProviderImp.kt @@ -12,7 +12,7 @@ import com.leon.channel.helper.ChannelReaderUtil class FlavorProviderImp : IFlavorProvider { - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { KuaishouHelper.init(application, getChannelStr(application)) if (HaloApp.getInstance().isBrandNewInstall) { diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt index 54937654bb..22833a8d20 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.kt @@ -299,7 +299,7 @@ class SplashScreenActivity : BaseActivity() { } private fun doFlavorInit() { - HaloApp.getInstance().flavorProvider.init(HaloApp.getInstance(), this) + HaloApp.getInstance().flavorProvider.init(HaloApp.getInstance(), this, PkgHelper.getActivateRatio()) // 仅官网渠道和测试包启用神策 if ("GH_206" == HaloApp.getInstance().channel || PackageFlavorHelper.IS_TEST_FLAVOR) { diff --git a/app/src/main/java/com/gh/gamecenter/pkg/PkgHelper.kt b/app/src/main/java/com/gh/gamecenter/pkg/PkgHelper.kt index 9373eae7fc..921b67f065 100644 --- a/app/src/main/java/com/gh/gamecenter/pkg/PkgHelper.kt +++ b/app/src/main/java/com/gh/gamecenter/pkg/PkgHelper.kt @@ -15,10 +15,23 @@ object PkgHelper { private var mPkgConfigLink: PkgConfigEntity.PkgLinkEntity? = null private const val SP_PKG_CONFIG_IS_USED = "pkg_config_is_used" + private var mActivateRatioFromInternet = 0 + private val mPkgProvider by lazy { ARouter.getInstance().build(RouteConsts.provider.pkg).navigation() as? IPkgProvider } + /** + * 获取激活比例 + */ + fun getActivateRatio() : Int { + return if (mActivateRatioFromInternet > 0) { + mActivateRatioFromInternet + } else { + BuildConfig.ACTIVATE_REPORTING_RATIO + } + } + fun getPkgConfig(isFromHomeTopTab: Boolean): PkgConfigEntity.PkgLinkEntity? { if (mPkgConfigLink == null && !SPUtils.getBoolean(SP_PKG_CONFIG_IS_USED, false) @@ -56,7 +69,9 @@ object PkgHelper { mPkgProvider?.requestPkgConfig(configId) { mPkgConfigLink = it.data?.link + mActivateRatioFromInternet = it.data?.activateRatio ?: 0 } + } } \ No newline at end of file diff --git a/app/src/tea/java/com/gh/gamecenter/provider/FlavorProviderImp.kt b/app/src/tea/java/com/gh/gamecenter/provider/FlavorProviderImp.kt index dcbb332e2e..6628fc663f 100644 --- a/app/src/tea/java/com/gh/gamecenter/provider/FlavorProviderImp.kt +++ b/app/src/tea/java/com/gh/gamecenter/provider/FlavorProviderImp.kt @@ -2,6 +2,7 @@ package com.gh.gamecenter.provider import android.app.Activity import android.app.Application +import android.os.Environment import android.text.TextUtils import com.gh.gamecenter.BuildConfig import com.bytedance.hume.readapk.HumeSDK @@ -10,30 +11,34 @@ import com.gh.gamecenter.core.provider.IFlavorProvider import com.gh.gamecenter.core.utils.SPUtils import com.gh.gamecenter.core.utils.TimeUtils import com.halo.assistant.HaloApp +import com.lightgame.utils.Utils +import java.io.File class FlavorProviderImp : IFlavorProvider { private var mIsLuckyEnoughToUseTea = true - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { - mIsLuckyEnoughToUseTea = amILucky(BuildConfig.ACTIVATE_REPORTING_RATIO) + mIsLuckyEnoughToUseTea = amILucky(activateRatio) if (mIsLuckyEnoughToUseTea) { TeaHelper.init(application, activity, getChannelStr(application)) if (HaloApp.getInstance().isBrandNewInstall) { - SPUtils.setLong("TIME_OF_BRAND_NEW_INSTALL", System.currentTimeMillis() / 1000) + SPUtils.setLong(KEY_TIME_OF_BRAND_NEW_INSTALL, System.currentTimeMillis() / 1000) } else { val shouldSendRetentionLogEvent = - SPUtils.getBoolean("SHOULD_SEND_RETENTION_EVENT", true) + SPUtils.getBoolean(KEY_SHOULD_SEND_RETENTION_EVENT, true) val installTimeNotToday = - !TimeUtils.isToday(SPUtils.getLong("TIME_OF_BRAND_NEW_INSTALL", System.currentTimeMillis() / 1000)) + !TimeUtils.isToday(SPUtils.getLong(KEY_TIME_OF_BRAND_NEW_INSTALL, System.currentTimeMillis() / 1000)) if (shouldSendRetentionLogEvent && installTimeNotToday) { - logEvent("retention_2d") - SPUtils.setBoolean("SHOULD_SEND_RETENTION_EVENT", false) + logEvent(RETENTION_2D) + SPUtils.setBoolean(KEY_SHOULD_SEND_RETENTION_EVENT, false) } } + } else { + SPUtils.setBoolean(KEY_UNLUCKY, true) } } @@ -52,8 +57,19 @@ class FlavorProviderImp : IFlavorProvider { } private fun amILucky(percentage: Int = 100): Boolean { + // 若上一次已经标记不幸运了,那就不再进行是否足够幸运的判断 + if (SPUtils.getBoolean(KEY_UNLUCKY)) return false + val randomNumber = (0..100).random() return randomNumber <= percentage } + companion object { + const val RETENTION_2D = "retention_2d" + + const val KEY_UNLUCKY = "UNLUCKY" + const val KEY_TIME_OF_BRAND_NEW_INSTALL = "TIME_OF_BRAND_NEW_INSTALL" + const val KEY_SHOULD_SEND_RETENTION_EVENT = "SHOULD_SEND_RETENTION_EVENT" + } + } \ No newline at end of file diff --git a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt index b57ec47512..84d5b3ec32 100644 --- a/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt +++ b/feature/floating-window/src/demo/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt @@ -74,7 +74,7 @@ class AppProviderImpl : IAppProvider { return "" } - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { // do nothing } diff --git a/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt b/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt index 36d617cca9..4806bb7f88 100644 --- a/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt +++ b/feature/pkg/src/pkg/java/com/gh/gamecenter/pkg/provider/AppProviderImpl.kt @@ -70,7 +70,7 @@ class AppProviderImpl : IAppProvider { return "" } - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { // do nothing } diff --git a/feature/vpn/src/vpn/java/com/gh/gamecenter/vpn/provider/AppProviderImpl.kt b/feature/vpn/src/vpn/java/com/gh/gamecenter/vpn/provider/AppProviderImpl.kt index 04ebe6b81e..0fc78f5d96 100644 --- a/feature/vpn/src/vpn/java/com/gh/gamecenter/vpn/provider/AppProviderImpl.kt +++ b/feature/vpn/src/vpn/java/com/gh/gamecenter/vpn/provider/AppProviderImpl.kt @@ -70,7 +70,7 @@ class AppProviderImpl : IAppProvider { return "" } - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { // do nothing } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/entity/PkgConfigEntity.kt b/module_common/src/main/java/com/gh/gamecenter/common/entity/PkgConfigEntity.kt index 98059fd891..55b83164f8 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/entity/PkgConfigEntity.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/entity/PkgConfigEntity.kt @@ -8,6 +8,7 @@ class PkgConfigEntity( ) { data class Data( @SerializedName("first_lanuch_jump") var link: PkgLinkEntity? = PkgLinkEntity(), + @SerializedName("activate_reporting_ratio") var activateRatio: Int? = 0, ) class PkgLinkEntity( diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IFlavorProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IFlavorProvider.kt index b386f28b8c..afc4151235 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IFlavorProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IFlavorProvider.kt @@ -7,7 +7,12 @@ interface IFlavorProvider { fun getChannelStr(application: Application): String - fun init(application: Application, activity: Activity) + /** + * 初始化对应 SDK + * + * @param activateRatio 调用初始化的概率,取值为 0 ~ 100,如传入 60 时,代表有 60% 的概率进行 SDK 初始化 + */ + fun init(application: Application, activity: Activity, activateRatio: Int) fun logEvent(content: String) diff --git a/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt b/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt index 0940657a8b..7eb912ca63 100644 --- a/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt +++ b/module_feedback/src/feedback/java/com/gh/gamecenter/feedback/provider/AppProviderImpl.kt @@ -74,7 +74,7 @@ class AppProviderImpl : IAppProvider { return "" } - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { // do nothing } diff --git a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt index fa3c60221b..aa25862f80 100644 --- a/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt +++ b/module_setting/src/setting/java/com/gh/gamecenter/setting/provider/AppProviderImpl.kt @@ -62,7 +62,7 @@ class AppProviderImpl : IAppProvider { return "" } - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { // do nothing } diff --git a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt index a1c3e48585..1259565292 100644 --- a/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt +++ b/module_setting_compose/src/setting/java/com/gh/gamecenter/setting/compose/provider/AppProviderImpl.kt @@ -62,7 +62,7 @@ class AppProviderImpl : IAppProvider { return "" } - override fun init(application: Application, activity: Activity) { + override fun init(application: Application, activity: Activity, activateRatio: Int) { // do nothing }