Merge branch 'fix/csj-privacy-issue' into 'dev'

fix: 处理穿山甲 SDK 的自动初始化问题,穿山甲 SDK 区分测试和正式 ID

See merge request halo/android/assistant-android!1288
This commit is contained in:
陈君陶
2023-08-28 09:51:41 +08:00
8 changed files with 36 additions and 7 deletions

View File

@ -188,6 +188,7 @@ android {
buildConfigField "String", "DEV_VAPI_HOST", "\"${DEV_VAPI_HOST}\""
buildConfigField "String", "QUICK_LOGIN_APPID", "\"${DEV_QUICK_LOGIN_APPID}\""
buildConfigField "String", "QUICK_LOGIN_APPKEY", "\"${DEV_QUICK_LOGIN_APPKEY}\""
buildConfigField "String", "CSJ_APPID", "\"${DEV_CSJ_APPID}\""
}
// publish 发布时候使用的 flavor接口仅包含正式环境
@ -199,6 +200,7 @@ android {
buildConfigField "String", "DEV_VAPI_HOST", "\"${VAPI_HOST}\""
buildConfigField "String", "QUICK_LOGIN_APPID", "\"${QUICK_LOGIN_APPID}\""
buildConfigField "String", "QUICK_LOGIN_APPKEY", "\"${QUICK_LOGIN_APPKEY}\""
buildConfigField "String", "CSJ_APPID", "\"${CSJ_APPID}\""
}
tea {
@ -209,6 +211,7 @@ android {
buildConfigField "String", "DEV_VAPI_HOST", "\"${VAPI_HOST}\""
buildConfigField "String", "QUICK_LOGIN_APPID", "\"${QUICK_LOGIN_APPID}\""
buildConfigField "String", "QUICK_LOGIN_APPKEY", "\"${QUICK_LOGIN_APPKEY}\""
buildConfigField "String", "CSJ_APPID", "\"${CSJ_APPID}\""
manifestPlaceholders.put("APPLOG_SCHEME", "rangersapplog.byAx6uYt".toLowerCase())
}
@ -221,6 +224,7 @@ android {
buildConfigField "String", "DEV_VAPI_HOST", "\"${VAPI_HOST}\""
buildConfigField "String", "QUICK_LOGIN_APPID", "\"${QUICK_LOGIN_APPID}\""
buildConfigField "String", "QUICK_LOGIN_APPKEY", "\"${QUICK_LOGIN_APPKEY}\""
buildConfigField "String", "CSJ_APPID", "\"${CSJ_APPID}\""
}
gdt {
@ -231,6 +235,7 @@ android {
buildConfigField "String", "DEV_VAPI_HOST", "\"${VAPI_HOST}\""
buildConfigField "String", "QUICK_LOGIN_APPID", "\"${QUICK_LOGIN_APPID}\""
buildConfigField "String", "QUICK_LOGIN_APPKEY", "\"${QUICK_LOGIN_APPKEY}\""
buildConfigField "String", "CSJ_APPID", "\"${CSJ_APPID}\""
}
}
}

View File

@ -17,6 +17,7 @@ import com.gh.common.exposure.ExposureManager
import com.gh.common.util.DirectUtils.directToLinkPage
import com.gh.common.util.LogUtils
import com.gh.common.util.NewFlatLogUtils.logOpenScreenAdSkip
import com.gh.gamecenter.BuildConfig
import com.gh.gamecenter.MainActivity
import com.gh.gamecenter.R
import com.gh.gamecenter.common.base.activity.BaseActivity
@ -159,7 +160,7 @@ object AdDelegateHelper {
if (mIsCsjRequired && mCsjAdImpl == null) {
mCsjAdImpl =
ARouter.getInstance().build(RouteConsts.provider.csjAd).navigation() as? ICsjAdProvider
mCsjAdImpl?.initSDK(context, HaloApp.getInstance().oaid)
mCsjAdImpl?.initSDK(context, BuildConfig.CSJ_APPID, HaloApp.getInstance().oaid)
// 监听亮色/暗色模式切换
DarkModeUtils.registerModeChangeListener {
val topActivity = CurrentActivityHolder.getCurrentActivity() ?: return@registerModeChangeListener

View File

@ -18,4 +18,5 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
#-renamesourcefileattribute SourceFile
-keep class android.content.ContentProvider {<fields>;}

View File

@ -54,6 +54,12 @@
android:authorities="${applicationId}.TTMultiProvider"
android:exported="false" />
<provider
android:name="com.bytedance.sdk.openadsdk.stub.server.MainServerManager"
android:authorities="${applicationId}.pangle.servermanager.main"
android:exported="false"
tools:node="remove"/>
</application>
</manifest>

View File

@ -12,20 +12,33 @@ import com.bytedance.sdk.openadsdk.TTAdNative.CSJSplashAdListener
import com.bytedance.sdk.openadsdk.TTAdNative.NativeExpressAdListener
import com.bytedance.sdk.openadsdk.TTAdSdk.InitCallback
import com.bytedance.sdk.openadsdk.TTNativeExpressAd.ExpressAdInteractionListener
import com.bytedance.sdk.openadsdk.stub.server.MainServerManager
import com.gh.gamecenter.common.utils.PackageFlavorHelper
import com.gh.gamecenter.common.utils.doOnFragmentDestroy
import com.lightgame.utils.Utils
import java.lang.reflect.Field
object CsjAdHelper {
const val TAG = "CsjAdHelper"
fun init(context: Context, oaid: String) {
fun init(context: Context, csjId: String, oaid: String) {
try {
val serverContentProvider = MainServerManager()
val contextField: Field = serverContentProvider.javaClass.superclass.superclass.getDeclaredField("mContext")
contextField.isAccessible = true
contextField.set(serverContentProvider, context)
serverContentProvider.onCreate()
} catch (e: Exception) {
e.printStackTrace()
}
// 强烈建议在应用对应的Application#onCreate()方法中调用避免出现content为null的异常
TTAdSdk.init(
context,
TTAdConfig.Builder()
.appId("5410486")// xxxxxxx为穿山甲媒体平台注册的应用ID
.appId(csjId)// xxxxxxx为穿山甲媒体平台注册的应用ID
.useTextureView(true) // 默认使用SurfaceView播放视频广告,当有SurfaceView冲突的场景可以使用TextureView
.appName("光环助手")
.titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)//落地页主题

View File

@ -10,8 +10,8 @@ import com.gh.gamecenter.core.provider.ICsjAdProvider
@Route(path = RouteConsts.provider.csjAd, name = "csj广告暴露服务")
class CsjAdProviderImpl : ICsjAdProvider {
override fun initSDK(context: Context, oaid: String) {
CsjAdHelper.init(context, oaid)
override fun initSDK(context: Context, id: String, oaid: String) {
CsjAdHelper.init(context, id, oaid)
}
override fun requestSplashAd(

View File

@ -52,6 +52,9 @@ QUICK_LOGIN_APPKEY=002BAABA2C078342DA33BEAB0A4C6A25
DEV_QUICK_LOGIN_APPID=300012281661
DEV_QUICK_LOGIN_APPKEY=1BFAB6E349F1D69CC06ABAD9D7A43FB8
DEV_CSJ_APPID=5410486
CSJ_APPID=5429125
# hosts
DEV_API_HOST=https\://dev-and-api.ghzs.com/v5d5d0/
API_HOST=https\://and-api.ghzs.com/v5d5d0/

View File

@ -8,7 +8,7 @@ import com.alibaba.android.arouter.facade.template.IProvider
interface ICsjAdProvider : IProvider {
fun initSDK(context: Context, oaid: String)
fun initSDK(context: Context, id: String, oaid: String)
fun requestSplashAd(
activity: Activity,