From fe4ad76e2a5269040cc941b652d96db7f5f1b275 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Thu, 6 Apr 2023 16:57:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=86=85=E5=AE=B9=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E6=9D=A5=E6=BA=90=E6=95=B0=E6=8D=AE=E8=AE=B0=E5=BD=95=20https:?= =?UTF-8?q?//jira.shanqu.cc/browse/GHZS-1914?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/LogUtils.java | 8 +- .../com/gh/common/util/NewFlatLogUtils.kt | 96 +++++++++++++++++++ .../java/com/gh/common/util/NewLogUtils.kt | 6 +- .../java/com/gh/gamecenter/SearchActivity.kt | 4 +- .../fragment/WelcomeDialogFragment.kt | 6 +- .../gamedetail/dialog/GameBigEventAdapter.kt | 10 +- .../gamedetail/dialog/GameBigEventDialog.kt | 2 +- .../personal/HaloPersonalBannerAdapter.kt | 5 + .../search/SearchDefaultFragment.kt | 26 +++-- .../search/SearchDefaultRankAdapter.kt | 26 ++++- .../search/SearchDefaultRankListAdapter.kt | 3 +- .../search/SearchGameIndexAdapter.kt | 9 +- .../search/SearchGameResultAdapter.kt | 9 +- .../video/detail/HomeVideoFragment.kt | 21 ++-- .../gamecenter/common/loghub/LoghubUtils.kt | 5 + 15 files changed, 192 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/LogUtils.java b/app/src/main/java/com/gh/common/util/LogUtils.java index 9cc382493a..a182cba4c6 100644 --- a/app/src/main/java/com/gh/common/util/LogUtils.java +++ b/app/src/main/java/com/gh/common/util/LogUtils.java @@ -415,13 +415,19 @@ public class LogUtils { LoghubUtils.log(object, "video_streaming", false); } - public static void uploadWelcomeDialog(String action, String dialogId, String linkTitle) { + public static void uploadWelcomeDialog(String action, + String dialogId, + String linkId, + String linkType, + String linkTitle) { ExposureEntity payload = new ExposureEntity(); payload.setWelcomeDialogId(dialogId); payload.setWelcomeDialogLinkTitle(linkTitle); SimpleLogContainerEntity entity = new SimpleLogContainerEntity(); entity.setEvent("dialog"); + entity.setLinkId(linkId); + entity.setLinkType(linkType); entity.setAction(action); entity.setMeta(MetaUtil.INSTANCE.getMeta()); entity.setPayload(payload); diff --git a/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt b/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt index 7ec86dc0fb..4523100b3f 100644 --- a/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt +++ b/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt @@ -478,6 +478,27 @@ object NewFlatLogUtils { log(json) } + // 搜索-点击搜索榜单内容 + @JvmStatic + fun logSearchClickRankDetail( + rankName: String, + rankSequence: String, + linkId: String, + linkType: String, + linkTitle: String + ) { + val json = json { + KEY_EVENT to "search_click_rank_detail" + "rank_name" to rankName + "rank_sequence" to rankSequence + "link_id" to linkId + "link_type" to linkType + "link_title" to linkTitle + parseAndPutMeta().invoke(this) + } + log(json) + } + //点击社区-搜索页返回按钮 @JvmStatic fun logClickSearchReturn(searchKey: String) { @@ -1900,4 +1921,79 @@ object NewFlatLogUtils { } log(json, "event", false) } + + // 游戏详情浏览大事件 + @JvmStatic + fun logGameDetailMajorEventDetailClick( + gameId: String, + gameName: String, + linkId: String = "", + linkType: String = "", + linkTitle: String = "" + ) { + val json = json { + KEY_EVENT to "game_detail_major_event_detail_click" + KEY_GAME_NAME to gameName + KEY_GAME_ID to gameId + "link_id" to linkId + "link_type" to linkType + "link_title" to linkTitle + parseAndPutMeta().invoke(this) + } + log(json) + } + + // 我的光环点击 banner + @JvmStatic + fun logHaloPersonalActivityBannerClick( + linkId: String = "", + linkType: String = "", + linkTitle: String = "" + ) { + val json = json { + KEY_EVENT to "halo_self_activity_banner_click" + "link_id" to linkId + "link_type" to linkType + "link_title" to linkTitle + parseAndPutMeta().invoke(this) + } + log(json) + } + + // 视频流点击广告 + @JvmStatic + fun logVideoAdsClick( + linkId: String = "", + linkType: String = "", + linkTitle: String = "" + ) { + val json = json { + KEY_EVENT to "video_ads_click" + "link_id" to linkId + "link_type" to linkType + "link_title" to linkTitle + parseAndPutMeta().invoke(this) + } + log(json, "video_streaming") + } + + // 社区-搜索榜单-内容点击 + @JvmStatic + fun logCommunitySearchClickRankDetail( + rankName: String, + linkId: String = "", + linkType: String = "", + linkTitle: String = "" + ) { + val json = json { + KEY_EVENT to "click_search_rank_detail" + "rank_name" to rankName + "link_id" to linkId + "link_type" to linkType + "link_title" to linkTitle + parseAndPutMeta().invoke(this) + } + log(json, "bbs_community") + } + } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/NewLogUtils.kt b/app/src/main/java/com/gh/common/util/NewLogUtils.kt index 23dc4ed030..e65a3be8d1 100644 --- a/app/src/main/java/com/gh/common/util/NewLogUtils.kt +++ b/app/src/main/java/com/gh/common/util/NewLogUtils.kt @@ -1344,8 +1344,9 @@ object NewLogUtils { gameName: String, tagId: String, tagName: String, - linkType: String, - linkTitle: String + linkId: String = "", + linkType: String = "", + linkTitle: String = "" ) { val json = json { KEY_EVENT to "search_click_tag" @@ -1355,6 +1356,7 @@ object NewLogUtils { KEY_GAME_NAME to gameName "tag_id" to tagId "tag" to tagName + "link_id" to linkId "link_type" to linkType "link_title" to linkTitle KEY_META to LogUtils.getMetaObject() diff --git a/app/src/main/java/com/gh/gamecenter/SearchActivity.kt b/app/src/main/java/com/gh/gamecenter/SearchActivity.kt index da5dea40d8..94860a2029 100644 --- a/app/src/main/java/com/gh/gamecenter/SearchActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/SearchActivity.kt @@ -236,7 +236,9 @@ open class SearchActivity : BaseActivity() { when (type) { DEFAULT -> { val fragment = supportFragmentManager.findFragmentByTag(SearchDefaultFragment::class.java.name) - ?: SearchDefaultFragment() + ?: SearchDefaultFragment().apply { + arguments = Bundle().also { it.putBoolean(SearchDefaultFragment.KEY_IS_GAME_SEARCH, true) } + } transaction.replace(R.id.search_result, fragment, SearchDefaultFragment::class.java.name) } GAME_DIGEST -> { diff --git a/app/src/main/java/com/gh/gamecenter/fragment/WelcomeDialogFragment.kt b/app/src/main/java/com/gh/gamecenter/fragment/WelcomeDialogFragment.kt index 49491c192c..14b79bdbe8 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/WelcomeDialogFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/fragment/WelcomeDialogFragment.kt @@ -43,7 +43,7 @@ class WelcomeDialogFragment : BaseDialogFragment() { HaloApp.put(Constants.WELCOME_DIALOG_ID, mWelcomeEntity?.id) HaloApp.put(Constants.WELCOME_DIALOG_LINK_TITLE, mWelcomeEntity?.text) - LogUtils.uploadWelcomeDialog("click", mWelcomeEntity?.id, mWelcomeEntity?.text) + LogUtils.uploadWelcomeDialog("click", mWelcomeEntity?.id, mWelcomeEntity?.id, mWelcomeEntity?.type, mWelcomeEntity?.text) SensorsBridge.trackEvent("HomeDialogClick") when (mWelcomeEntity?.type) { @@ -166,7 +166,7 @@ class WelcomeDialogFragment : BaseDialogFragment() { }.apply() mDismissListener?.invoke() - LogUtils.uploadWelcomeDialog("close", mWelcomeEntity?.id, mWelcomeEntity?.text) + LogUtils.uploadWelcomeDialog("close", mWelcomeEntity?.id, mWelcomeEntity?.id, mWelcomeEntity?.type, mWelcomeEntity?.text) super.onDestroy() } @@ -177,7 +177,7 @@ class WelcomeDialogFragment : BaseDialogFragment() { fun getInstance(welcomeEntity: WelcomeDialogEntity?) = WelcomeDialogFragment().apply { arguments = Bundle() arguments?.putParcelable(TAG, welcomeEntity) - LogUtils.uploadWelcomeDialog("show", welcomeEntity?.id, welcomeEntity?.text) + LogUtils.uploadWelcomeDialog("show", welcomeEntity?.id, mWelcomeEntity?.id, mWelcomeEntity?.type, welcomeEntity?.text) SensorsBridge.trackEvent("HomeDialogShow") } } diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventAdapter.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventAdapter.kt index 3324b90b07..6c78c46d2b 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventAdapter.kt @@ -11,6 +11,7 @@ import android.view.ViewGroup import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.gh.common.util.DirectUtils +import com.gh.common.util.NewFlatLogUtils import com.gh.gamecenter.core.utils.TimeUtils import com.gh.gamecenter.common.utils.toBinding import com.gh.gamecenter.R @@ -20,6 +21,7 @@ import com.gh.gamecenter.gamedetail.entity.BigEvent class GameBigEventAdapter( val context: Context, val bigEvents: List, + val gameId: String, val gameName: String, val mEntrance: String ) : RecyclerView.Adapter() { @@ -45,8 +47,14 @@ class GameBigEventAdapter( } override fun onClick(widget: View) { -// MtaHelper.onEvent("游戏大事件", "点击链接", "${gameName}+${bigEvent.link?.value}") DirectUtils.directToLinkPage(context, bigEvent.link!!, mEntrance, "游戏大事件弹窗") + NewFlatLogUtils.logGameDetailMajorEventDetailClick( + gameId, + gameName, + bigEvent.link!!.link ?: "", + bigEvent.link!!.type ?: "", + bigEvent.link!!.text ?: "" + ) } }, bigEvent.content.length + 1, content.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) holder.binding.contentTv.movementMethod = LinkMovementMethod() diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventDialog.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventDialog.kt index 152ca04c44..bf821a2a5e 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventDialog.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/dialog/GameBigEventDialog.kt @@ -51,7 +51,7 @@ class GameBigEventDialog( setContentView(contentView) val bigEventRv = contentView.findViewById(R.id.bigEventRv) - bigEventRv.adapter = GameBigEventAdapter(context, bigEvents, gameName, mEntrance) + bigEventRv.adapter = GameBigEventAdapter(context, bigEvents, gameId, gameName, mEntrance) bigEventRv.layoutManager = LinearLayoutManager(context) bigEventRv.addItemDecoration(VerticalItemDecoration(context, 19F, false, R.color.background_white)) diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt index a1b4cd1a2a..ecdee26be1 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt @@ -77,6 +77,11 @@ class HaloPersonalBannerAdapter(context: Context) : BaseRecyclerAdapter { diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt index 9102fb2a39..0cc5dd6812 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultFragment.kt @@ -45,7 +45,6 @@ open class SearchDefaultFragment : BaseFragment() { private var mHotTagList: List? = null protected var mHistoryList: List? = null - protected var mHotSearchList: List? = null protected var mRankList: List? = null protected lateinit var mBinding: FragmentSearchDefaultBinding @@ -54,6 +53,8 @@ open class SearchDefaultFragment : BaseFragment() { private var mViewModel: SearchDefaultViewModel? = null + private var mIsGameSearch = false // 是否为游戏搜索 + val defaultViewModel: SearchDefaultViewModel? get() = mViewModel @@ -69,6 +70,8 @@ open class SearchDefaultFragment : BaseFragment() { mViewModel = viewModelProvider() + mIsGameSearch = arguments?.getBoolean(KEY_IS_GAME_SEARCH) ?: false + initDao() initView() } @@ -191,19 +194,26 @@ open class SearchDefaultFragment : BaseFragment() { visibility = View.VISIBLE offscreenPageLimit = mRankList!!.size pageMargin = 12F.dip2px() - adapter = SearchDefaultRankListAdapter(requireContext(), mRankList!!, pageRatio) + adapter = SearchDefaultRankListAdapter(requireContext(), mRankList!!, pageRatio, mIsGameSearch) postExposureEvent(0) doOnPageSelected { postExposureEvent(it) + val title = mRankList?.safelyGetInRelease(it)?.title ?: "" + val trackEvent = JSONObject() try { - trackEvent.put("list_name", mRankList?.safelyGetInRelease(it)?.title) + trackEvent.put("list_name", title) trackEvent.put("position", it + 1) } catch (e: JSONException) { e.printStackTrace() } - SensorsBridge.trackEvent("GameListPageSelected") + + if (mIsGameSearch) { + NewFlatLogUtils.logSearchClickRank(title, (it + 1).toString()) + } + + SensorsBridge.trackEvent("GameListPageSelected", trackEvent) } } @@ -238,7 +248,7 @@ open class SearchDefaultFragment : BaseFragment() { mBinding.rankTabLayout.run { post { val screenWidth = resources.displayMetrics.widthPixels - var tabLayoutWidth = getTabLayoutWidth() + val tabLayoutWidth = getTabLayoutWidth() if (screenWidth >= tabLayoutWidth) { (layoutParams as ViewGroup.MarginLayoutParams).apply { leftMargin = 8F.dip2px() @@ -284,7 +294,7 @@ open class SearchDefaultFragment : BaseFragment() { tab?.customView?.findViewById(R.id.tabTitle)?.isChecked = isChecked } - fun getTabView(title: String) = + private fun getTabView(title: String) = TabItemSearchDefaultRankBinding.inflate(layoutInflater).apply { tabTitle.text = title }.root @@ -353,7 +363,7 @@ open class SearchDefaultFragment : BaseFragment() { clickListener: (Int) -> Unit ) { - if (contentList == null || contentList.isEmpty()) return + if (contentList.isNullOrEmpty()) return flexView.removeAllViews() for (index in 0 until contentList.count()) { @@ -442,5 +452,7 @@ open class SearchDefaultFragment : BaseFragment() { companion object { private const val SMART_TAG_ID = "64191b9a12fccdb7290db082" + + const val KEY_IS_GAME_SEARCH = "key_is_game_search" } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankAdapter.kt index ebd240a7e2..be609488be 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankAdapter.kt @@ -17,7 +17,8 @@ import org.json.JSONObject class SearchDefaultRankAdapter( context: Context, - private val mRankList: SettingsEntity.Search.RankList + private val mRankList: SettingsEntity.Search.RankList, + private val mIsGameSearch: Boolean, ) : BaseRecyclerAdapter(context) { override fun getItemCount() = minOf(mRankList.content.size, 10) @@ -56,15 +57,34 @@ class SearchDefaultRankAdapter( labelIv.setImageDrawable(labelIcon.toDrawable()) } root.setOnClickListener { + val linkEntity = rank.link + DirectUtils.directToLinkPage( mContext, - rank.link, + linkEntity, "游戏搜索-搜索榜单", "${mRankList.title}-${rank.name}", rank.exposureEvent ) Util_System_Keyboard.hideSoftKeyboardByIBinder(mContext, it.windowToken) - NewFlatLogUtils.logSearchClickRank(rank.name, (position + 1).toString()) + + // 是否来源于游戏搜索 + if (mIsGameSearch) { + NewFlatLogUtils.logSearchClickRankDetail( + rank.name, + (position + 1).toString(), + linkEntity.link ?: "", + linkEntity.type ?: "", + linkEntity.text ?: "" + ) + } else { + NewFlatLogUtils.logCommunitySearchClickRankDetail( + rank.name, + linkEntity.link ?: "", + linkEntity.type ?: "", + linkEntity.text ?: "" + ) + } val trackEvent = JSONObject() try { diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankListAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankListAdapter.kt index af9fab1113..6ba4d7cbb1 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchDefaultRankListAdapter.kt @@ -13,6 +13,7 @@ class SearchDefaultRankListAdapter( private val mContext: Context, private val mRankList: List, private val mPageWidth: Float, + private val mIsGameSearch: Boolean ) : RecyclingPagerAdapter() { override fun getCount() = mRankList.size @@ -29,7 +30,7 @@ class SearchDefaultRankListAdapter( view!!.findViewById(R.id.rankContainer).run { layoutManager = LinearLayoutManager(mContext) - adapter = SearchDefaultRankAdapter(mContext, mRankList[position]) + adapter = SearchDefaultRankAdapter(mContext, mRankList[position], mIsGameSearch) } return view } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt index 6cb1bc4e2c..9134f4b962 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt @@ -203,6 +203,7 @@ class SearchGameIndexAdapter( name ?: "", it.id, it.text, + it.link.link ?: "", it.link.type ?: "", it.link.text ?: "" ) @@ -237,9 +238,7 @@ class SearchGameIndexAdapter( id, name ?: "", "", - "攻略", - "", - "" + "攻略" ) } } @@ -271,8 +270,6 @@ class SearchGameIndexAdapter( name ?: "", "", "礼包", - "", - "" ) } } @@ -304,8 +301,6 @@ class SearchGameIndexAdapter( name ?: "", "", "论坛", - "", - "" ) } } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt index d22ca49b0b..0793875486 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameResultAdapter.kt @@ -276,6 +276,7 @@ class SearchGameResultAdapter( name ?: "", it.id, it.text, + it.link.link ?: "", it.link.type ?: "", it.link.text ?: "" ) @@ -310,8 +311,6 @@ class SearchGameResultAdapter( name ?: "", "", "攻略", - "", - "" ) } } @@ -342,8 +341,6 @@ class SearchGameResultAdapter( name ?: "", "", "礼包", - "", - "" ) } } @@ -374,8 +371,6 @@ class SearchGameResultAdapter( name ?: "", "", "论坛", - "", - "" ) } } @@ -407,8 +402,6 @@ class SearchGameResultAdapter( name ?: "", "", "开服表", - "", - "" ) } } diff --git a/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt b/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt index 0a0f46dda5..ccf7b9fb77 100644 --- a/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/video/detail/HomeVideoFragment.kt @@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment import com.gh.common.constant.Config import com.gh.common.util.DirectUtils import com.gh.common.util.LogUtils +import com.gh.common.util.NewFlatLogUtils import com.gh.common.view.AdBannerView import com.gh.gamecenter.R import com.gh.gamecenter.WebActivity @@ -284,25 +285,27 @@ class HomeVideoFragment : BaseLazyFragment() { val videoPos = getCurrentFragment()?.viewPagerLayoutManager?.findFirstCompletelyVisibleItemPosition() ?: -1 if (videoPos >= 0) { - MtaHelper.onEvent("视频详情", "视频广告", ads[pos].title) + val linkEntity = ads[pos] + + NewFlatLogUtils.logVideoAdsClick(linkEntity.link, linkEntity.linkType, linkEntity.title) getCurrentFragment()?.findVisibleVideoViewByPosition()?.let { - it.recordMta("视频广告", ads[pos].title) + it.recordMta("视频广告", linkEntity.title) it.uploadVideoStreamingPlaying("点击广告") } - if (ads[pos].linkType == "web") { + if (linkEntity.linkType == "web") { // 当前入口打开Web页面要显示分享按钮 - val webIntentByShare = WebActivity.getWebIntentByShare(context, ads[pos].link, true, "视频流广告位") + val webIntentByShare = WebActivity.getWebIntentByShare(context, linkEntity.link, true, "视频流广告位") startActivity(webIntentByShare) } else { DirectUtils.directToLinkPage( requireContext(), LinkEntity( - link = ads[pos].link, - type = ads[pos].linkType, - text = ads[pos].text, - display = ads[pos].display, - community = ads[pos].linkCommunity + link = linkEntity.link, + type = linkEntity.linkType, + text = linkEntity.text, + display = linkEntity.display, + community = linkEntity.linkCommunity ), "", "视频详情" ) diff --git a/module_common/src/main/java/com/gh/gamecenter/common/loghub/LoghubUtils.kt b/module_common/src/main/java/com/gh/gamecenter/common/loghub/LoghubUtils.kt index c6d2b79b1a..af1ef5e0b8 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/loghub/LoghubUtils.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/loghub/LoghubUtils.kt @@ -5,6 +5,7 @@ import com.aliyun.sls.android.producer.Log import com.gh.gamecenter.common.entity.ExposureEntity import com.gh.gamecenter.common.exposure.meta.Meta import com.gh.gamecenter.core.runOnUiThread +import com.google.gson.annotations.SerializedName import org.json.JSONObject object LoghubUtils { @@ -92,5 +93,9 @@ class SimpleLogContainerEntity( var action: String? = null, var meta: Meta? = null, var payload: ExposureEntity? = null, + @SerializedName("link_type") + var linkType: String? = null, + @SerializedName("link_id") + var linkId: String? = null, var timestamp: Long? = 0 ) \ No newline at end of file