From 5e99e8b032916fb7ed219654a0c1fa3c7b8e005e Mon Sep 17 00:00:00 2001 From: jack <1484288157@qq.com> Date: Fri, 16 Apr 2021 15:26:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=89=E7=8E=AF=E5=8A=A9=E6=89=8BV4.9.0-?= =?UTF-8?q?=E6=96=B0=E5=A2=9E[=E6=8E=A8=E8=8D=90=E5=BC=B9=E7=AA=97]?= =?UTF-8?q?=E5=8A=9F=E8=83=BD(=E6=95=B0=E6=8D=AE=E5=9F=8B=E7=82=B9)=20http?= =?UTF-8?q?s://git.ghzs.com/pm/halo-app-issues/-/issues/1212?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/common/util/LogUtils.java | 33 ++++++++++++ .../gh/common/util/PageSwitchDataHelper.kt | 2 + .../java/com/gh/download/DownloadManager.java | 7 +++ .../gamedetail/GameDetailFragment.kt | 53 +++++++++++++------ 4 files changed, 80 insertions(+), 15 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 1ac14fd2b4..69c0dd795b 100644 --- a/app/src/main/java/com/gh/common/util/LogUtils.java +++ b/app/src/main/java/com/gh/common/util/LogUtils.java @@ -1063,4 +1063,37 @@ public class LogUtils { } LoghubUtils.log(object, "event", false); } + + public static void uploadRecommendPopup(String event, String popupId, String gameId, String gameName, + String linkType, String linkTitle, String downloadGameId, String downloadGameName) { + JSONObject object = new JSONObject(); + JSONObject payloadObject = new JSONObject(); + try { + object.put("event", event);//recommend_pop_show推荐弹窗出现、recommend_pop_close推荐弹窗手动关闭、recommend_pop_link_click点击推荐弹窗链接、recommend_pop_download推荐弹窗下载开始、recommend_pop_download_complete推荐弹窗下载完成 + payloadObject.put("recommend_pop_id", popupId); + payloadObject.put("game_id", gameId); + payloadObject.put("game_name", gameName); + if (!TextUtils.isEmpty(linkType)) { + payloadObject.put("link_type", linkType); + } + if (!TextUtils.isEmpty(linkTitle)) { + payloadObject.put("link_title", linkTitle); + } + if (!TextUtils.isEmpty(downloadGameId)) { + payloadObject.put("download_game_id", downloadGameId); + } + if (!TextUtils.isEmpty(downloadGameName)) { + payloadObject.put("download_game_name", downloadGameName); + } + object.put("payload", payloadObject); + object.put("meta", getMetaObject()); + object.put("timestamp", System.currentTimeMillis() / 1000); + } catch (JSONException e) { + e.printStackTrace(); + } + if (BuildConfig.DEBUG) { + Utils.log("LogUtils->" + object.toString()); + } + LoghubUtils.log(object, "event", false); + } } diff --git a/app/src/main/java/com/gh/common/util/PageSwitchDataHelper.kt b/app/src/main/java/com/gh/common/util/PageSwitchDataHelper.kt index de8039e470..9844038d5c 100644 --- a/app/src/main/java/com/gh/common/util/PageSwitchDataHelper.kt +++ b/app/src/main/java/com/gh/common/util/PageSwitchDataHelper.kt @@ -11,9 +11,11 @@ object PageSwitchDataHelper { const val PAGE_BUSINESS_NAME = "page_business_name" const val PAGE_BUSINESS_TYPE = "page_business_type" + const val PAGE_GAME_DETAIL_RECOMMEND = "page_game_detail_recommend" private var mDataFromTheLastPage: Pair>? = null + @JvmStatic fun popLastPageData(): HashMap? { AppManager.getInstance().previousActivity()?.let { if (System.identityHashCode(it).toString() == mDataFromTheLastPage?.first diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index c4d2aa9f33..86c5ead8b5 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -29,6 +29,7 @@ import com.gh.common.util.HomePluggableHelper; import com.gh.common.util.NetworkUtils; import com.gh.common.util.PackageInstaller; import com.gh.common.util.PackageUtils; +import com.gh.common.util.PageSwitchDataHelper; import com.gh.common.util.SPUtils; import com.gh.gamecenter.BuildConfig; import com.gh.gamecenter.entity.ApkEntity; @@ -285,6 +286,12 @@ public class DownloadManager implements DownloadStatusListener { ExtensionsKt.addMetaExtra(downloadEntity, Constants.SIMULATOR_GAME, apkEntity.getFormat()); ExtensionsKt.addMetaExtra(downloadEntity, Constants.SIMULATOR, GsonUtils.toJson(gameEntity.getSimulator())); } + + HashMap map = PageSwitchDataHelper.popLastPageData(); + if (map != null && map.containsKey(PageSwitchDataHelper.PAGE_GAME_DETAIL_RECOMMEND)) { + ExtensionsKt.addMetaExtra(downloadEntity, PageSwitchDataHelper.PAGE_GAME_DETAIL_RECOMMEND, "true"); + } + int installed = 0; for (ApkEntity apk : gameEntity.getApk()) { if (PackagesManager.isInstalled(apk.getPackageName())) { diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 219f200733..8a481f2631 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -235,6 +235,7 @@ class GameDetailFragment : NormalFragment() { private var mIsPauseTopVideo = false private var mIsRecommendViewShow = false private var mRecommendDisposable: Disposable? = null + private var mRecommendPopupEntity: RecommendPopupEntity? = null private var mTabClickEvent: Pair = Pair(0L, "") @@ -255,12 +256,27 @@ class GameDetailFragment : NormalFragment() { DialogUtils.showUnzipFailureDialog(requireContext(), downloadEntity) } } + val meta = downloadEntity.getMetaExtra(PageSwitchDataHelper.PAGE_GAME_DETAIL_RECOMMEND) if (downloadEntity.status == DownloadStatus.add) { - mRecommendView.postDelayed({ - showRecommendView() - }, 500) + if (downloadEntity.gameId == mViewModel.game?.id) { + mRecommendView.postDelayed({ showRecommendView() }, 500) + } + if (meta.isNotEmpty() && mRecommendPopupEntity != null) { + LogUtils.uploadRecommendPopup("recommend_pop_download", mRecommendPopupEntity?.id, mViewModel.game?.id + ?: "", mViewModel.game?.name + ?: "", mRecommendPopupEntity?.popupDetail?.link?.type, + mRecommendPopupEntity?.popupDetail?.link?.text, downloadEntity.gameId, downloadEntity.name) + } } else if (downloadEntity.status == DownloadStatus.done) { - hideRecommendView() + if (downloadEntity.gameId == mViewModel.game?.id) { + hideRecommendView() + } + if (meta.isNotEmpty() && mRecommendPopupEntity != null) { + LogUtils.uploadRecommendPopup("recommend_pop_download_complete", mRecommendPopupEntity?.id, mViewModel.game?.id + ?: "", mViewModel.game?.name + ?: "", mRecommendPopupEntity?.popupDetail?.link?.type, + mRecommendPopupEntity?.popupDetail?.link?.text, downloadEntity.gameId, downloadEntity.name) + } } } } @@ -990,7 +1006,7 @@ class GameDetailFragment : NormalFragment() { showReserveGuide(false) } R.id.recommendCloseIv -> { - hideRecommendView() + hideRecommendView(true) } } } @@ -1189,16 +1205,19 @@ class GameDetailFragment : NormalFragment() { mRecommendLinkTv.text = popupDetail.link?.text mRecommendLinkTv.setOnClickListener { popupDetail.link?.let { + PageSwitchDataHelper.pushCurrentPageData(hashMapOf(Pair(PageSwitchDataHelper.PAGE_GAME_DETAIL_RECOMMEND, ""))) DirectUtils.directToLinkPage(requireContext(), it, mEntrance, "游戏详情") + LogUtils.uploadRecommendPopup("recommend_pop_link_click", mRecommendPopupEntity?.id, mViewModel.game?.id + ?: "", mViewModel.game?.name ?: "", it.type, it.text, "", "") } } } private fun showRecommendView() { val recommendPopupList = mViewModel.recommendPopupList - val recommendPopup = RecommendPopupHelper.getRecommendPopup(mViewModel.game, recommendPopupList) + mRecommendPopupEntity = RecommendPopupHelper.getRecommendPopup(mViewModel.game, recommendPopupList) ?: return - initRecommendUI(recommendPopup) + initRecommendUI(mRecommendPopupEntity!!) mRecommendView.post { if (!mIsRecommendViewShow) { val width = mRecommendView.measuredWidth.toFloat() @@ -1206,19 +1225,19 @@ class GameDetailFragment : NormalFragment() { mRecommendView.visibility = View.VISIBLE mRecommendView.animate().x(0f).setDuration(500).start() mIsRecommendViewShow = true - RecommendPopupHelper.saveRecord(recommendPopup) - if (recommendPopup.popupDetail.duration > 0) { - mRecommendDisposable = countDownTimer(recommendPopup.popupDetail.duration) { finish, _ -> - if (finish) { - hideRecommendView() - } + RecommendPopupHelper.saveRecord(mRecommendPopupEntity!!) + if (mRecommendPopupEntity!!.popupDetail.duration > 0) { + mRecommendDisposable = countDownTimer(mRecommendPopupEntity!!.popupDetail.duration) { finish, _ -> + if (finish) hideRecommendView() } } + LogUtils.uploadRecommendPopup("recommend_pop_show", mRecommendPopupEntity?.id, mViewModel.game?.id + ?: "", mViewModel.game?.name ?: "", "", "", "", "") } } } - private fun hideRecommendView() { + private fun hideRecommendView(isManuallyClose: Boolean = false) { mRecommendView.post { if (mIsRecommendViewShow) { val width = mRecommendView.measuredWidth.toFloat() @@ -1226,6 +1245,10 @@ class GameDetailFragment : NormalFragment() { mIsRecommendViewShow = false mRecommendDisposable?.dispose() mRecommendDisposable = null + if (isManuallyClose) { + LogUtils.uploadRecommendPopup("recommend_pop_close", mRecommendPopupEntity?.id, mViewModel.game?.id + ?: "", mViewModel.game?.name ?: "", "", "", "", "") + } } } } @@ -1279,7 +1302,6 @@ class GameDetailFragment : NormalFragment() { } } hideRecommendView() - DownloadManager.getInstance(context).removeObserver(dataWatcher) } override fun onDestroy() { @@ -1289,6 +1311,7 @@ class GameDetailFragment : NormalFragment() { mRecommendDisposable!!.dispose() mRecommendDisposable = null } + DownloadManager.getInstance(context).removeObserver(dataWatcher) }