顾海波

【修复】app关闭后收到消息启动

@@ -32,8 +32,10 @@ class EwinMixPushReceiver : MixPushReceiver() { @@ -32,8 +32,10 @@ class EwinMixPushReceiver : MixPushReceiver() {
32 } 32 }
33 33
34 override fun onNotificationMessageClicked(context: Context, message: MixPushMessage) { 34 override fun onNotificationMessageClicked(context: Context, message: MixPushMessage) {
35 - if(!::FlutterPushPlugin.channel.isInitialized){ 35 + if(!FlutterPushPlugin.isInit()){
  36 + FlutterPushPlugin.lastMsg = message
36 context.startActivity(context.packageManager.getLaunchIntentForPackage(context.packageName)) 37 context.startActivity(context.packageManager.getLaunchIntentForPackage(context.packageName))
  38 + return
37 } 39 }
38 this.invokeListener(MixListenerTypeEnum.NotificationMessageClicked, message) 40 this.invokeListener(MixListenerTypeEnum.NotificationMessageClicked, message)
39 41
@@ -17,7 +17,7 @@ import com.ewin.flutter_push.EwinMixPushReceiver @@ -17,7 +17,7 @@ import com.ewin.flutter_push.EwinMixPushReceiver
17 import com.ewin.flutter_push.enums.MixListenerTypeEnum 17 import com.ewin.flutter_push.enums.MixListenerTypeEnum
18 import com.ewin.flutter_push.utils.CommonUtil 18 import com.ewin.flutter_push.utils.CommonUtil
19 import com.alibaba.fastjson.JSON 19 import com.alibaba.fastjson.JSON
20 - 20 +import com.mixpush.core.MixPushMessage
21 /** FlutterPushPlugin */ 21 /** FlutterPushPlugin */
22 class FlutterPushPlugin: FlutterPlugin, MethodCallHandler { 22 class FlutterPushPlugin: FlutterPlugin, MethodCallHandler {
23 /// The MethodChannel that will the communication between Flutter and native Android 23 /// The MethodChannel that will the communication between Flutter and native Android
@@ -26,6 +26,10 @@ class FlutterPushPlugin: FlutterPlugin, MethodCallHandler { @@ -26,6 +26,10 @@ class FlutterPushPlugin: FlutterPlugin, MethodCallHandler {
26 /// when the Flutter Engine is detached from the Activity 26 /// when the Flutter Engine is detached from the Activity
27 companion object { 27 companion object {
28 lateinit var channel: MethodChannel 28 lateinit var channel: MethodChannel
  29 + var lastMsg :MixPushMessage ? = null
  30 + fun isInit():Boolean{
  31 + return ::channel.isInitialized
  32 + }
29 } 33 }
30 private lateinit var context: Context 34 private lateinit var context: Context
31 35
@@ -43,6 +47,18 @@ class FlutterPushPlugin: FlutterPlugin, MethodCallHandler { @@ -43,6 +47,18 @@ class FlutterPushPlugin: FlutterPlugin, MethodCallHandler {
43 MixPushClient.getInstance().setPushReceiver(EwinMixPushReceiver()) 47 MixPushClient.getInstance().setPushReceiver(EwinMixPushReceiver())
44 MixPushClient.getInstance().register(this.context,defaultPlatform?:HUAWEI) 48 MixPushClient.getInstance().register(this.context,defaultPlatform?:HUAWEI)
45 result.success(true) 49 result.success(true)
  50 +
  51 + CommonUtil.runMainThread {
  52 + if(lastMsg!=null){
  53 + val p: String = if (lastMsg != null) JSON.toJSONString(lastMsg) else ""
  54 + channel.invokeMethod("onListener", mapOf(
  55 + "type" to MixListenerTypeEnum.NotificationMessageClicked.name,
  56 + "params" to p
  57 + ))
  58 + lastMsg = null
  59 + }
  60 + }
  61 +
46 } else if (call.method == "getRegId") { 62 } else if (call.method == "getRegId") {
47 MixPushClient.getInstance().getRegisterId(this.context, object : GetRegisterIdCallback() { 63 MixPushClient.getInstance().getRegisterId(this.context, object : GetRegisterIdCallback() {
48 override fun callback(platform: MixPushPlatform?) { 64 override fun callback(platform: MixPushPlatform?) {