From bd2a3d529a0b806e5b1edbbf6620573f4bee0e22 Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Wed, 1 Aug 2018 14:45:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E9=83=A8=E5=88=86=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/GHUmengNotificationClickHandler.java | 4 +- .../com/gh/base/GHUmengNotificationService.kt | 154 +++++++++++------- .../java/com/gh/gamecenter/SkipActivity.java | 8 +- .../com/gh/gamecenter/SubjectActivity.java | 35 ---- .../gamecenter/adapter/ImagePagerAdapter.java | 2 +- .../category/CategoryListAdapter.java | 2 +- .../com/gh/gamecenter/entity/PushEntity.kt | 5 +- .../gh/gamecenter/entity/PushMessageEntity.kt | 30 ++++ .../entity/PushMessageUnreadEntity.kt | 30 ++++ .../entity/PushNotificationEntity.kt | 44 ++++- .../com/gh/gamecenter/entity/SubjectData.kt | 14 +- .../gh/gamecenter/game/GameFragmentAdapter.kt | 2 +- .../gh/gamecenter/message/KeFuFragment.java | 2 +- .../newsdetail/NewsDetailAdapter.java | 2 +- .../gamecenter/personal/PersonalFragment.java | 2 +- .../receiver/UmengMessageReceiver.kt | 17 +- .../gh/gamecenter/subject/SubjectAdapter.java | 2 +- .../subject/refactor/SubjectActivity.kt | 2 +- .../subject/refactor/SubjectAdapter.kt | 1 - .../gh/gamecenter/user/UserRepository.java | 3 + 20 files changed, 228 insertions(+), 133 deletions(-) delete mode 100644 app/src/main/java/com/gh/gamecenter/SubjectActivity.java create mode 100644 app/src/main/java/com/gh/gamecenter/entity/PushMessageEntity.kt create mode 100644 app/src/main/java/com/gh/gamecenter/entity/PushMessageUnreadEntity.kt diff --git a/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java b/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java index 3d54facf4d..479b9d20a4 100644 --- a/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java +++ b/app/src/main/java/com/gh/base/GHUmengNotificationClickHandler.java @@ -6,8 +6,8 @@ import android.os.Bundle; import com.gh.common.util.EntranceUtils; import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.NewsDetailActivity; -import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.WebActivity; +import com.gh.gamecenter.subject.refactor.SubjectActivity; import com.umeng.message.UmengNotificationClickHandler; import com.umeng.message.entity.UMessage; @@ -38,7 +38,7 @@ public class GHUmengNotificationClickHandler extends UmengNotificationClickHandl bundle.putString(EntranceUtils.KEY_GAMEID, target); break; case EntranceUtils.HOST_COLUMN: - bundle.putString(EntranceUtils.KEY_TO, SubjectActivity.class.getSimpleName()); + bundle.putString(EntranceUtils.KEY_TO, SubjectActivity.class.getName()); bundle.putString(EntranceUtils.KEY_ID, target); break; case EntranceUtils.HOST_WEB: diff --git a/app/src/main/java/com/gh/base/GHUmengNotificationService.kt b/app/src/main/java/com/gh/base/GHUmengNotificationService.kt index 32d6e4099f..61013d2f34 100644 --- a/app/src/main/java/com/gh/base/GHUmengNotificationService.kt +++ b/app/src/main/java/com/gh/base/GHUmengNotificationService.kt @@ -13,14 +13,17 @@ import android.text.TextUtils import android.view.View import com.gh.common.notifier.Notifier import com.gh.common.util.EntranceUtils +import com.gh.common.util.PackageUtils +import com.gh.gamecenter.BuildConfig import com.gh.gamecenter.R -import com.gh.gamecenter.entity.MessageEntity -import com.gh.gamecenter.entity.MessageUnreadEntity import com.gh.gamecenter.entity.PushEntity +import com.gh.gamecenter.entity.PushMessageEntity +import com.gh.gamecenter.entity.PushMessageUnreadEntity import com.gh.gamecenter.entity.PushNotificationEntity import com.gh.gamecenter.message.MessageUnreadRepository import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity import com.google.gson.Gson +import com.halo.assistant.HaloApp import com.umeng.message.UmengMessageService import org.android.agoo.common.AgooConstants import java.util.* @@ -39,6 +42,10 @@ class GHUmengNotificationService : UmengMessageService() { const val FOLLOW_QUESTION = "follow_question" const val NOTIFICATION_ID = 2015 + + const val DISPLAY_TYPE_NOTIFICATION = "notification" + + const val DISPLAY_TYPE_CUSTOM = "custom" } val notificationTags = arrayOf("GH_UMENG_TAG_1", "GH_UMENG_TAG_2", "GH_UMENG_TAG_3") @@ -47,76 +54,109 @@ class GHUmengNotificationService : UmengMessageService() { override fun onMessage(context: Context, intent: Intent) { val message = intent.getStringExtra(AgooConstants.MESSAGE_BODY) - val pushData = gson.fromJson(message, PushEntity::class.java) - - pushData?.let { handlePushData(context, it) } + try { + val pushData = gson.fromJson(message, PushEntity::class.java) + pushData?.let { handlePushData(context, it, message) } + } catch (e: Exception) { + e.printStackTrace() + } } - private fun handlePushData(context: Context, pushData: PushEntity) { + private fun handlePushData(context: Context, pushData: PushEntity, message: String) { val notificationManager = context.applicationContext.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager - if (HALO_MESSAGE_CENTER == pushData.body?.custom) { - // 回答了问题或者关注了问题的消息 - val msg = gson.fromJson(pushData.extra?.data, MessageEntity::class.java) - - val type = if (ANSWER == msg?.type) { - "回答了你的问题" - } else { - "回答你关注的问题" - } - - val displayText = msg?.userEntity?.name + type - - if (Notifier.isActivityValid(CurrentActivityHolder.getCurrentActivity())) { - Notifier.create(CurrentActivityHolder.getCurrentActivity()) - .setText(displayText) - .setDuration(5000) - .setIcon(msg?.userEntity?.icon) - .setOnClickListener(View.OnClickListener { v -> - val bundle = Bundle() - bundle.putString(EntranceUtils.KEY_ANSWER_ID, msg?.answer?.id) - bundle.putString(EntranceUtils.KEY_ENTRANCE, EntranceUtils.ENTRANCE_UMENG) - bundle.putString(EntranceUtils.KEY_TO, AnswerDetailActivity::class.java.name) - EntranceUtils.jumpActivity(context, bundle) - - Notifier.hide() - }) - .show(true) - } - } else if (HALO_MESSAGE_DIALOG == pushData.body?.custom) { - // 消息中心逻辑 - // TODO 确定是否加推送时间跟查询时间的比对 - val msg = gson.fromJson(pushData.extra?.data, MessageUnreadEntity::class.java) - MessageUnreadRepository.messageLiveData.postValue(msg) - } else { + if (pushData.displayType == DISPLAY_TYPE_NOTIFICATION) { // 其它类型的透传信息 // 显示到通知栏 - val msg = gson.fromJson(pushData.extra?.data, PushNotificationEntity::class.java) + val msg = gson.fromJson(message, PushNotificationEntity::class.java) + val data = msg?.extra?.data - val targetIntent = Intent(ACTION_UMENG) + // 判断是否过滤该消息 + if (validatePush(data?.condition)) { + val targetIntent = Intent(ACTION_UMENG) - targetIntent.putExtra(EntranceUtils.KEY_DATA, msg?.link) - val pendingIntent = PendingIntent.getBroadcast(context, 111, // todo requestCode - targetIntent, PendingIntent.FLAG_UPDATE_CURRENT) + targetIntent.putExtra(EntranceUtils.KEY_DATA, data?.link) + val pendingIntent = PendingIntent.getBroadcast(context, 111, // todo requestCode + targetIntent, PendingIntent.FLAG_UPDATE_CURRENT) - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { - val channel = NotificationChannel("Halo", "Halo", NotificationManager.IMPORTANCE_DEFAULT) - notificationManager.createNotificationChannel(channel) + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { + val channel = NotificationChannel("Halo", "Halo", NotificationManager.IMPORTANCE_DEFAULT) + notificationManager.createNotificationChannel(channel) + } + + val notification = NotificationCompat.Builder(context, "Halo") + .setSmallIcon(R.drawable.logo) + .setTicker(pushData.body?.ticker) + .setContentTitle(pushData.body?.title) + .setContentText(pushData.body?.text) + .setContentIntent(pendingIntent) + .build() + notification.flags = notification.flags or Notification.FLAG_AUTO_CANCEL + + notificationManager.notify(getNotificationTag(context), NOTIFICATION_ID, notification) } + } else { + if (HALO_MESSAGE_CENTER == pushData.body?.custom) { + // 回答了问题或者关注了问题的消息 + val msg = gson.fromJson(message, PushMessageEntity::class.java) + val data = msg?.extra?.data - val notification = NotificationCompat.Builder(context, "Halo") - .setSmallIcon(R.drawable.logo) - .setTicker(pushData.body?.ticker) - .setContentTitle(pushData.body?.title) - .setContentText(pushData.body?.text) - .setContentIntent(pendingIntent) - .build() - notification.flags = notification.flags or Notification.FLAG_AUTO_CANCEL + val type = if (ANSWER == data?.type) { + "回答了你的问题" + } else { + "回答你关注的问题" + } - notificationManager.notify(getNotificationTag(context), NOTIFICATION_ID, notification) + val displayText = data?.userEntity?.name + type + + if (Notifier.isActivityValid(CurrentActivityHolder.getCurrentActivity())) { + Notifier.create(CurrentActivityHolder.getCurrentActivity()) + .setText(displayText) + .setDuration(5000) + .setIcon(data?.userEntity?.icon) + .setOnClickListener(View.OnClickListener { v -> + val bundle = Bundle() + bundle.putString(EntranceUtils.KEY_ANSWER_ID, data?.answer?.id) + bundle.putString(EntranceUtils.KEY_ENTRANCE, EntranceUtils.ENTRANCE_UMENG) + bundle.putString(EntranceUtils.KEY_TO, AnswerDetailActivity::class.java.name) + EntranceUtils.jumpActivity(context, bundle) + + Notifier.hide() + }) + .show(true) + } + } else if (HALO_MESSAGE_DIALOG == pushData.body?.custom) { + // 消息中心逻辑 + // TODO 确定是否加推送时间跟查询时间的比对 + val msg = gson.fromJson(message, PushMessageUnreadEntity::class.java) + val data = msg?.extra?.data + data?.let { MessageUnreadRepository.messageLiveData.postValue(it) } + } } } + private fun validatePush(condition: PushNotificationEntity.Data.Condition?): Boolean { + if (condition == null) return true + + if (condition.packageName.isNotEmpty() && condition.packageName != BuildConfig.APPLICATION_ID) { + return false + } + + condition.ghzs?.channel?.let { + if (it.isNotEmpty() && condition.ghzs?.channel != HaloApp.getInstance().channel) { + return false + } + } + + condition.ghzs?.version?.let { + if (it.isNotEmpty() && condition.ghzs?.version != PackageUtils.getVersionName(HaloApp.getInstance().application)) { + return false + } + } + + return true + } + /** * 规则:最多三条消息,以旧换新 * diff --git a/app/src/main/java/com/gh/gamecenter/SkipActivity.java b/app/src/main/java/com/gh/gamecenter/SkipActivity.java index 3d3e63a798..c5d4dc29a0 100644 --- a/app/src/main/java/com/gh/gamecenter/SkipActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SkipActivity.java @@ -8,8 +8,10 @@ import android.text.TextUtils; import com.gh.base.BaseActivity; import com.gh.common.util.EntranceUtils; import com.gh.common.util.PlatformUtils; +import com.gh.gamecenter.entity.SubjectData; import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity; import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity; +import com.gh.gamecenter.subject.refactor.SubjectActivity; import com.lightgame.config.CommonDebug; import com.lightgame.utils.Utils; @@ -26,7 +28,6 @@ import static com.gh.common.util.EntranceUtils.KEY_CONTENT; import static com.gh.common.util.EntranceUtils.KEY_ENTRANCE; import static com.gh.common.util.EntranceUtils.KEY_GAMEID; import static com.gh.common.util.EntranceUtils.KEY_GAME_NAME; -import static com.gh.common.util.EntranceUtils.KEY_ID; import static com.gh.common.util.EntranceUtils.KEY_NAME; import static com.gh.common.util.EntranceUtils.KEY_NEWSID; import static com.gh.common.util.EntranceUtils.KEY_PACKAGENAME; @@ -79,9 +80,8 @@ public class SkipActivity extends BaseActivity { bundle.putString(KEY_GAMEID, id); break; case HOST_COLUMN: - bundle.putString(KEY_TO, SubjectActivity.class.getSimpleName()); - bundle.putString(KEY_ID, id); - bundle.putString(KEY_NAME, uri.getQueryParameter(KEY_NAME)); + bundle.putString(KEY_TO, SubjectActivity.class.getName()); + bundle.putParcelable(EntranceUtils.KEY_SUBJECT_DATA, new SubjectData(id, uri.getQueryParameter(KEY_NAME), false, null, null, null, null)); break; case HOST_SUGGESTION: String platform = uri.getQueryParameter(KEY_PLATFORM); diff --git a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java b/app/src/main/java/com/gh/gamecenter/SubjectActivity.java deleted file mode 100644 index 236de791ba..0000000000 --- a/app/src/main/java/com/gh/gamecenter/SubjectActivity.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gh.gamecenter; - -import android.content.Context; -import android.content.Intent; - -import com.gh.gamecenter.subject.SubjectWrapperFragment; - - -/** - * Created by khy on 2017/4/29. - */ -public class SubjectActivity extends NormalActivity { - - @Override - protected Intent provideNormalIntent() { - return getTargetIntent(this, SubjectActivity.class, SubjectWrapperFragment.class); - } - - /** - * 启动专题页面 - */ - public static void startSubjectActivity(Context context, String id, String name, boolean isOrder, String entrance) { -// DataUtils.onMtaEvent(context, "详情页面", "专题详情", name); -// Bundle args = new Bundle(); -// args.putString(EntranceUtils.KEY_ID, id); -// args.putString(EntranceUtils.KEY_NAME, name); -// args.putBoolean(EntranceUtils.KEY_ORDER, isOrder); -// args.putString(EntranceUtils.KEY_ENTRANCE, entrance); -// -// context.startActivity(getTargetIntent(context, SubjectActivity.class, SubjectWrapperFragment.class, args)); - - com.gh.gamecenter.subject.refactor.SubjectActivity.Companion.startSubjectActivity(context, id,name,isOrder,entrance); - } - -} diff --git a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java index a953e64da2..36f5e2bac0 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/ImagePagerAdapter.java @@ -19,8 +19,8 @@ import com.gh.common.util.StringUtils; import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.entity.SlideEntity; +import com.gh.gamecenter.subject.refactor.SubjectActivity; import java.util.List; diff --git a/app/src/main/java/com/gh/gamecenter/category/CategoryListAdapter.java b/app/src/main/java/com/gh/gamecenter/category/CategoryListAdapter.java index 0bc3545b09..2567b5041d 100644 --- a/app/src/main/java/com/gh/gamecenter/category/CategoryListAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/category/CategoryListAdapter.java @@ -27,7 +27,6 @@ import com.gh.download.DownloadManager; import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; @@ -37,6 +36,7 @@ import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; +import com.gh.gamecenter.subject.refactor.SubjectActivity; import com.lightgame.adapter.BaseRecyclerAdapter; import com.lightgame.utils.Utils; diff --git a/app/src/main/java/com/gh/gamecenter/entity/PushEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PushEntity.kt index 2be19ad3a1..5084ff87c6 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PushEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PushEntity.kt @@ -5,7 +5,6 @@ import com.google.gson.annotations.SerializedName data class PushEntity( @SerializedName("display_type") var displayType: String = "", - var extra: Extra? = null, @SerializedName("msg_id") var msgId: String = "", var body: Body? = null, @@ -23,8 +22,6 @@ data class PushEntity( var custom: String = "", var text: String = "", var title: String = "", - @SerializedName("paly_sound") + @SerializedName("play_sound") var playSound: String = "") - - data class Extra(var data: String? = "") } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/entity/PushMessageEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PushMessageEntity.kt new file mode 100644 index 0000000000..734b87ab89 --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/PushMessageEntity.kt @@ -0,0 +1,30 @@ +package com.gh.gamecenter.entity + +import com.google.gson.annotations.SerializedName + +data class PushMessageEntity( + @SerializedName("display_type") + var displayType: String = "", + var extra: Extra? = null, + @SerializedName("msg_id") + var msgId: String = "", + var body: Body? = null, + @SerializedName("random_min") + var randomMin: Int = 0) { + + data class Body( + @SerializedName("after_open") + var afterOpen: String = "", + @SerializedName("play_lights") + var playLights: String = "", + var ticker: String = "", + @SerializedName("play_vibrate") + var playVibrate: String = "", + var custom: String = "", + var text: String = "", + var title: String = "", + @SerializedName("play_sound") + var playSound: String = "") + + data class Extra(var data: MessageEntity? = null) +} diff --git a/app/src/main/java/com/gh/gamecenter/entity/PushMessageUnreadEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PushMessageUnreadEntity.kt new file mode 100644 index 0000000000..38f16db33b --- /dev/null +++ b/app/src/main/java/com/gh/gamecenter/entity/PushMessageUnreadEntity.kt @@ -0,0 +1,30 @@ +package com.gh.gamecenter.entity + +import com.google.gson.annotations.SerializedName + +data class PushMessageUnreadEntity( + @SerializedName("display_type") + var displayType: String = "", + var extra: Extra? = null, + @SerializedName("msg_id") + var msgId: String = "", + var body: Body? = null, + @SerializedName("random_min") + var randomMin: Int = 0) { + + data class Body( + @SerializedName("after_open") + var afterOpen: String = "", + @SerializedName("play_lights") + var playLights: String = "", + var ticker: String = "", + @SerializedName("play_vibrate") + var playVibrate: String = "", + var custom: String = "", + var text: String = "", + var title: String = "", + @SerializedName("play_sound") + var playSound: String = "") + + data class Extra(var data: MessageUnreadEntity? = null) +} diff --git a/app/src/main/java/com/gh/gamecenter/entity/PushNotificationEntity.kt b/app/src/main/java/com/gh/gamecenter/entity/PushNotificationEntity.kt index 18f2c0c912..c8ae3446d1 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/PushNotificationEntity.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/PushNotificationEntity.kt @@ -4,19 +4,45 @@ import android.os.Parcelable import com.google.gson.annotations.SerializedName import kotlinx.android.parcel.Parcelize +data class PushNotificationEntity( + @SerializedName("display_type") + var displayType: String = "", + var extra: Extra? = null, + @SerializedName("msg_id") + var msgId: String = "", + var body: Body? = null, + @SerializedName("random_min") + var randomMin: Int? = 0) { -data class PushNotificationEntity(var condition: Condition? = null, - var link: Link? = null) { + data class Body( + @SerializedName("after_open") + var afterOpen: String? = "", + @SerializedName("play_lights") + var playLights: String? = "", + var ticker: String? = "", + @SerializedName("play_vibrate") + var playVibrate: String? = "", + var custom: String? = "", + var text: String? = "", + var title: String? = "", + @SerializedName("play_sound") + var playSound: String? = "") - @Parcelize - data class Link(var type: String = "", var target: String = "") : Parcelable + data class Extra(var data: Data? = null) - data class Condition( - @SerializedName("package") - var packageName: String = "", - var ghzs: Ghzs) + data class Data(var condition: Condition? = null, + var link: Link? = null) { - data class Ghzs(var channel: String = "", var version: String = "") + @Parcelize + data class Link(var type: String? = "", var target: String? = "") : Parcelable + + data class Condition( + @SerializedName("package") + var packageName: String = "", + var ghzs: Ghzs? = null) + + data class Ghzs(var channel: String? = "", var version: String? = "") + } } diff --git a/app/src/main/java/com/gh/gamecenter/entity/SubjectData.kt b/app/src/main/java/com/gh/gamecenter/entity/SubjectData.kt index 3abbd26e3c..65bc500920 100644 --- a/app/src/main/java/com/gh/gamecenter/entity/SubjectData.kt +++ b/app/src/main/java/com/gh/gamecenter/entity/SubjectData.kt @@ -4,10 +4,10 @@ import android.os.Parcelable import kotlinx.android.parcel.Parcelize @Parcelize -data class SubjectData(var subjectId: String?, - var subjectName: String?, - var isOrder: Boolean?, - var listOrder: String?, - var tagType: String?, - var mTileType: String?, - var typeList: List?) : Parcelable +data class SubjectData(var subjectId: String? = "", + var subjectName: String? = "", + var isOrder: Boolean? = false, + var listOrder: String? = "", + var tagType: String? = "", + var mTileType: String? = "", + var typeList: List? = null) : Parcelable diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt index e901c866f4..1bc8529ffb 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragmentAdapter.kt @@ -33,11 +33,11 @@ import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.game.data.GameItemData import com.gh.gamecenter.game.horizontal.GameHorizontalAdapter import com.gh.gamecenter.game.horizontal.GameHorizontalListViewHolder +import com.gh.gamecenter.subject.refactor.SubjectActivity import com.halo.assistant.fragment.game.GamePluginAdapter import com.halo.assistant.fragment.game.GamePluginViewHolder import com.lightgame.adapter.BaseRecyclerAdapter import com.lightgame.download.DownloadEntity -import com.lightgame.utils.Utils import java.util.* import kotlin.collections.ArrayList diff --git a/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java b/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java index 3932b73a15..09fa7a99ca 100644 --- a/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java +++ b/app/src/main/java/com/gh/gamecenter/message/KeFuFragment.java @@ -12,13 +12,13 @@ import com.gh.common.util.QQUtils; import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.baselist.ListAdapter; import com.gh.gamecenter.baselist.ListFragment; import com.gh.gamecenter.baselist.NormalListViewModel; import com.gh.gamecenter.entity.MessageKeFuEntity; import com.gh.gamecenter.retrofit.RetrofitManager; +import com.gh.gamecenter.subject.refactor.SubjectActivity; import com.halo.assistant.HaloApp; import java.util.List; diff --git a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java index 2e312a75c1..922ec33aa1 100644 --- a/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/newsdetail/NewsDetailAdapter.java @@ -40,7 +40,6 @@ import com.gh.gamecenter.LibaoDetailActivity; import com.gh.gamecenter.MessageDetailActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.ViewImageActivity; import com.gh.gamecenter.WebActivity; import com.gh.gamecenter.adapter.viewholder.CommentViewHolder; @@ -55,6 +54,7 @@ import com.gh.gamecenter.entity.NewsDetailEntity; import com.gh.gamecenter.entity.NewsEntity; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; +import com.gh.gamecenter.subject.refactor.SubjectActivity; import com.lightgame.adapter.BaseRecyclerAdapter; import com.lightgame.utils.Utils; diff --git a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java index e80f86d3aa..8e7d371f3e 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/PersonalFragment.java @@ -33,7 +33,6 @@ import com.gh.gamecenter.PersonalHomeActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.SettingActivity; import com.gh.gamecenter.ShareGhActivity; -import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.SuggestSelectActivity; import com.gh.gamecenter.UserInfoActivity; import com.gh.gamecenter.entity.AppEntity; @@ -50,6 +49,7 @@ import com.gh.gamecenter.qa.myqa.MyAskActivity; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.gh.gamecenter.room.AppDatabase; +import com.gh.gamecenter.subject.refactor.SubjectActivity; import com.gh.gamecenter.user.ApiResponse; import com.gh.gamecenter.user.LoginTag; import com.gh.gamecenter.user.UserViewModel; diff --git a/app/src/main/java/com/gh/gamecenter/receiver/UmengMessageReceiver.kt b/app/src/main/java/com/gh/gamecenter/receiver/UmengMessageReceiver.kt index 6b746b637b..62cbee835d 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/UmengMessageReceiver.kt +++ b/app/src/main/java/com/gh/gamecenter/receiver/UmengMessageReceiver.kt @@ -5,17 +5,22 @@ import android.content.Context import android.content.Intent import android.os.Bundle import com.gh.common.util.EntranceUtils -import com.gh.gamecenter.* +import com.gh.gamecenter.GameDetailActivity +import com.gh.gamecenter.MessageKeFuActivity +import com.gh.gamecenter.NewsDetailActivity +import com.gh.gamecenter.WebActivity import com.gh.gamecenter.entity.PushNotificationEntity +import com.gh.gamecenter.entity.SubjectData import com.gh.gamecenter.qa.answer.detail.AnswerDetailActivity import com.gh.gamecenter.qa.questions.detail.QuestionsDetailActivity +import com.gh.gamecenter.subject.refactor.SubjectActivity class UmengMessageReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { - val link: PushNotificationEntity.Link? = intent.getParcelableExtra(EntranceUtils.KEY_DATA) + val link: PushNotificationEntity.Data.Link? = intent.getParcelableExtra(EntranceUtils.KEY_DATA) - if (link == null) { + if (link == null || link.target == "system") { jumpToHaloOfficialNotificationPage(context) } else { jumpToSpecificPage(context, link) @@ -29,7 +34,7 @@ class UmengMessageReceiver : BroadcastReceiver() { EntranceUtils.jumpActivity(context, bundle) } - private fun jumpToSpecificPage(context: Context, link: PushNotificationEntity.Link) { + private fun jumpToSpecificPage(context: Context, link: PushNotificationEntity.Data.Link) { val bundle = Bundle() bundle.putString(EntranceUtils.KEY_ENTRANCE, EntranceUtils.ENTRANCE_UMENG) when (link.type) { @@ -42,8 +47,8 @@ class UmengMessageReceiver : BroadcastReceiver() { bundle.putString(EntranceUtils.KEY_GAMEID, link.target) } EntranceUtils.HOST_COLUMN -> { - bundle.putString(EntranceUtils.KEY_TO, SubjectActivity::class.java.simpleName) - bundle.putString(EntranceUtils.KEY_ID, link.target) + bundle.putString(EntranceUtils.KEY_TO, SubjectActivity::class.java.name) + bundle.putParcelable(EntranceUtils.KEY_SUBJECT_DATA, SubjectData(subjectId = link.target)) } EntranceUtils.HOST_QUESTION -> { bundle.putString(EntranceUtils.KEY_TO, QuestionsDetailActivity::class.java.name) diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java index 21d5e20b7f..bcf34ed790 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectAdapter.java @@ -29,7 +29,6 @@ import com.gh.download.DownloadManager; import com.gh.gamecenter.GameDetailActivity; import com.gh.gamecenter.NewsDetailActivity; import com.gh.gamecenter.R; -import com.gh.gamecenter.SubjectActivity; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder; import com.gh.gamecenter.adapter.viewholder.GameNormalViewHolder; @@ -39,6 +38,7 @@ import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.manager.GameManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; +import com.gh.gamecenter.subject.refactor.SubjectActivity; import com.lightgame.adapter.BaseRecyclerAdapter; import com.lightgame.utils.Utils; diff --git a/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectActivity.kt b/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectActivity.kt index f4c6bd408c..a521f09cc8 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectActivity.kt @@ -71,11 +71,11 @@ class SubjectActivity : BaseActivity() { transaction.commitAllowingStateLoss() } - companion object { /** * 启动专题页面 */ + @JvmStatic fun startSubjectActivity(context: Context, id: String?, name: String?, isOrder: Boolean, entrance: String?) { DataUtils.onMtaEvent(context, "详情页面", "专题详情", name) diff --git a/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectAdapter.kt b/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectAdapter.kt index 827b949910..7095b68532 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/refactor/SubjectAdapter.kt @@ -15,7 +15,6 @@ import com.gh.common.util.* import com.gh.gamecenter.GameDetailActivity import com.gh.gamecenter.NewsDetailActivity import com.gh.gamecenter.R -import com.gh.gamecenter.SubjectActivity import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.adapter.viewholder.GameImageViewHolder import com.gh.gamecenter.adapter.viewholder.GameViewHolder diff --git a/app/src/main/java/com/gh/gamecenter/user/UserRepository.java b/app/src/main/java/com/gh/gamecenter/user/UserRepository.java index be786d3a7f..a106947492 100644 --- a/app/src/main/java/com/gh/gamecenter/user/UserRepository.java +++ b/app/src/main/java/com/gh/gamecenter/user/UserRepository.java @@ -8,6 +8,7 @@ import android.os.Build; import android.preference.PreferenceManager; import android.text.TextUtils; +import com.gh.common.PushManager; import com.gh.common.constant.Constants; import com.gh.common.util.DataUtils; import com.gh.common.util.DeviceUtils; @@ -214,6 +215,8 @@ public class UserRepository { response.setId(finalUserToken); userTokenHandle(response, loginTag); + + PushManager.getAndSetAlias(); } @Override