From 14cf39f10b86983c628297957ac4920788756d4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B6=E5=AD=90=E7=BB=B4?= Date: Tue, 24 Dec 2024 11:41:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=EF=BC=9A=E6=9E=81=E5=85=89=E6=8E=A8=E9=80=81=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E5=8C=96=E2=80=94=E5=AE=A2=E6=88=B7=E7=AB=AF=20https://jira.sh?= =?UTF-8?q?anqu.cc/browse/GHZSCY-6945?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 2 +- app/src/main/AndroidManifest.xml | 1 + .../GameCollectionDetailProviderImpl.kt | 10 +- .../java/com/gh/common/util/DirectUtils.kt | 179 ++++++++++++++++-- .../java/com/gh/gamecenter/SkipActivity.java | 8 +- .../com/gh/gamecenter/UserInfoActivity.kt | 17 +- .../collection/GamesCollectionAdapter.kt | 19 +- .../detail/ColumnCollectionDetailFragment.kt | 32 +++- .../CustomCommonCollectionDetailFragment.kt | 32 ++++ .../detail/GameCollectionDetailActivity.kt | 15 +- .../detail/GameCollectionDetailFragment.kt | 1 + .../hotlist/GameCollectionHotListFragment.kt | 28 +++ .../mine/MyGameCollectionViewHolder.kt | 3 +- .../square/GameCollectionSquareAdapter.kt | 3 +- .../ServersCalendarManagementActivity.kt | 9 +- .../home/custom/CustomPageFragment.kt | 3 +- .../gh/gamecenter/mygame/MyGameActivity.kt | 9 +- .../personal/DeliveryInfoActivity.kt | 11 +- .../personal/HaloPersonalBannerAdapter.kt | 2 +- .../personal/HaloPersonalFunctionAdapter.kt | 2 +- .../personal/HaloPersonalRecommendAdapter.kt | 2 +- .../qa/editor/OnLinkClickListener.kt | 13 +- .../savegame/GameArchiveListActivity.kt | 9 +- .../search/fragment/SearchGameListFragment.kt | 3 +- .../simulatorgame/SimulatorGameActivity.kt | 13 +- .../gh/gamecenter/subject/SubjectFragment.kt | 34 +++- .../teenagermode/TeenagerModeActivity.kt | 9 +- .../wrapper/BaseTabWrapperFragment.kt | 4 +- .../wrapper/ToolbarWrapperActivity.kt | 8 +- .../main/java/com/halo/assistant/HaloApp.java | 18 +- .../push/provider/ACloudPushProviderImpl.kt | 6 +- .../com/gh/gamecenter/jg/push/JPushHelper.kt | 25 ++- .../jg/push/provider/JGPushProviderImpl.kt | 5 +- .../push/service/HaloJPushMessageReceiver.kt | 6 + .../gamecenter/common/constant/Constants.java | 4 +- .../common/constant/EntranceConsts.java | 2 + .../gamecenter/common/constant/RouteConsts.kt | 8 + .../gamecenter/common/utils/SensorsBridge.kt | 31 ++- .../gamecenter/core/provider/IPushProvider.kt | 6 + .../provider/IGameCollectionDetailProvider.kt | 6 +- .../view/message/MessageItemViewHolder.java | 15 +- .../view/message/MessageListAdapter.kt | 4 +- .../GameCollectionDetailProviderImpl.kt | 4 +- .../activity/ComposeSecurityActivity.kt | 18 +- 44 files changed, 518 insertions(+), 121 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8055a5e9ac..97c7af21ec 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -156,4 +156,4 @@ oss-upload&send-email: - /usr/local/bin/python /ci-android-mail-jira-comment.py only: - dev - - release \ No newline at end of file + - release diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b45b293587..697763562f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -639,6 +639,7 @@ diff --git a/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt b/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt index ce11919e0e..71a38e72a9 100644 --- a/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt +++ b/app/src/main/java/com/gh/common/provider/GameCollectionDetailProviderImpl.kt @@ -2,18 +2,16 @@ package com.gh.common.provider import android.content.Context import android.content.Intent -import com.therouter.router.Route -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.feature.provider.IGameCollectionDetailProvider import com.gh.gamecenter.gamecollection.detail.GameCollectionDetailActivity @com.therouter.inject.ServiceProvider class GameCollectionDetailProviderImpl : IGameCollectionDetailProvider { - override fun getIntent(context: Context, gameCollectionId: String, isFromSquare: Boolean): Intent { - return GameCollectionDetailActivity.getIntent(context, gameCollectionId, isFromSquare) + override fun getIntent(context: Context, gameCollectionId: String, isFromSquare: Boolean, entrance: String): Intent { + return GameCollectionDetailActivity.getIntent(context, gameCollectionId, isFromSquare, entrance) } - override fun getSpecifiedCommentIntent(context: Context, gameCollectionId: String, topCommentId: String): Intent { - return GameCollectionDetailActivity.getSpecifiedCommentIntent(context, gameCollectionId, topCommentId) + override fun getSpecifiedCommentIntent(context: Context, gameCollectionId: String, topCommentId: String, entrance: String): Intent { + return GameCollectionDetailActivity.getSpecifiedCommentIntent(context, gameCollectionId, topCommentId, entrance) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/util/DirectUtils.kt b/app/src/main/java/com/gh/common/util/DirectUtils.kt index 2e54b8d815..8c3b292ec4 100644 --- a/app/src/main/java/com/gh/common/util/DirectUtils.kt +++ b/app/src/main/java/com/gh/common/util/DirectUtils.kt @@ -11,7 +11,6 @@ import android.os.Bundle import android.text.TextUtils import androidx.appcompat.app.AppCompatActivity import androidx.core.os.bundleOf -import com.therouter.TheRouter import com.gh.ad.AdPluginDownloadHelper import com.gh.common.constant.Config import com.gh.common.exposure.ExposureManager.log @@ -57,7 +56,6 @@ import com.gh.gamecenter.gamecollection.hotlist.GameCollectionHotListActivity import com.gh.gamecenter.gamecollection.hotlist.GameCollectionListDetailActivity import com.gh.gamecenter.gamecollection.square.GameCollectionSquareActivity import com.gh.gamecenter.gamedetail.fuli.kaifu.ServersCalendarActivity -import com.gh.gamecenter.gamedetail.fuli.kaifu.ServersCalendarManagementActivity import com.gh.gamecenter.gamedetail.fuli.kaifu.ServersSubscribedGameListActivity import com.gh.gamecenter.gamedetail.history.HistoryApkListActivity import com.gh.gamecenter.gamedetail.rating.RatingReplyActivity @@ -77,7 +75,6 @@ import com.gh.gamecenter.qa.questions.newdetail.NewQuestionDetailActivity import com.gh.gamecenter.qa.subject.CommunitySubjectActivity import com.gh.gamecenter.qa.video.detail.ForumVideoDetailActivity import com.gh.gamecenter.retrofit.RetrofitManager -import com.gh.gamecenter.SearchActivity import com.gh.gamecenter.servers.GameServerTestActivity import com.gh.gamecenter.servers.GameServersActivity import com.gh.gamecenter.servers.gametest2.GameServerTestV2Activity @@ -98,6 +95,7 @@ import com.halo.assistant.fragment.WebFragment import com.lightgame.utils.Utils import com.tencent.mm.opensdk.modelbiz.WXLaunchMiniProgram import com.tencent.mm.opensdk.openapi.WXAPIFactory +import com.therouter.TheRouter import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import retrofit2.HttpException @@ -178,7 +176,23 @@ object DirectUtils { "qa", "feedback", "toolkit", - "float_window_game" + "float_window_game", + "my_halo", + "my_game", + "server_manager", + "receiving_information", + "game_archive", + "game_dynamics", + "game_upload", + "certification", + "wechat_reminder", + "apk_clean", + "personal_center", + "video_upload", + "account_security", + "simulator", + "teen_mode", + "message_center", ) fun directToLinkPage( @@ -383,8 +397,8 @@ object DirectUtils { } } - "authentication" -> { - context.startActivity(ShellActivity.getIntent(context, ShellActivity.Type.REAL_NAME_INFO, null)) + "authentication", "certification" -> { + directToRealName(context) } "user_background" -> { @@ -442,7 +456,7 @@ object DirectUtils { } ?: "" } - "halo_tab" -> directToHomeMyHaloTab(context) + "my_halo", "halo_tab" -> directToHomeMyHaloTab(context) "common_collection" -> directToCommonCollectionDetail( context, @@ -524,7 +538,8 @@ object DirectUtils { ToolbarWrapperActivity.getMultiTabNavIntent( context, linkEntity.link ?: "", - linkEntity.text ?: "" + linkEntity.text ?: "", + entrance ) ) @@ -532,16 +547,20 @@ object DirectUtils { ToolbarWrapperActivity.getCustomPageIntent( context, linkEntity.link ?: "", - linkEntity.text ?: "" + linkEntity.text ?: "", + entrance ) ) // 选中首页底部 tab "bottom_tab" -> { - val intent = Intent(context, MainActivity::class.java).apply { - flags = Intent.FLAG_ACTIVITY_CLEAR_TOP + if (HaloApp.getInstance().isRunningForeground) { + val intent = Intent(context, MainActivity::class.java) + intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP + context.startActivity(intent) + } else { + jumpActivity(context, Bundle()) } - context.startActivity(intent) if (linkEntity is LaunchRedirect) { MainWrapperRepository.getInstance().sendSelectTabEvent(linkEntity) @@ -568,6 +587,32 @@ object DirectUtils { } } + "my_game" -> directToMyGame(0, entrance) + + "server_manager" -> directToServersCalendarManagement(entrance) + + "receiving_information" -> directToDeliveryInfo(entrance) + + "game_archive" -> directToGameArchive(entrance) + + "game_dynamics" -> directToConcernInfo(context, entrance) + + "wechat_reminder" -> CheckLoginUtils.checkLogin(context, entrance) { + context.startActivity(WebActivity.getBindWechatIntent(context)) + } + + "apk_clean" -> directToCleanApk(context, entrance) + + "personal_center" -> directToUserInfo(entrance) + + "simulator" -> directToSimulatorGame(entrance) + + "account_security" -> directToAccountSecurity(entrance) + + "teen_mode" -> directToTeenMode(entrance) + + "message_center" -> directToMessageCenter(0, entrance) + "" -> { // do nothing } @@ -2083,13 +2128,17 @@ object DirectUtils { /** * 跳转到开服订阅页面 - * @param context 上下文 */ @JvmStatic - fun directToServersCalendarManagement(context: Context, entrance: String) { - CheckLoginUtils.checkLogin(context, entrance) { - context.startActivity(ServersCalendarManagementActivity.getIntent(context)) - } + fun directToServersCalendarManagement(entrance: String) { + val uri = Uri.Builder() + .path(RouteConsts.activity.serversCalendarManagementActivity) + .appendQueryParameter(RouteConsts.QueryParams.REQUIRE_LOGIN, "true") + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, entrance) + .build() + + TheRouter.build(uri.toString()) + .navigation() } fun directToSearch( @@ -2149,4 +2198,100 @@ object DirectUtils { ) } } + + @JvmStatic + fun directToMyGame(defaultTabIndex: Int, source: String) { + val uri = Uri.Builder() + .path(RouteConsts.activity.myGameActivity) + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, source) + .build() + + TheRouter.build(uri.toString()) + .withInt(BaseActivity_TabLayout.PAGE_INDEX, defaultTabIndex) + .navigation() + } + + @JvmStatic + fun directToDeliveryInfo(source: String) { + val uri = Uri.Builder() + .path(RouteConsts.activity.deliveryInfoActivity) + .appendQueryParameter(RouteConsts.QueryParams.REQUIRE_LOGIN, "true") + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, source) + .build() + + TheRouter.build(uri.toString()) + .navigation() + } + + @JvmStatic + fun directToGameArchive(source: String) { + val uri = Uri.Builder() + .path(RouteConsts.activity.gameArchiveListActivity) + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, source) + .build() + + TheRouter.build(uri.toString()) + .navigation() + } + + @JvmStatic + fun directToSimulatorGame(source: String) { + val uri = Uri.Builder() + .path(RouteConsts.activity.simulatorGameActivity) + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, source) + .build() + + TheRouter.build(uri.toString()) + .navigation() + } + + @JvmStatic + fun directToTeenMode(source: String) { + val uri = Uri.Builder() + .path(RouteConsts.activity.teenagerModeActivity) + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, source) + .build() + + TheRouter.build(uri.toString()) + .navigation() + } + + @JvmStatic + fun directToUserInfo(source: String) { + val uri = Uri.Builder() + .path(RouteConsts.activity.userInfoActivity) + .appendQueryParameter(RouteConsts.QueryParams.REQUIRE_LOGIN, "true") + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, source) + .build() + + TheRouter.build(uri.toString()) + .navigation() + } + + @JvmStatic + fun directToCleanApk(context: Context, source: String) { + val uri = Uri.Builder() + .path(RouteConsts.activity.cleanApkActivity) + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, source) + .build() + + PermissionHelper.checkManageAllFilesOrStoragePermissionBeforeAction(context) { + TheRouter.build(uri.toString()) + .navigation() + } + } + + @JvmStatic + fun directToAccountSecurity(source: String, isLogoutStyle: Boolean = false) { + val uri = Uri.Builder() + .path(RouteConsts.activity.securityActivity) + .appendQueryParameter(RouteConsts.QueryParams.REQUIRE_LOGIN, "true") + .appendQueryParameter(RouteConsts.QueryParams.SOURCE, source) + .build() + + TheRouter.build(uri.toString()) + .withString(KEY_ENTRANCE, source) + .withBoolean(KEY_DISPLAY_TYPE, isLogoutStyle) + .navigation() + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index 9f063aada7..d587507c31 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -62,16 +62,16 @@ import com.gh.gamecenter.common.base.activity.BaseActivity; import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.entity.CommunityEntity; -import com.gh.gamecenter.common.entity.LinkEntity; +import com.gh.gamecenter.common.entity.LaunchRedirect; import com.gh.gamecenter.common.entity.SimpleGameEntity; import com.gh.gamecenter.core.utils.GsonUtils; import com.gh.gamecenter.core.utils.ToastUtils; import com.gh.gamecenter.entity.SubjectData; import com.gh.gamecenter.entity.SubjectRecommendEntity; import com.gh.gamecenter.entity.VideoLinkEntity; +import com.gh.gamecenter.feature.minigame.MiniGameItemHelper; import com.gh.gamecenter.feature.utils.PlatformUtils; import com.gh.gamecenter.login.view.LoginActivity; -import com.gh.gamecenter.feature.minigame.MiniGameItemHelper; import com.gh.gamecenter.video.detail.VideoDetailContainerViewModel; import com.gh.gamecenter.video.videomanager.VideoManagerActivity; import com.gh.vspace.VHelper; @@ -356,8 +356,8 @@ public class SkipActivity extends BaseActivity { if (!TextUtils.isEmpty(dataString)) { byte[] linkData = Base64.decode(dataString, Base64.DEFAULT); String linkDataString = new String(linkData, "UTF-8"); - LinkEntity le = GsonUtils.INSTANCE.getGson().fromJson(linkDataString, LinkEntity.class); - DirectUtils.directToLinkPage(this, le, entrance, "", ""); + LaunchRedirect launchRedirect = GsonUtils.fromJson(linkDataString, LaunchRedirect.class); + DirectUtils.directToLinkPage(this, launchRedirect, entrance, "", ""); } } catch (Exception e) { e.printStackTrace(); diff --git a/app/src/main/java/com/gh/gamecenter/UserInfoActivity.kt b/app/src/main/java/com/gh/gamecenter/UserInfoActivity.kt index 5d94150d06..e14e21d782 100644 --- a/app/src/main/java/com/gh/gamecenter/UserInfoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/UserInfoActivity.kt @@ -4,12 +4,15 @@ import android.content.Context import android.content.Intent import android.os.Bundle import com.gh.gamecenter.common.base.activity.ToolBarActivity +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.updateStatusBarColor import com.halo.assistant.fragment.user.UserInfoFragment +import com.therouter.router.Route -/** - * 编辑资料 - */ +@Route( + path = RouteConsts.activity.userInfoActivity, + description = "个人中心" +) class UserInfoActivity : ToolBarActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -17,6 +20,14 @@ class UserInfoActivity : ToolBarActivity() { updateStatusBarColor(com.gh.gamecenter.common.R.color.ui_surface, com.gh.gamecenter.common.R.color.ui_surface) } + override fun provideNormalIntent(): Intent { + return getTargetIntent( + this, + UserInfoActivity::class.java, + UserInfoFragment::class.java + ) + } + companion object { fun getIntent(context: Context?): Intent? { return getTargetIntent( diff --git a/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionAdapter.kt b/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionAdapter.kt index f049b12ac2..2ceb614ad6 100644 --- a/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/collection/GamesCollectionAdapter.kt @@ -132,6 +132,13 @@ class GamesCollectionAdapter( ) mExposureEventArray?.put(position, exposureEvent) + val path = when (mViewModel.type) { + GamesCollectionFragment.TYPE_COLLECT -> "我的收藏-游戏单" + GamesCollectionFragment.TYPE_HISTORY -> "浏览记录-游戏单" + GamesCollectionFragment.TYPE_USER -> "个人主页-游戏单" + else -> "" + } + holder.binding.run { ImageUtils.display(poster, itemEntity.cover) nameTv.text = itemEntity.title @@ -249,12 +256,6 @@ class GamesCollectionAdapter( } userIcon.setOnClickListener { - val path = when (mViewModel.type) { - GamesCollectionFragment.TYPE_COLLECT -> "我的收藏-游戏单" - GamesCollectionFragment.TYPE_HISTORY -> "浏览记录-游戏单" - GamesCollectionFragment.TYPE_USER -> "个人主页-游戏单" - else -> "" - } DirectUtils.directToHomeActivity(mContext, itemEntity.user?.id, "", path) } userName.setOnClickListener { userIcon.performClick() } @@ -266,7 +267,8 @@ class GamesCollectionAdapter( mContext, itemEntity.id, isScrollToCommentArea = true, - exposureSourceList = ArrayList(exposureEvent.source) + exposureSourceList = ArrayList(exposureEvent.source), + entrance = path ) ) } @@ -329,7 +331,8 @@ class GamesCollectionAdapter( GameCollectionDetailActivity.getIntent( mContext, itemEntity.id, - exposureSourceList = ArrayList(exposureEvent.source) + exposureSourceList = ArrayList(exposureEvent.source), + entrance = path ) ) } else { diff --git a/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailFragment.kt index 9a4ac04f42..258f5b9630 100644 --- a/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/game/columncollection/detail/ColumnCollectionDetailFragment.kt @@ -4,14 +4,18 @@ import android.os.Bundle import android.view.View import androidx.lifecycle.ViewModelProviders import com.gh.gamecenter.R +import com.gh.gamecenter.common.base.GlobalActivityManager import com.gh.gamecenter.common.baselist.LazyListFragment import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.EntranceConsts.KEY_SHOW_SUBJECT_TAB import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.exposure.ExposureSource +import com.gh.gamecenter.common.json.json +import com.gh.gamecenter.common.utils.SensorsBridge import com.gh.gamecenter.common.utils.observeNonNull import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.databinding.FragmentColumnCollectionDetailBinding +import com.gh.gamecenter.entity.GameColumnCollection import com.gh.gamecenter.entity.SubjectData import com.gh.gamecenter.subject.tab.SubjectTabFragment @@ -55,11 +59,37 @@ class ColumnCollectionDetailFragment : LazyListFragment?) { if (list != null && list.isNotEmpty()) { showSubjectTab(list) diff --git a/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CustomCommonCollectionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CustomCommonCollectionDetailFragment.kt index b0328ac7b4..89f536a63c 100644 --- a/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CustomCommonCollectionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/game/commoncollection/detail/CustomCommonCollectionDetailFragment.kt @@ -11,18 +11,22 @@ import com.gh.common.exposure.ExposureListener import com.gh.common.exposure.IExposable import com.gh.common.util.NewLogUtils import com.gh.gamecenter.R +import com.gh.gamecenter.common.base.GlobalActivityManager import com.gh.gamecenter.common.baselist.LazyListFragment import com.gh.gamecenter.common.baselist.ListAdapter import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.exposure.ExposureSource +import com.gh.gamecenter.common.json.json +import com.gh.gamecenter.common.utils.SensorsBridge import com.gh.gamecenter.common.utils.dip2px import com.gh.gamecenter.common.utils.viewModelProvider import com.gh.gamecenter.common.view.FixGridLayoutManager import com.gh.gamecenter.common.view.GridSpacingItemDecoration import com.gh.gamecenter.common.view.VerticalItemDecoration import com.gh.gamecenter.databinding.FragmentListBaseSkeletonBinding +import com.gh.gamecenter.entity.CommonCollectionEntity import com.gh.gamecenter.home.custom.model.CustomPageItem import com.gh.gamecenter.home.custom.model.CustomPageItem.Companion.COMMON_CONTENT_COLLECTION_LAYOUT_HORIZONTAL_SLIDE_BANNER @@ -120,6 +124,8 @@ class CustomCommonCollectionDetailFragment : LazyListFragment diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailActivity.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailActivity.kt index 1af64a3256..fa4f90987d 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailActivity.kt @@ -49,21 +49,24 @@ class GameCollectionDetailActivity : ToolBarActivity() { fun getIntent( context: Context, gameCollectionId: String, - isFromSquare: Boolean = false + isFromSquare: Boolean = false, + entrance: String = "" ): Intent { - return getIntent(context, gameCollectionId, "", isFromSquare, false) + return getIntent(context, gameCollectionId, "", isFromSquare, false, entrance = entrance) } @JvmStatic fun getSpecifiedCommentIntent( context: Context, gameCollectionId: String, - topCommentId: String + topCommentId: String, + entrance: String ): Intent { return getIntent( context, gameCollectionId, topCommentId, isFromSquare = false, - isScrollToCommentArea = true + isScrollToCommentArea = true, + entrance = entrance ) } @@ -74,13 +77,15 @@ class GameCollectionDetailActivity : ToolBarActivity() { topCommentId: String = "", isFromSquare: Boolean = false, isScrollToCommentArea: Boolean = false, - exposureSourceList: ArrayList? = null + exposureSourceList: ArrayList? = null, + entrance: String = "" ): Intent { val bundle = Bundle() bundle.putString(EntranceConsts.KEY_GAME_COLLECTION_ID, gameCollectionId) bundle.putString(EntranceConsts.KEY_TOP_COMMENT_ID, topCommentId) bundle.putBoolean(EntranceConsts.KEY_IS_FROM_SQUARE, isFromSquare) bundle.putBoolean(EntranceConsts.KEY_SCROLL_TO_COMMENT_AREA, isScrollToCommentArea) + bundle.putString(EntranceConsts.KEY_ENTRANCE, entrance) if (exposureSourceList != null) { bundle.putParcelableArrayList(EntranceConsts.KEY_EXPOSURE_SOURCE_LIST, exposureSourceList) } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt index 3ae88b9d09..ffd51c95bf 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt @@ -851,6 +851,7 @@ class GameCollectionDetailFragment : trackEvent.put("game_collect_title", mGameCollectionTitle) trackEvent.put("game_collect_id", mGameCollectionId) trackEvent.put("stay_length", mElapsedHelper?.elapsedTime) + trackEvent.put("source_entrance", mEntrance) } catch (e: JSONException) { e.printStackTrace() } diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/hotlist/GameCollectionHotListFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/hotlist/GameCollectionHotListFragment.kt index 3191ba6228..b11dfbf68e 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/hotlist/GameCollectionHotListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/hotlist/GameCollectionHotListFragment.kt @@ -6,6 +6,7 @@ import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.RecyclerView import com.gh.common.exposure.ExposureListener import com.gh.common.util.NewFlatLogUtils +import com.gh.gamecenter.common.base.GlobalActivityManager import com.gh.gamecenter.common.baselist.ListFragment import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.exposure.ExposureSource @@ -58,6 +59,7 @@ class GameCollectionHotListFragment : ListFragment() diff --git a/app/src/main/java/com/gh/gamecenter/personal/DeliveryInfoActivity.kt b/app/src/main/java/com/gh/gamecenter/personal/DeliveryInfoActivity.kt index 706f3fe8c4..1e1b2d6d5b 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/DeliveryInfoActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/DeliveryInfoActivity.kt @@ -3,13 +3,16 @@ package com.gh.gamecenter.personal import android.content.Context import android.content.Intent import android.os.Bundle -import com.gh.gamecenter.common.base.activity.ToolBarActivity import com.gh.gamecenter.R +import com.gh.gamecenter.common.base.activity.ToolBarActivity +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.updateStatusBarColor +import com.therouter.router.Route -/** - * 收货信息 - */ +@Route( + path = RouteConsts.activity.deliveryInfoActivity, + description = "收货信息" +) class DeliveryInfoActivity : ToolBarActivity() { override fun onCreate(savedInstanceState: Bundle?) { 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 cf3bc09c1c..0d8ec08ce2 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalBannerAdapter.kt @@ -217,7 +217,7 @@ class HaloPersonalBannerAdapter(context: Context) : BaseRecyclerAdapter {// 开服管理 - DirectUtils.directToServersCalendarManagement(mContext, "我的光环-活动位") + DirectUtils.directToServersCalendarManagement("我的光环-活动位") } else -> { diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt index aa849b422c..28f0199ed8 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalFunctionAdapter.kt @@ -209,7 +209,7 @@ class HaloPersonalFunctionAdapter(context: Context) : BaseRecyclerAdapter {// 开服管理 - DirectUtils.directToServersCalendarManagement(mContext, "我的光环-更多功能") + DirectUtils.directToServersCalendarManagement("我的光环-更多功能") } else -> { diff --git a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalRecommendAdapter.kt b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalRecommendAdapter.kt index 98d7c97c79..8df21258a2 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalRecommendAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/personal/HaloPersonalRecommendAdapter.kt @@ -243,7 +243,7 @@ class HaloPersonalRecommendAdapter(val context: Context) : BaseRecyclerAdapter {// 开服管理 - DirectUtils.directToServersCalendarManagement(mContext, "我的光环-推荐位") + DirectUtils.directToServersCalendarManagement("我的光环-推荐位") } else -> { diff --git a/app/src/main/java/com/gh/gamecenter/qa/editor/OnLinkClickListener.kt b/app/src/main/java/com/gh/gamecenter/qa/editor/OnLinkClickListener.kt index 84daee1315..bedf40f833 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/editor/OnLinkClickListener.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/editor/OnLinkClickListener.kt @@ -1,16 +1,15 @@ package com.gh.gamecenter.qa.editor import android.content.Context -import android.webkit.JavascriptInterface -import com.gh.gamecenter.common.base.activity.BaseActivity -import com.gh.gamecenter.core.AppExecutor -import com.gh.common.util.* +import com.gh.common.util.DirectUtils import com.gh.common.view.RichEditor import com.gh.gamecenter.GameDetailActivity -import com.gh.gamecenter.core.utils.GsonUtils +import com.gh.gamecenter.common.base.activity.BaseActivity +import com.gh.gamecenter.common.entity.CommunityEntity import com.gh.gamecenter.common.utils.clickToastByStatus import com.gh.gamecenter.common.utils.tryWithDefaultCatch -import com.gh.gamecenter.common.entity.CommunityEntity +import com.gh.gamecenter.core.AppExecutor +import com.gh.gamecenter.core.utils.GsonUtils import com.gh.gamecenter.entity.MyVideoEntity import com.gh.gamecenter.gamecollection.detail.GameCollectionDetailActivity import com.gh.gamecenter.qa.answer.detail.SimpleAnswerDetailActivity @@ -61,7 +60,7 @@ class OnLinkClickListener( ) } "game_collection" -> { - context.startActivity(GameCollectionDetailActivity.getIntent(context, insertEntity.id ?: "")) + context.startActivity(GameCollectionDetailActivity.getIntent(context, insertEntity.id ?: "", entrance = entrance)) } "video" -> { DirectUtils.directToVideoDetail(context, insertEntity.id ?: "", entrance, "$path-链接") diff --git a/app/src/main/java/com/gh/gamecenter/savegame/GameArchiveListActivity.kt b/app/src/main/java/com/gh/gamecenter/savegame/GameArchiveListActivity.kt index 96a6878cf0..c1c727addc 100644 --- a/app/src/main/java/com/gh/gamecenter/savegame/GameArchiveListActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/savegame/GameArchiveListActivity.kt @@ -7,12 +7,15 @@ import android.view.View import androidx.fragment.app.Fragment import com.gh.common.util.NewFlatLogUtils import com.gh.gamecenter.common.base.activity.BaseActivity_TabLayout +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.SensorsBridge import com.gh.gamecenter.common.utils.updateStatusBarColor +import com.therouter.router.Route -/** - * 游戏存档 - */ +@Route( + path = RouteConsts.activity.gameArchiveListActivity, + description = "游戏存档" +) class GameArchiveListActivity : BaseActivity_TabLayout() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/com/gh/gamecenter/search/fragment/SearchGameListFragment.kt b/app/src/main/java/com/gh/gamecenter/search/fragment/SearchGameListFragment.kt index 8704b0ff9d..cfec15eef1 100644 --- a/app/src/main/java/com/gh/gamecenter/search/fragment/SearchGameListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/search/fragment/SearchGameListFragment.kt @@ -116,7 +116,8 @@ class SearchGameListFragment : LazyFragment() { context = requireContext(), itemId, topCommentId = "", - exposureSourceList = exposureSourceList.toArrayList() + exposureSourceList = exposureSourceList.toArrayList(), + entrance = "游戏单搜索" ) ) }) diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameActivity.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameActivity.kt index c05867c76a..e25f3b7411 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameActivity.kt @@ -4,11 +4,14 @@ import android.content.Context import android.content.Intent import android.os.Bundle import com.gh.gamecenter.common.base.activity.ToolBarActivity +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.updateStatusBarColor +import com.therouter.router.Route -/** - * 模拟器游戏 - */ +@Route( + path = RouteConsts.activity.simulatorGameActivity, + description = "模拟器游戏" +) class SimulatorGameActivity : ToolBarActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -19,6 +22,10 @@ class SimulatorGameActivity : ToolBarActivity() { override fun isAutoResetViewBackgroundEnabled() = true + override fun provideNormalIntent(): Intent { + return getTargetIntent(this, SimulatorGameActivity::class.java, SimulatorGameFragment::class.java) + } + override fun onDarkModeChanged() { super.onDarkModeChanged() updateStatusBarColor(com.gh.gamecenter.common.R.color.ui_surface, com.gh.gamecenter.common.R.color.ui_surface) diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.kt index f0ea398c24..956a0e9bc8 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectFragment.kt @@ -5,8 +5,11 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProviders import com.gh.gamecenter.R +import com.gh.gamecenter.common.base.GlobalActivityManager import com.gh.gamecenter.common.base.fragment.LazyFragment import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.json.json +import com.gh.gamecenter.common.utils.SensorsBridge import com.gh.gamecenter.core.utils.PageSwitchDataHelper import com.gh.gamecenter.databinding.FragmentSubjectBinding import com.gh.gamecenter.entity.SubjectSettingEntity @@ -54,12 +57,39 @@ open class SubjectFragment : LazyFragment() { if (!isColumnCollection) {// 专题合集详情子页面不需要显示专题名称 // 获取专题名称 - mViewModel?.subjectNameLD?.observe(this, Observer { + mViewModel?.subjectNameLD?.observe(this) { setNavigationTitle(it) - }) + } + logPageShow() } } + private fun logPageShow() { + val tabIndex = arguments?.getInt(EntranceConsts.KEY_TAB_INDEX, -1) ?: -1 + val tabName = arguments?.getString(EntranceConsts.KEY_TAB_NAME, "") ?: "" + val multiTabNavId = arguments?.getString(EntranceConsts.KEY_MULTI_TAB_NAV_ID, "") ?: "" + val multiTabNavName = arguments?.getString(EntranceConsts.KEY_MULTI_TAB_NAV_NAME, "") ?: "" + val bottomTabName = arguments?.getString(EntranceConsts.KEY_BOTTOM_TAB_NAME, "") ?: "" + mBaseHandler.postDelayed({ + SensorsBridge.trackEvent("ColumnDetailPageShow", json { + "game_column_name" to mViewModel?.subjectData?.subjectName + "game_column_id" to mViewModel?.subjectData?.subjectId + "page_name" to GlobalActivityManager.getCurrentPageEntity().pageName + "page_id" to GlobalActivityManager.getCurrentPageEntity().pageId + "page_business_id" to GlobalActivityManager.getCurrentPageEntity().pageBusinessId + "last_page_name" to GlobalActivityManager.getLastPageEntity().pageName + "last_page_id" to GlobalActivityManager.getLastPageEntity().pageId + "last_page_business_id" to GlobalActivityManager.getLastPageEntity().pageBusinessId + "bottom_tab" to bottomTabName + "several_tab_page_name" to multiTabNavName + "several_tab_page_id" to multiTabNavId + "position" to tabIndex + "tab_content" to tabName + "source_entrance" to mEntrance + }) + }, 3000L) + } + override fun initRealView() { super.initRealView() diff --git a/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeActivity.kt b/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeActivity.kt index e3c9e01ddf..9740aba156 100644 --- a/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/teenagermode/TeenagerModeActivity.kt @@ -6,11 +6,14 @@ import android.os.Bundle import androidx.fragment.app.Fragment import com.gh.gamecenter.R import com.gh.gamecenter.common.base.activity.BaseActivity +import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.utils.updateStatusBarColor +import com.therouter.router.Route -/** - * 青少年模式 - */ +@Route( + path = RouteConsts.activity.teenagerModeActivity, + description = "青少年模式" +) class TeenagerModeActivity : BaseActivity() { private var mContainerFragment: Fragment? = null diff --git a/app/src/main/java/com/gh/gamecenter/wrapper/BaseTabWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/wrapper/BaseTabWrapperFragment.kt index e761e3c332..daab7cf457 100644 --- a/app/src/main/java/com/gh/gamecenter/wrapper/BaseTabWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/wrapper/BaseTabWrapperFragment.kt @@ -142,7 +142,9 @@ abstract class BaseTabWrapperFragment : BaseLazyFragment(), IMultiTab { "several_tab_page_name", multiTabNavName, "several_tab_page_id", - multiTabNavId + multiTabNavId, + "source_entrance", + mEntrance ) } } diff --git a/app/src/main/java/com/gh/gamecenter/wrapper/ToolbarWrapperActivity.kt b/app/src/main/java/com/gh/gamecenter/wrapper/ToolbarWrapperActivity.kt index e38c8cc7fd..bcb7d006ea 100644 --- a/app/src/main/java/com/gh/gamecenter/wrapper/ToolbarWrapperActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/wrapper/ToolbarWrapperActivity.kt @@ -46,21 +46,21 @@ class ToolbarWrapperActivity : BaseActivity() { } companion object { - fun getMultiTabNavIntent(context: Context, multiTabNavId: String, multiTabNavName: String): Intent { + fun getMultiTabNavIntent(context: Context, multiTabNavId: String, multiTabNavName: String, entrance: String): Intent { val intent = Intent(context, ToolbarWrapperActivity::class.java) intent.putExtra(EntranceConsts.KEY_MULTI_TAB_NAV_ID, multiTabNavId) intent.putExtra(EntranceConsts.KEY_MULTI_TAB_NAV_NAME, multiTabNavName) intent.putExtra(EntranceConsts.KEY_NAVIGATION_TITLE, multiTabNavName) - intent.putExtra(EntranceConsts.KEY_ENTRANCE, "多tab导航页") + intent.putExtra(EntranceConsts.KEY_ENTRANCE, entrance) return intent } - fun getCustomPageIntent(context: Context, pageId: String, pageName: String): Intent { + fun getCustomPageIntent(context: Context, pageId: String, pageName: String, entrance: String): Intent { val intent = Intent(context, ToolbarWrapperActivity::class.java) intent.putExtra(EntranceConsts.KEY_CUSTOM_PAGE_ID, pageId) intent.putExtra(EntranceConsts.KEY_CUSTOM_PAGE_NAME, pageName) intent.putExtra(EntranceConsts.KEY_NAVIGATION_TITLE, pageName) - intent.putExtra(EntranceConsts.KEY_ENTRANCE, "自定义页面") + intent.putExtra(EntranceConsts.KEY_ENTRANCE, entrance) return intent } } diff --git a/app/src/main/java/com/halo/assistant/HaloApp.java b/app/src/main/java/com/halo/assistant/HaloApp.java index 0be06d3309..7acb50d164 100644 --- a/app/src/main/java/com/halo/assistant/HaloApp.java +++ b/app/src/main/java/com/halo/assistant/HaloApp.java @@ -17,8 +17,6 @@ import androidx.lifecycle.ProcessLifecycleOwner; import androidx.multidex.MultiDexApplication; import androidx.webkit.WebViewCompat; -import com.gh.gamecenter.login.interceptor.LoginInterceptor; -import com.therouter.TheRouter; import com.facebook.imageformat.DefaultImageFormats; import com.facebook.imagepipeline.core.ImagePipelineConfig; import com.facebook.imagepipeline.core.ImagePipelineFactory; @@ -56,6 +54,7 @@ import com.gh.gamecenter.common.utils.DeviceUtils; import com.gh.gamecenter.common.utils.EnvHelper; import com.gh.gamecenter.common.utils.ExtensionsKt; import com.gh.gamecenter.common.utils.ImageUtils; +import com.gh.gamecenter.common.utils.SensorsBridge; import com.gh.gamecenter.core.AppExecutor; import com.gh.gamecenter.core.iinterface.IApplication; import com.gh.gamecenter.core.provider.IFlavorProvider; @@ -63,6 +62,7 @@ import com.gh.gamecenter.core.provider.IPushProvider; import com.gh.gamecenter.core.provider.IQGameProvider; import com.gh.gamecenter.core.utils.GsonUtils; import com.gh.gamecenter.core.utils.SPUtils; +import com.gh.gamecenter.login.interceptor.LoginInterceptor; import com.gh.gamecenter.login.user.UserManager; import com.gh.gamecenter.login.user.UserRepository; import com.gh.gamecenter.login.utils.QuickLoginHelper; @@ -83,6 +83,9 @@ import com.lightgame.utils.Utils; import com.llew.huawei.verifier.LoadedApkHuaWei; import com.shuyu.gsyvideoplayer.cache.CacheFactory; import com.shuyu.gsyvideoplayer.player.PlayerFactory; +import com.therouter.TheRouter; +import com.therouter.TheRouterKt; +import com.therouter.router.NavigatorKt; import java.lang.reflect.Method; import java.util.List; @@ -94,9 +97,6 @@ import io.reactivex.schedulers.Schedulers; import tv.danmaku.ijk.media.exo2.Exo2PlayerManager; import tv.danmaku.ijk.media.exo2.ExoPlayerCacheManager; -import com.therouter.TheRouterKt; -import com.therouter.router.NavigatorKt; - public class HaloApp extends MultiDexApplication { private static HaloApp mInstance; @@ -473,7 +473,13 @@ public class HaloApp extends MultiDexApplication { */ private void initPushEngine() { IPushProvider pushProvider = TheRouter.get(IPushProvider.class); - if (pushProvider != null) pushProvider.initialize(this); + if (pushProvider != null) { + pushProvider.initialize(this); + pushProvider.setOnPushOpenedCallback((id, title, content, linkType, linkId) -> { + SensorsBridge.trackJiGuangPushClick(id, title, content, linkType, linkId); + return null; + }); + } } /** diff --git a/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/provider/ACloudPushProviderImpl.kt b/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/provider/ACloudPushProviderImpl.kt index 933ce53320..9a81cf731f 100644 --- a/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/provider/ACloudPushProviderImpl.kt +++ b/feature/acloud_push/src/main/java/com/gh/gamecenter/acloud/push/provider/ACloudPushProviderImpl.kt @@ -1,9 +1,7 @@ package com.gh.gamecenter.acloud.push.provider import android.content.Context -import com.therouter.router.Route import com.gh.gamecenter.acloud.push.ACloudPushHelper -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPushProvider import io.reactivex.Single @@ -45,5 +43,7 @@ class ACloudPushProviderImpl : IPushProvider { // do nothing } - + override fun setOnPushOpenedCallback(callback: (String, String, String, String) -> Unit) { + // do nothing + } } \ No newline at end of file diff --git a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/JPushHelper.kt b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/JPushHelper.kt index 96bf3e825e..b79f9e6430 100644 --- a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/JPushHelper.kt +++ b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/JPushHelper.kt @@ -2,17 +2,20 @@ package com.gh.gamecenter.jg.push import android.annotation.SuppressLint import android.content.Context +import android.net.Uri import android.os.Build +import android.util.Base64 import cn.jiguang.api.utils.JCollectionAuth import cn.jpush.android.api.JPushInterface -import com.therouter.TheRouter -import com.gh.gamecenter.common.constant.RouteConsts +import com.gh.gamecenter.common.entity.LinkEntity import com.gh.gamecenter.common.utils.SensorsBridge import com.gh.gamecenter.common.utils.singleToMain import com.gh.gamecenter.common.utils.toRequestBody import com.gh.gamecenter.core.provider.IAppProvider +import com.gh.gamecenter.core.utils.GsonUtils import com.gh.gamecenter.jg.push.retrofit.RetrofitManager import com.lightgame.utils.Utils +import com.therouter.TheRouter object JPushHelper { const val TAG = "JPushHelper" @@ -20,11 +23,14 @@ object JPushHelper { private var badgeCount = 0 // 角标计数 + var onPushOpenedCallback: ((String, String, String, String, String) -> Unit)? = null + fun init(applicationContext: Context) { // 关闭SDK自启动 (https://docs.jiguang.cn/jverification/guideline/jghgzy) JCollectionAuth.enableAutoWakeup(applicationContext, false) JPushInterface.setSmartPushEnable(applicationContext, false) JPushInterface.setLinkMergeEnable(applicationContext, false) + JPushInterface.setNotificationCallBackEnable(applicationContext, true) JPushInterface.setDebugMode(BuildConfig.DEBUG) JPushInterface.init(applicationContext) @@ -73,4 +79,19 @@ object JPushHelper { badgeCount = 0 JPushInterface.setBadgeNumber(applicationContext, badgeCount) } + + fun onNotifyMessageOpened( + id: String, + title: String, + content: String, + deepLink: String, + ) { + val uri = Uri.parse(deepLink) + val dataString = uri.getQueryParameter("data") ?: return + val linkData: ByteArray = Base64.decode(dataString, Base64.DEFAULT) + val linkDataString = String(linkData, charset("UTF-8")) + val link = GsonUtils.fromJson(linkDataString, LinkEntity::class.java) + + onPushOpenedCallback?.invoke(id, title, content, link.type ?: "", link.link ?: "") + } } \ No newline at end of file diff --git a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/provider/JGPushProviderImpl.kt b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/provider/JGPushProviderImpl.kt index 2cb86003d5..b98ca07c0e 100644 --- a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/provider/JGPushProviderImpl.kt +++ b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/provider/JGPushProviderImpl.kt @@ -1,8 +1,6 @@ package com.gh.gamecenter.jg.push.provider import android.content.Context -import com.therouter.router.Route -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.core.provider.IPushProvider import com.gh.gamecenter.jg.push.HaloApp import com.gh.gamecenter.jg.push.JPushHelper @@ -51,4 +49,7 @@ class JGPushProviderImpl : IPushProvider { JPushHelper.cleanBadgeNumber(applicationContext) } + override fun setOnPushOpenedCallback(callback: (String, String, String, String, String) -> Unit) { + JPushHelper.onPushOpenedCallback = callback + } } \ No newline at end of file diff --git a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/service/HaloJPushMessageReceiver.kt b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/service/HaloJPushMessageReceiver.kt index 0c15cdefcc..d21f3dbb5b 100644 --- a/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/service/HaloJPushMessageReceiver.kt +++ b/feature/jg_push/src/main/java/com/gh/gamecenter/jg/push/service/HaloJPushMessageReceiver.kt @@ -24,6 +24,12 @@ class HaloJPushMessageReceiver: JPushMessageReceiver() { Utils.log(TAG, "onNotifyMessageOpened: $message") JPushHelper.subtractBadgeNumber(context.applicationContext) + JPushHelper.onNotifyMessageOpened( + message.msgId ?: "", + message.notificationTitle ?: "", + message.notificationContent ?: "", + message.deeplink ?: "" + ) } override fun onNotifyMessageDismiss(context: Context, message: NotificationMessage) { diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java index 688a5ca82c..10a57f3cf1 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/Constants.java @@ -1,8 +1,8 @@ package com.gh.gamecenter.common.constant; -import com.therouter.TheRouter; import com.gh.gamecenter.core.provider.IPackageUtilsProvider; import com.gh.gamecenter.core.utils.TimeUtils; +import com.therouter.TheRouter; public class Constants { @@ -350,7 +350,7 @@ public class Constants { public static final String[] REPORT_LIST = new String[]{"垃圾广告营销", "恶意攻击谩骂", "淫秽色情信息", "违法有害信息", "其他原因"}; public static final String[] FEEDBACK_REASON_LIST = new String[]{"重复推荐", "不感兴趣", "与推荐描述不符", "已经玩过了", "游戏质量差", "游戏太旧"}; - public static final String ENTRANCE_UNKNOWN = "(unknown)"; + public static final String ENTRANCE_UNKNOWN = "其他"; public static final String DEFAULT_TEXT_WRAPPER = "\\{\\{(.+?)\\}\\}|###(.+?)###"; diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java index 2f003ddbd8..4bef37a44f 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/EntranceConsts.java @@ -367,4 +367,6 @@ public class EntranceConsts { public static final String TAB_TYPE_BBS = "论坛"; public static final String KEY_UID = "uid"; + + public static final String KEY_DISPLAY_TYPE = "display_type"; } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt b/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt index e37aa59fd2..e2280034c0 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/constant/RouteConsts.kt @@ -18,7 +18,15 @@ object RouteConsts { const val gameDetailActivity = "/activity/game_detail" const val userHomeActivity = "/activity/user_home" + const val userInfoActivity = "/activity/user_info" + const val teenagerModeActivity = "/activity/teen_mode" + const val myGameActivity = "/activity/my_game" + const val deliveryInfoActivity = "/activity/receiving_information" + const val simulatorGameActivity = "/activity/simulator" + const val gameArchiveListActivity = "/activity/game_archive" const val quickLoginActivity = "/activity/quick_login_activity" + const val securityActivity = "/activity/account_security" + const val serversCalendarManagementActivity = "/activity/server_manager" const val aboutActivity = "/settings/AboutActivity" const val webActivity = "/setting/WebActivity" diff --git a/module_common/src/main/java/com/gh/gamecenter/common/utils/SensorsBridge.kt b/module_common/src/main/java/com/gh/gamecenter/common/utils/SensorsBridge.kt index 3fb5a37ed0..f201707430 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/utils/SensorsBridge.kt +++ b/module_common/src/main/java/com/gh/gamecenter/common/utils/SensorsBridge.kt @@ -1,14 +1,13 @@ package com.gh.gamecenter.common.utils import android.app.Application -import com.therouter.TheRouter import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.constant.RouteConsts import com.gh.gamecenter.common.entity.SensorsEvent import com.gh.gamecenter.common.exposure.ExposureSource import com.gh.gamecenter.common.json.json import com.gh.gamecenter.core.provider.ISensorsProvider import com.gh.gamecenter.core.utils.SPUtils +import com.therouter.TheRouter import org.json.JSONObject /** @@ -306,6 +305,7 @@ object SensorsBridge { private const val EVENT_CANCEL_APPOINTMENT_AUTOMATIC_DOWNLOAD = "CancelAppointmentAutomaticDownload" private const val EVENT_APPOINTMENT_GAME_ONLINE_DIALOG_SHOW = "AppointmentGameOnlineDialogShow" private const val EVENT_APPOINTMENT_GAME_ONLINE_DIALOG_CLICK = "AppointmentGameOnlineDialogClick" + private const val EVENT_JIGUANG_PUSH_CLICK = "JiGuangPushClick" private var mIsSensorsEnabled = false @@ -3620,7 +3620,8 @@ object SensorsBridge { position: Int, tabContent: String, customPageId: String, - customPageName: String + customPageName: String, + sourceEntrance: String ) { val json = json { KEY_BOTTOM_TAB to bottomTab @@ -3630,6 +3631,7 @@ object SensorsBridge { KEY_TAB_CONTENT to tabContent KEY_CUSTOM_PAGE_ID to customPageId KEY_CUSTOM_PAGE_NAME to customPageName + KEY_SOURCE_ENTRANCE to sourceEntrance } trackEvent(EVENT_VIEW_CUSTOM_PAGE, json) } @@ -5025,4 +5027,27 @@ object SensorsBridge { trackEvent(EVENT_SEARCH_DISCOVERY_CLICK, json) } + + /** + * 事件ID:JiGuangPushClick + * 事件名称:极光推送点击事件 + * 触发时机:点击极光推送时触发 + */ + @JvmStatic + fun trackJiGuangPushClick( + id: String, + title: String, + content: String, + linkType: String, + linkId: String, + ) { + val json = json { + "message_id" to id + KEY_LINK_TEXT to title + "link_content" to content + KEY_LINK_TYPE to linkType + KEY_LINK_ID to linkId + } + trackEvent(EVENT_JIGUANG_PUSH_CLICK, json) + } } \ No newline at end of file diff --git a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPushProvider.kt b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPushProvider.kt index 0523394cf1..d1a6e0cc9c 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/provider/IPushProvider.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/provider/IPushProvider.kt @@ -59,4 +59,10 @@ interface IPushProvider { * @param applicationContext 上下文 */ fun cleanBadgeNumber(applicationContext: Context) + + /** + * 设置推送打开回调 + * @param callback 回调 + */ + fun setOnPushOpenedCallback(callback: (String, String, String, String, String) -> Unit) } \ No newline at end of file diff --git a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt index 8354d0e4d7..4820d823d4 100644 --- a/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt +++ b/module_core_feature/src/main/java/com/gh/gamecenter/feature/provider/IGameCollectionDetailProvider.kt @@ -8,12 +8,14 @@ interface IGameCollectionDetailProvider { fun getIntent( context: Context, gameCollectionId: String, - isFromSquare: Boolean = false + isFromSquare: Boolean = false, + entrance: String ): Intent? fun getSpecifiedCommentIntent( context: Context, gameCollectionId: String, - topCommentId: String + topCommentId: String, + entrance: String ): Intent? } \ No newline at end of file diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java index 2c814a4556..d4e8d1e881 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageItemViewHolder.java @@ -11,7 +11,6 @@ import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentActivity; -import com.therouter.TheRouter; import com.gh.gamecenter.common.base.BaseRecyclerViewHolder; import com.gh.gamecenter.common.base.activity.BaseActivity; import com.gh.gamecenter.common.base.fragment.BaseFragment_TabLayout; @@ -20,11 +19,13 @@ import com.gh.gamecenter.common.constant.Constants; import com.gh.gamecenter.common.constant.EntranceConsts; import com.gh.gamecenter.common.constant.RouteConsts; import com.gh.gamecenter.common.entity.CommunityEntity; +import com.gh.gamecenter.common.exposure.ExposureSource; import com.gh.gamecenter.common.retrofit.Response; import com.gh.gamecenter.common.utils.ExtensionsKt; import com.gh.gamecenter.common.utils.ImageUtils; import com.gh.gamecenter.common.utils.SensorsBridge; import com.gh.gamecenter.common.utils.TextHelper; +import com.gh.gamecenter.core.provider.IDirectProvider; import com.gh.gamecenter.core.provider.IWebProvider; import com.gh.gamecenter.core.utils.ClickUtils; import com.gh.gamecenter.core.utils.DisplayUtils; @@ -33,9 +34,7 @@ import com.gh.gamecenter.core.utils.MtaHelper; import com.gh.gamecenter.feature.entity.MessageEntity; import com.gh.gamecenter.feature.entity.Questions; import com.gh.gamecenter.feature.entity.UserEntity; -import com.gh.gamecenter.common.exposure.ExposureSource; import com.gh.gamecenter.feature.provider.ICommentDetailProvider; -import com.gh.gamecenter.core.provider.IDirectProvider; import com.gh.gamecenter.feature.provider.ICommentUtilsProvider; import com.gh.gamecenter.feature.provider.IGameCollectionDetailProvider; import com.gh.gamecenter.feature.provider.IGameDetailProvider; @@ -49,6 +48,7 @@ import com.gh.gamecenter.message.entity.MessageFold; import com.gh.gamecenter.message.retrofit.RetrofitManager; import com.gh.gamecenter.message.utils.NewLogUtils; import com.lightgame.utils.Utils; +import com.therouter.TheRouter; import java.util.ArrayList; import java.util.List; @@ -1169,7 +1169,8 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder context.startActivity(gameCollectionDetailProvider.getSpecifiedCommentIntent( context, entity.getGameList().getId(), - entity.getComment().getId() + entity.getComment().getId(), + "消息中心" )); } break; @@ -1192,7 +1193,8 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder intent = gameCollectionDetailProvider.getSpecifiedCommentIntent( context, entity.getGameList().getId(), - entity.getComment().getId() + entity.getComment().getId(), + "消息中心" ); } else { intent = newCommentDetailProvider.getGameCollectionCommentIntent( @@ -1251,7 +1253,8 @@ public class MessageItemViewHolder extends BaseRecyclerViewHolder context.startActivity(gameCollectionDetailProvider.getIntent( context, entity.getGameList().getId(), - false + false, + "消息中心" )); } break; diff --git a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt index 853777edcb..e803840840 100644 --- a/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt +++ b/module_message/src/main/java/com/gh/gamecenter/message/view/message/MessageListAdapter.kt @@ -11,7 +11,6 @@ import android.widget.LinearLayout import android.widget.TextView import androidx.core.view.isVisible import androidx.recyclerview.widget.RecyclerView -import com.therouter.TheRouter import com.facebook.drawee.generic.RoundingParams import com.facebook.drawee.view.SimpleDraweeView import com.gh.gamecenter.common.baselist.ListAdapter @@ -41,6 +40,7 @@ import com.gh.gamecenter.message.entity.MessageKeFuEntity.ServiceEntity import com.gh.gamecenter.message.entity.MessageLinkEntity import com.google.android.flexbox.FlexboxLayout import com.lightgame.utils.Utils +import com.therouter.TheRouter class MessageListAdapter( context: Context, @@ -73,7 +73,7 @@ class MessageListAdapter( MessageItemViewHolder.messageItemClickSkip( view, data as MessageEntity, - "", "", "", + "消息中心", "", "", mGameId, mGameName, mGameType, mType ) } diff --git a/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt index 46d8bc07de..655ae13ebb 100644 --- a/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt +++ b/module_message/src/message/java/com/gh/gamecenter/message/provider/GameCollectionDetailProviderImpl.kt @@ -9,12 +9,12 @@ import com.gh.gamecenter.feature.provider.IGameCollectionDetailProvider @com.therouter.inject.ServiceProvider class GameCollectionDetailProviderImpl : IGameCollectionDetailProvider { - override fun getIntent(context: Context, gameCollectionId: String, isFromSquare: Boolean): Intent? { + override fun getIntent(context: Context, gameCollectionId: String, isFromSquare: Boolean, entrance: String): Intent? { ToastUtils.toast("调用->GameCollectionDetailProviderImpl.getIntent") return null } - override fun getSpecifiedCommentIntent(context: Context, gameCollectionId: String, topCommentId: String): Intent? { + override fun getSpecifiedCommentIntent(context: Context, gameCollectionId: String, topCommentId: String, entrance: String): Intent? { ToastUtils.toast("调用->GameCollectionDetailProviderImpl.getSpecifiedCommentIntent") return null } diff --git a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSecurityActivity.kt b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSecurityActivity.kt index d682e639f5..7186b3268e 100644 --- a/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSecurityActivity.kt +++ b/module_setting_compose/src/main/java/com/gh/gamecenter/setting/compose/activity/ComposeSecurityActivity.kt @@ -9,7 +9,10 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.Icon import androidx.compose.material.Scaffold import androidx.compose.material.Text -import androidx.compose.runtime.* +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -17,7 +20,6 @@ import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.res.imageResource import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.therouter.TheRouter import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.constant.RouteConsts @@ -33,9 +35,15 @@ import com.gh.gamecenter.setting.compose.ui.component.SettingItem import com.gh.gamecenter.setting.compose.ui.component.SettingTopAppBar import com.gh.gamecenter.setting.compose.ui.component.Space import com.gh.gamecenter.setting.compose.ui.theme.HaloTheme +import com.therouter.TheRouter +import com.therouter.router.Route import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode +@Route( + path = RouteConsts.activity.securityActivity, + description = "帐号安全" +) class ComposeSecurityActivity : ComposeBaseActivity() { private var mBindPhoneText by mutableStateOf("") @@ -52,7 +60,7 @@ class ComposeSecurityActivity : ComposeBaseActivity() { backgroundColor = HaloTheme.colors.background ) { Column(modifier = Modifier.verticalScroll(rememberScrollState())) { - if (!intent.getBooleanExtra(DISPLAY_TYPE, false)) { + if (!intent.getBooleanExtra(EntranceConsts.KEY_DISPLAY_TYPE, false)) { val registerType = when (UserManager.getInstance().userInfoEntity?.registerType) { "qq" -> "QQ" "wechat" -> "微信" @@ -157,12 +165,10 @@ class ComposeSecurityActivity : ComposeBaseActivity() { companion object { const val INSERT_MOBILE_CODE = 411 - private const val DISPLAY_TYPE = "display_type" - fun getIntent(context: Context, entrance: String, isLogoutStyle: Boolean = false): Intent { return Intent(context, ComposeSecurityActivity::class.java).apply { putExtra(EntranceConsts.KEY_ENTRANCE, entrance) - putExtra(DISPLAY_TYPE, isLogoutStyle) + putExtra(EntranceConsts.KEY_DISPLAY_TYPE, isLogoutStyle) } } }