Merge branch 'fix-GHZS-1629' into 'dev'

fix: 神策数据埋点第一期--光环助手(修复部分上报数据不准确的问题) https://jira.shanqu.cc/browse/GHZS-1629

See merge request halo/android/assistant-android!820
This commit is contained in:
叶子维
2023-03-20 10:17:45 +08:00
15 changed files with 64 additions and 31 deletions

View File

@ -1063,7 +1063,7 @@ object DownloadItemUtils {
"DownLoadbuttonClick",
"game_id", gameEntity.id,
"game_name", gameEntity.name ?: "",
"game_type", gameEntity.gameType,
"game_type", gameEntity.category ?: "",
"download_status", gameEntity.downloadStatusChinese ?: "",
"button_name", buttonName,
"page_name", GlobalActivityManager.getCurrentPageEntity().pageName,

View File

@ -306,7 +306,7 @@ public class LibaoUtils {
public static void initLibaoBtn(final Context context, final TextView libaoBtn, final LibaoEntity libaoEntity,
final boolean isInstallRequired, final LibaoDetailAdapter adapter, boolean shouldUpdateStatus,
final String entrance, final OnLibaoStatusChangeListener listener) {
final String entrance, final String sourceEntrance, final OnLibaoStatusChangeListener listener) {
setLiBaoBtnStatusRound(libaoBtn, libaoEntity, shouldUpdateStatus, context);
String status = libaoEntity.getStatus();
@ -407,7 +407,7 @@ public class LibaoUtils {
if ("repeatLing".equals(status)) {
ToastUtils.showToast("礼包每天0点刷新明日0点后可再领一个");
} else {
libaoLing(context, libaoBtn, libaoEntity, adapter, isInstallRequired, null, entrance, listener);
libaoLing(context, libaoBtn, libaoEntity, adapter, isInstallRequired, null, entrance, sourceEntrance, listener);
}
SensorsBridge.trackEvent("GameGiftDraw",
"gift_type", "普通礼包",
@ -415,20 +415,20 @@ public class LibaoUtils {
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", entrance
"source_entrance", sourceEntrance
);
break;
case "再淘":
case "再淘一个":
case "淘号":
libaoTao(context, libaoBtn, libaoEntity, isInstallRequired, adapter, status, entrance, listener);
libaoTao(context, libaoBtn, libaoEntity, isInstallRequired, adapter, status, entrance, sourceEntrance, listener);
SensorsBridge.trackEvent("GameGiftDraw",
"gift_type", "淘号礼包",
"game_name", libaoEntity.getGame().getName(),
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", entrance
"source_entrance", sourceEntrance
);
break;
}
@ -437,7 +437,7 @@ public class LibaoUtils {
}
private static void libaoTao(Context context, TextView libaoBtn, LibaoEntity libaoEntity, boolean isInstallRequired, LibaoDetailAdapter adapter,
String status, String entrance, final OnLibaoStatusChangeListener listener) {
String status, String entrance, String sourceEntrance, final OnLibaoStatusChangeListener listener) {
if ("repeatTao".equals(status)) {
Utils.toast(context, "没到重复淘号时间, 礼包每天0点刷新");
return;
@ -500,7 +500,7 @@ public class LibaoUtils {
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", entrance
"source_entrance", sourceEntrance
);
}
@ -568,14 +568,14 @@ public class LibaoUtils {
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", entrance
"source_entrance", sourceEntrance
);
}
});
}
private static void libaoLing(final Context context, TextView libaoBtn, final LibaoEntity libaoEntity, final LibaoDetailAdapter adapter,
final boolean isInstallRequired, String captchaCode, final String entrance, final OnLibaoStatusChangeListener listener) {
final boolean isInstallRequired, String captchaCode, final String entrance, final String sourceEntrance, final OnLibaoStatusChangeListener listener) {
if (BuildConfig.DEBUG) {
if (libaoBtn != null) {
@ -613,7 +613,7 @@ public class LibaoUtils {
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", entrance
"source_entrance", sourceEntrance
);
return;
}
@ -649,7 +649,7 @@ public class LibaoUtils {
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", entrance
"source_entrance", sourceEntrance
);
}
@ -696,7 +696,7 @@ public class LibaoUtils {
}, false, "", "");
libaoEntity.setStatus("used_up");
if (libaoBtn != null) {
initLibaoBtn(context, libaoBtn, libaoEntity, isInstallRequired, adapter, false, entrance, listener);
initLibaoBtn(context, libaoBtn, libaoEntity, isInstallRequired, adapter, false, entrance, sourceEntrance, listener);
}
break;
case "maintaining":
@ -714,7 +714,7 @@ public class LibaoUtils {
} else if (exception.code() == 412) {
// 需要验证
GeetestUtils.getInstance().showDialog(context, captcha ->
libaoLing(context, libaoBtn, libaoEntity, adapter, isInstallRequired, captcha, entrance, listener));
libaoLing(context, libaoBtn, libaoEntity, adapter, isInstallRequired, captcha, entrance, sourceEntrance, listener));
return;
} else if (exception.code() == 401) {
return;
@ -728,7 +728,7 @@ public class LibaoUtils {
"game_id", libaoEntity.getGame().getId(),
"gift_id", libaoEntity.getId(),
"gift_name", libaoEntity.getName(),
"source_entrance", entrance
"source_entrance", sourceEntrance
);
}
}, captchaCode);

View File

@ -328,7 +328,7 @@ public class DownloadManager implements DownloadStatusListener {
ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_ICON_SUBSCRIPT, gameEntity.getIconSubscript());
ExtensionsKt.addMetaExtra(downloadEntity, Constants.IS_PLATFORM_RECOMMEND, apkEntity.getRecommend() != null ? "true" : "false");
ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_NAME, gameEntity.getName());
ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_TYPE, gameEntity.getGameType());
ExtensionsKt.addMetaExtra(downloadEntity, Constants.GAME_TYPE, gameEntity.getCategory());
ExtensionsKt.addMetaExtra(downloadEntity, Constants.AD_ICON_ACTIVE, String.valueOf(gameEntity.getAdIconActive()));
ExtensionsKt.addMetaExtra(downloadEntity, Constants.IS_AD_DATA, String.valueOf(gameEntity.isAdData()));
if (gameEntity.getIconFloat() != null) {
@ -380,7 +380,7 @@ public class DownloadManager implements DownloadStatusListener {
SensorsBridge.trackEvent("DownloadProcessBegin",
"game_id", gameEntity.getId(),
"game_name", gameEntity.getName(),
"game_type", gameEntity.getGameType(),
"game_type", gameEntity.getCategory(),
"page_name", GlobalActivityManager.getCurrentPageEntity().getPageName(),
"page_id", GlobalActivityManager.getCurrentPageEntity().getPageId(),
"page_business_id", GlobalActivityManager.getCurrentPageEntity().getPageBusinessId(),

View File

@ -298,11 +298,18 @@ open class SearchActivity : BaseActivity() {
private const val HINT_TEXT = "搜索游戏..."
@JvmStatic
fun getIntent(context: Context, searchImmediately: Boolean, hint: String, entrance: String): Intent {
fun getIntent(
context: Context,
searchImmediately: Boolean,
hint: String,
entrance: String,
sourceEntrance: String
): Intent {
val intent = Intent(context, SearchActivity::class.java)
intent.putExtra(KEY_SEARCH_IMMEDIATELY, searchImmediately)
intent.putExtra(EntranceConsts.KEY_HINT, hint)
intent.putExtra(EntranceConsts.KEY_ENTRANCE, entrance)
intent.putExtra(EntranceConsts.KEY_SOURCE_ENTRANCE, sourceEntrance)
return intent
}
}

View File

@ -245,7 +245,7 @@ public class LibaoDetailAdapter extends BaseRecyclerAdapter<ViewHolder> {
List<UserDataLibaoEntity> userDataLibaoList = mLibaoEntity.getMe().getUserDataLibaoList();
LibaoUtils.initLibaoBtn(mContext, holder.binding.libaodetailCopyBtn, mLibaoEntity,
mLibaoDetailEntity.getInstallRequired(), this, false,
StringUtils.buildString(mEntrance, "+(礼包详情[", mLibaoEntity.getName(), "])"), null);
StringUtils.buildString(mEntrance, "+(礼包详情[", mLibaoEntity.getName(), "])"), "礼包详情", null);
if (mLibaoEntity.getUniversal()) {
holder.binding.libaodetailDes.setVisibility(View.GONE);
} else {
@ -285,7 +285,7 @@ public class LibaoDetailAdapter extends BaseRecyclerAdapter<ViewHolder> {
if (mLibaoEntity.getStatus() != null && mLibaoDetailEntity != null) {
LibaoUtils.initLibaoBtn(mContext, holder.binding.libaodetailCopyBtn, mLibaoEntity,
mLibaoDetailEntity.getInstallRequired(), this, false,
StringUtils.buildString(mEntrance, "+(礼包详情[", mLibaoEntity.getName(), "])"), null);
StringUtils.buildString(mEntrance, "+(礼包详情[", mLibaoEntity.getName(), "])"), "礼包详情", null);
}
// 判断按钮状态是否为空(礼包详情进入),重新获取

View File

@ -164,7 +164,7 @@ public class DetailViewHolder {
"DownLoadbuttonClick",
"game_id", mGameEntity.getId(),
"game_name", mGameEntity.getName(),
"game_type", mGameEntity.getGameType(),
"game_type", mGameEntity.getCategory(),
"download_status", mGameEntity.getDownloadStatusChinese(),
"button_name", mViewHolder.mDownloadPb.getText(),
"page_name", GlobalActivityManager.getCurrentPageEntity().getPageName(),

View File

@ -206,6 +206,7 @@ class CategoryV2Fragment : LazyFragment() {
requireContext(),
false,
"",
"新分类2.0",
"新分类2.0"
)
startActivity(intent)

View File

@ -284,7 +284,7 @@ public class SearchToolbarFragment extends BaseLazyFragment implements View.OnCl
MtaHelper.onEvent("首页_点击", "顶栏", "搜索");
DataCollectionUtils.uploadClick(getActivity(), "搜索图标", "主页");
intent = SearchActivity.getIntent(requireContext(), true, mSearchHintTv.getHint().toString(), "(工具栏)");
intent = SearchActivity.getIntent(requireContext(), true, mSearchHintTv.getHint().toString(), "(工具栏)", mLocation);
startActivity(intent);
} else if (id == R.id.actionbar_search_input || id == R.id.actionbar_search_rl || id == R.id.actionbar_search_right) {
MtaHelper.onEvent("首页_点击", "顶栏", "搜索");
@ -293,7 +293,7 @@ public class SearchToolbarFragment extends BaseLazyFragment implements View.OnCl
LogUtils.uploadSearchGame("access_to_search", mLocation, "", "");
}
intent = SearchActivity.getIntent(requireContext(), false, mSearchHintTv.getHint().toString(), "(工具栏)");
intent = SearchActivity.getIntent(requireContext(), false, mSearchHintTv.getHint().toString(), "(工具栏)", mLocation);
startActivity(intent);
} else if (id == R.id.actionbar_notification) {
MtaHelper.onEvent("首页_点击", "顶栏", "消息中心");

View File

@ -382,7 +382,7 @@ class GameDetailFragment : ToolbarFragment(), IScrollable {
R.id.menu_search -> {
LogUtils.uploadSearchGame("access_to_search", "游戏详情", "", "")
val intent = SearchActivity.getIntent(requireContext(), false, "", "游戏详情")
val intent = SearchActivity.getIntent(requireContext(), false, "", "游戏详情", "游戏详情")
startActivity(intent)
}
}
@ -726,7 +726,7 @@ class GameDetailFragment : ToolbarFragment(), IScrollable {
"game_name", mGameEntity?.name ?: "",
"download_status", mGameEntity?.downloadStatusChinese ?: "",
"cloud_save_tab_status", if (data.showArchive) "开启" else "关闭",
"game_type", mGameEntity?.gameType ?: "",
"game_type", mGameEntity?.category ?: "",
"page_name", getCurrentPageEntity().pageName,
"page_id", getCurrentPageEntity().pageId,
"page_business_id", getCurrentPageEntity().pageBusinessId,

View File

@ -162,7 +162,16 @@ class GameLibaoAdapter(
}
// LibaoUtils.setLiBaoBtnStatusRound(holder.binding.receiveTv, libaoEntity,true, context)
LibaoUtils.initLibaoBtn(context, holder.binding.receiveTv, libaoEntity, false, null, true, "游戏详情") {
LibaoUtils.initLibaoBtn(
context,
holder.binding.receiveTv,
libaoEntity,
false,
null,
true,
"游戏详情",
"游戏详情"
) {
notifyItemChanged(position)
}
if (!libaoEntity.packageName.isNullOrEmpty()) {

View File

@ -224,7 +224,7 @@ class Libao2FragmentAdapter extends BaseRecyclerAdapter<ViewHolder> {
holder.binding.libaoDes.setText(content);
if (libaoEntity.getStatus() != null) {
LibaoUtils.initLibaoBtn(mContext, holder.binding.libaoBtnStatus, libaoEntity, false, null, true, mEntrance + "+(礼包中心:关注)", new LibaoUtils.OnLibaoStatusChangeListener() {
LibaoUtils.initLibaoBtn(mContext, holder.binding.libaoBtnStatus, libaoEntity, false, null, true, mEntrance + "+(礼包中心:关注)", "礼包中心-关注", new LibaoUtils.OnLibaoStatusChangeListener() {
@Override
public void onLibaoStatusChange() {
notifyItemChanged(position);

View File

@ -217,7 +217,8 @@ class LibaoNewAdapter(
if (libaoEntity.status != null) {
LibaoUtils.initLibaoBtn(
mContext, holder.binding.libaoBtnStatus, libaoEntity, false, null, true,
mEntrance + "+(礼包中心:最新)"
mEntrance + "+(礼包中心:最新)",
"礼包中心-最新"
) {
notifyItemChanged(position)
}

View File

@ -239,7 +239,8 @@ class LibaoSearchAdapter(
if (libaoEntity.status != null) {
LibaoUtils.initLibaoBtn(
mContext, holder.binding.libaoBtnStatus, libaoEntity, false, null, false,
"$mEntrance+(礼包中心:最新)"
"$mEntrance+(礼包中心:最新)",
"礼包中心-最新"
) {
notifyItemChanged(position)
}

View File

@ -52,8 +52,20 @@ class GlobalActivityLifecycleObserver : Application.ActivityLifecycleCallbacks {
override fun onActivityDestroyed(activity: Activity) {
AppManager.getInstance().removeActivityFromStack(activity)
if (activity is BaseActivity && GlobalActivityManager.pageStack.peek().pageId == activity.getUniqueId()) {
GlobalActivityManager.pageStack.pop()
if (activity is BaseActivity) {
if (GlobalActivityManager.pageStack.peek().pageId == activity.getUniqueId()) {
GlobalActivityManager.pageStack.pop()
} else {
var position = -1
GlobalActivityManager.pageStack.forEachIndexed { index, pageEntity ->
if (pageEntity.pageId == activity.getUniqueId()) {
position = index
}
}
if (position != -1) {
GlobalActivityManager.pageStack.removeAt(position)
}
}
}
}
}

View File

@ -83,6 +83,8 @@ public class EntranceConsts {
public static final String KEY_POSITION = "position";
public static final String KEY_SUB_POSITION = "sub_position";
public static final String KEY_ENTRANCE = "entrance";
public static final String KEY_SOURCE_ENTRANCE = "source_entrance";
public static final String KEY_ENTRANCE_LINK = "entrance_link";
public static final String KEY_TARGET = "target";
public static final String ENTRANCE_BROWSER = "(浏览器)";