From e1f70ce7885adcfed7055f6595c103a86e5e8ecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=AD=90=E7=BB=B4?= Date: Mon, 22 May 2023 17:46:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=8B=E8=BD=BD=E6=B5=81=E9=87=8F?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E5=BC=B9=E7=AA=97=E5=9F=8B=E7=82=B9=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E2=80=94=E5=AE=A2=E6=88=B7=E7=AB=AF=20https://jira.sh?= =?UTF-8?q?anqu.cc/browse/GHZS-2448?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gh/common/chain/CheckDownloadHandler.kt | 2 +- .../java/com/gh/common/util/DialogUtils.java | 15 ++++++++--- .../com/gh/common/util/DownloadItemUtils.kt | 7 +++++- .../common/util/GameActivityDownloadHelper.kt | 13 +++++++--- .../com/gh/common/util/NewFlatLogUtils.kt | 25 +++++++++++++++++++ .../dialog/DownloadDialogItemViewHolder.kt | 4 ++- .../download/GameDownloadFragmentAdapter.java | 2 +- .../download/UpdatableGameAdapter.kt | 4 ++- 8 files changed, 60 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/gh/common/chain/CheckDownloadHandler.kt b/app/src/main/java/com/gh/common/chain/CheckDownloadHandler.kt index ceca698832..492bb6d774 100644 --- a/app/src/main/java/com/gh/common/chain/CheckDownloadHandler.kt +++ b/app/src/main/java/com/gh/common/chain/CheckDownloadHandler.kt @@ -9,7 +9,7 @@ class CheckDownloadHandler : ChainHandler() { override fun handleRequest(context: Context, gameEntity: GameEntity) { val apk = gameEntity.getApk().safelyGetInRelease(0) ?: return - DialogUtils.checkDownload(context, apk.size) { isSubscribe: Boolean -> + DialogUtils.checkDownload(context, apk.size, gameEntity.id, gameEntity.name) { isSubscribe: Boolean -> if (hasNext()) { getNext()?.handleRequest(context, gameEntity) } else { diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index 9106c30292..7a8385c218 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -121,7 +121,7 @@ public class DialogUtils { return dialog; } - public static void checkDownload(Context context, String size, CheckDownloadCallBack callBack) { + public static void checkDownload(Context context, String size, String gameId, String gameName, CheckDownloadCallBack callBack) { if (!NetworkUtils.isNetworkConnected(context)) { showNoConnectionDownloadDialog(context, () -> { }, @@ -136,7 +136,9 @@ public class DialogUtils { // MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(context), "出现弹窗提示"); showDownloadDialog(context, () -> callBack.onResponse(false), - () -> callBack.onResponse(true)); + () -> callBack.onResponse(true), + gameId, + gameName); } } @@ -165,9 +167,11 @@ public class DialogUtils { DialogHelper.showDialog(context, "下载提示", "网络异常,请检查手机网络状态", "知道了", "WiFi自动下载", listener::onConfirm, cancelListener::onCancel, false, "", ""); } - public static void showDownloadDialog(Context context, ConfirmListener listener, CancelListener cancelListener) { + public static void showDownloadDialog(Context context, ConfirmListener listener, CancelListener cancelListener, String gameId, String gameName) { context = checkDialogContext(context); + NewFlatLogUtils.logDownloadMobileDataDialogShow(gameId, gameName); + final Dialog dialog = new Dialog(context, R.style.GhAlertDialog); View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_download_traffic, null); @@ -177,6 +181,7 @@ public class DialogUtils { Context finalContext = context; allowOnce.setOnClickListener(v -> { + NewFlatLogUtils.logDownloadMobileDataDialogClick(gameId, gameName, "允许一次"); AppExecutor.getUiExecutor().executeWithDelay(() -> { Utils.toast(finalContext, "已使用移动网络下载,请注意流量消耗"); }, 500); @@ -185,11 +190,13 @@ public class DialogUtils { // MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(finalContext), "本次允许"); }); wifiAuto.setOnClickListener(v -> { + NewFlatLogUtils.logDownloadMobileDataDialogClick(gameId, gameName, "WiFi自动下载"); cancelListener.onCancel(); dialog.dismiss(); // MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(finalContext), "连上WiFi后自动下载"); }); allowAlways.setOnClickListener(v -> { + NewFlatLogUtils.logDownloadMobileDataDialogClick(gameId, gameName, "总是允许"); SPUtils.setBoolean(getTrafficDownloadHintKey(), false); AppExecutor.getUiExecutor().executeWithDelay(() -> { // 显示了弹窗以后,即便下面这个 toast 放在 listener.onConfirm 后调用也是显示 listener.onConfirm 里的 toast @@ -201,6 +208,8 @@ public class DialogUtils { // MtaHelper.onEvent("移动网络下载", NetworkUtils.getMobileNetworkType(finalContext), "总是允许"); }); + dialog.setOnCancelListener(downloadDialog -> NewFlatLogUtils.logDownloadMobileDataDialogClick(gameId, gameName, "关闭弹窗")); + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(contentView); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt index ec4ae1ba30..685d80daa7 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.kt @@ -927,7 +927,12 @@ object DownloadItemUtils { } DownloadDialogHelper.findAvailableDialogAndShow(context, gameEntity, apk, object : EmptyCallback { override fun onCallback() { - DialogUtils.checkDownload(context, apk.size) { isSubscribe: Boolean -> + DialogUtils.checkDownload( + context, + apk.size, + gameEntity.id, + gameEntity.name + ) { isSubscribe: Boolean -> update(context, gameEntity, entrance, location, isSubscribe, traceEvent) } } diff --git a/app/src/main/java/com/gh/common/util/GameActivityDownloadHelper.kt b/app/src/main/java/com/gh/common/util/GameActivityDownloadHelper.kt index 67e02b4fd3..fc33ff7cd5 100644 --- a/app/src/main/java/com/gh/common/util/GameActivityDownloadHelper.kt +++ b/app/src/main/java/com/gh/common/util/GameActivityDownloadHelper.kt @@ -221,7 +221,7 @@ object GameActivityDownloadHelper { ) { GamePermissionDialogFragment.show((context as AppCompatActivity), gameEntity, gameEntity.info) { CertificationDialog.showCertificationDialog(context, gameEntity) { - DialogUtils.checkDownload(context, apk.size) { isSubscribe: Boolean -> + DialogUtils.checkDownload(context, apk.size, gameEntity.id, gameEntity.name) { isSubscribe: Boolean -> download(context, gameEntity, apk, isSubscribe, entrance, location, traceEvent) } } @@ -241,7 +241,12 @@ object GameActivityDownloadHelper { VHelper.validateVSpaceBeforeAction(context, gameEntity) { GamePermissionDialogFragment.show((context as AppCompatActivity), gameEntity, gameEntity.info) { CertificationDialog.showCertificationDialog(context, gameEntity) { - DialogUtils.checkDownload(context, apk.size) { isSubscribe: Boolean -> + DialogUtils.checkDownload( + context, + apk.size, + gameEntity.id, + gameEntity.name + ) { isSubscribe: Boolean -> download(context, gameEntity, apk, isSubscribe, entrance, location, traceEvent) } } @@ -262,7 +267,7 @@ object GameActivityDownloadHelper { DownloadDialog.showDownloadDialog(context, gameEntity, traceEvent, entrance, location) } else { CertificationDialog.showCertificationDialog(context, gameEntity) { - DialogUtils.checkDownload(context, apk.size) { isSubscribe: Boolean -> + DialogUtils.checkDownload(context, apk.size, gameEntity.id, gameEntity.name) { isSubscribe: Boolean -> plugin(context, gameEntity, apk, entrance, location, isSubscribe, traceEvent) } } @@ -355,7 +360,7 @@ object GameActivityDownloadHelper { location: String, traceEvent: ExposureEvent ) { - DialogUtils.checkDownload(context, apk.size) { isSubscribe: Boolean -> + DialogUtils.checkDownload(context, apk.size, gameEntity.id, gameEntity.name) { isSubscribe: Boolean -> update(context, gameEntity, apk, entrance, location, isSubscribe, traceEvent) } } 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 7d4640c68a..b857e062d4 100644 --- a/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt +++ b/app/src/main/java/com/gh/common/util/NewFlatLogUtils.kt @@ -2100,4 +2100,29 @@ object NewFlatLogUtils { } log(json) } + + // 下载流量提示弹窗展示事件 + @JvmStatic + fun logDownloadMobileDataDialogShow(gameId: String, gameName: String) { + val json = json { + KEY_EVENT to "download_mobile_data_dialog_show" + KEY_GAME_ID to gameId + KEY_GAME_NAME to gameName + parseAndPutMeta().invoke(this) + } + log(json, "event", false) + } + + // 下载流量提示弹窗点击事件 + @JvmStatic + fun logDownloadMobileDataDialogClick(gameId: String, gameName: String, button: String) { + val json = json { + KEY_EVENT to "download_mobile_data_dialog_click" + KEY_GAME_ID to gameId + KEY_GAME_NAME to gameName + "button" to button + parseAndPutMeta().invoke(this) + } + log(json, "event", false) + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt index 399ad50437..5e5eae6a54 100644 --- a/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt +++ b/app/src/main/java/com/gh/download/dialog/DownloadDialogItemViewHolder.kt @@ -373,7 +373,9 @@ class DownloadDialogItemViewHolder(val binding: DownloadDialogItemBinding) : Bas override fun onConfirm() { DialogUtils.checkDownload( context, - apkEntity.size + apkEntity.size, + gameEntity.id, + gameEntity.name ) { isSubscribe -> DownloadManager.createDownload( context, diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java index d642b07455..ec6de7adb7 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -294,7 +294,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { case subscribe: PermissionHelper.checkStoragePermissionBeforeAction(mContext, () -> { // 下载管理不用判断是否大于50M - DialogUtils.checkDownload(mContext, Float.toString(100F), isSubscribe -> { + DialogUtils.checkDownload(mContext, Float.toString(100F), downloadEntity.getGameId(), downloadEntity.getName(), isSubscribe -> { if (isSubscribe) { DownloadManager.getInstance().subscribe(downloadEntity); statusMap.put(url, DownloadStatus.subscribe.getStatus()); diff --git a/app/src/main/java/com/gh/gamecenter/download/UpdatableGameAdapter.kt b/app/src/main/java/com/gh/gamecenter/download/UpdatableGameAdapter.kt index e0b9c35d1c..bfe0dccae9 100644 --- a/app/src/main/java/com/gh/gamecenter/download/UpdatableGameAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/download/UpdatableGameAdapter.kt @@ -341,7 +341,9 @@ class UpdatableGameAdapter(private var mViewModel: UpdatableGameViewModel) : (CurrentActivityHolder.getCurrentActivity() as? FragmentActivity)?.checkStoragePermissionBeforeAction { DialogUtils.checkDownload( updateBtn.context, - update.size + update.size, + downloadEntity?.gameId ?: "", + downloadEntity?.name ?: "" ) { isSubscribe: Boolean -> if (str.contains("化")) { if (update.pluggableCollection != null) {