package com.xw.yunwei.push
|
|
import android.content.Intent
|
import android.os.Bundle
|
import com.alibaba.sdk.android.push.AndroidPopupActivity
|
import com.blankj.utilcode.util.ActivityUtils.startActivity
|
import com.xw.common.Constants
|
import com.xw.common.utils.KeyPreferences
|
import com.xw.common.utils.MMKVManager
|
import com.xw.yunwei.model.SwitchTabMain
|
import com.xw.yunwei.model.SwitchTabTask
|
import com.xw.yunwei.push.MessageHandler.showProtocolDialog
|
import com.xw.yunwei.push.MessageHandler.showUpdateDialog
|
import com.xw.yunwei.ui.MainActivity
|
import com.xw.yunwei.ui.task.accident.detail.AccidentDetailActivity
|
import com.xw.yunwei.ui.task.normal.NormalTaskDetailActivity
|
import com.xw.yunwei.ui.user.login.LoginActivity
|
import com.xw.yunwei.ui.user.mine.protocol.ProtocolActivity
|
import com.xw.yunwei.ui.user.mine.scheduling.SchedulingActivity
|
import org.greenrobot.eventbus.EventBus
|
|
/**
|
* 辅助弹窗Activity
|
* 这个方案介绍的是自定义Activity作为中转Activity,辅助获取推送的额外参数,额外参数里必须配置指定Activity的路由信息,您可以根据这些路由信息跳转到指定Activity。
|
* 如果您通过推送通知要打开的Activity页面较多的话,建议用这种方式。
|
* 在推送时,配置的打开的页面要配置成实现的辅助弹窗中转Activity,且真正要打开的指定Activity路由信息需要配置在额外参数中。
|
*/
|
class PopupPushActivity : AndroidPopupActivity() {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
}
|
|
/**
|
* 实现通知打开回调方法,获取通知相关信息
|
* @param title 标题
|
* @param summary 内容
|
* @param extMap 额外参数
|
*/
|
override fun onSysNoticeOpened(title: String, summary: String, extMap: Map<String?, String?>?) {
|
if (extMap.isNullOrEmpty()) {
|
startActivity(LoginActivity::class.java)
|
finish()
|
} else {
|
if (Constants.token.isEmpty()) {
|
startActivity(LoginActivity::class.java)
|
finish()
|
return
|
}
|
/**
|
* content:消息内容
|
* strategy:推送策略 1=新增事故,2=事故即将超时提示,3=事故超时提示,4=排班信息变动,5=事故状态变更,6=新增任务,7=任务过期提示,8=版本更新提示,9=变更协议政策内容,10=变更协议内容并需用户授权,11=打卡成功通知, 12=强制升级
|
* type:类型,事故需要,根据不同的id查询不同的事故详情 无-null 1=车辆检测 2=车辆充电 3=车辆整备 4=整备洗车 5=车辆维修 6=其他常规任务 7=事故任务
|
* id:页面id(事故为事故id),无-null或0
|
*/
|
val content = extMap["content"]
|
val strategy = extMap["strategy"].toString().toIntOrNull() ?: 0
|
val type = extMap["type"]
|
val id = extMap["id"].toString()
|
when (strategy) {
|
1, 2, 3, 5 -> { // 1=新增事故,2=事故即将超时提示,3=事故超时提示,5=事故状态变更 点击都跳事故详情
|
startActivities(
|
arrayOf(
|
Intent(this, MainActivity::class.java),
|
Intent(this, AccidentDetailActivity::class.java).apply {
|
putExtra("taskId", id.toLong())
|
}
|
)
|
)
|
finish()
|
}
|
|
4 -> { // 排班信息变动
|
startActivities(
|
arrayOf(
|
Intent(this, MainActivity::class.java),
|
Intent(this, SchedulingActivity::class.java)
|
)
|
)
|
finish()
|
}
|
|
6, 7 -> { // 6=新增任务,7=任务过期提示 点击都跳任务详情
|
if (strategy == 6 && id == "0") { // 多条任务 跳转任务中心待处理页面
|
EventBus.getDefault().post(SwitchTabMain(1))
|
EventBus.getDefault().post(SwitchTabTask(2))
|
startActivity(MainActivity::class.java)
|
} else {
|
startActivities(
|
arrayOf(
|
Intent(this, MainActivity::class.java),
|
Intent(
|
this,
|
NormalTaskDetailActivity::class.java
|
).apply {
|
putExtra("taskId", id.toLong())
|
}
|
)
|
)
|
}
|
finish()
|
}
|
|
8, 12 -> { // 升级
|
showUpdateDialog(this)
|
}
|
|
9, 10 -> { // 变更协议内容
|
if (strategy == 9) {
|
startActivities(
|
arrayOf(
|
Intent(this, MainActivity::class.java),
|
Intent(this, ProtocolActivity::class.java)
|
)
|
)
|
finish()
|
} else {
|
MMKVManager.getInstance().saveBoolean(KeyPreferences.NEED_READ, true)
|
showProtocolDialog(this, true) {
|
startActivity(LoginActivity::class.java)
|
finish()
|
}
|
}
|
}
|
|
else -> {
|
startActivity(LoginActivity::class.java)
|
finish()
|
}
|
}
|
}
|
}
|
|
/**
|
* 不是推送数据的回调
|
*
|
* @param intent
|
*/
|
override fun onNotPushData(intent: Intent) {
|
super.onNotPushData(intent)
|
startActivity(LoginActivity::class.java)
|
finish()
|
}
|
|
/**
|
* 是推送数据,但是又解密失败时的回调
|
*
|
* @param intent
|
*/
|
override fun onParseFailed(intent: Intent) {
|
super.onParseFailed(intent)
|
startActivity(LoginActivity::class.java)
|
finish()
|
}
|
}
|