From 8ffcac97c597c1039c5d5b3db6819e2f2c43f42e Mon Sep 17 00:00:00 2001 From: Libin Lu Date: Tue, 7 Jun 2016 14:05:31 -0400 Subject: [PATCH] hook on newIntent to broadcast notification clicked when app in background --- .../evollu/react/fcm/FIRMessagingModule.java | 63 +++++++++++++------ 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java b/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java index 27b6ca6..0b6cd6b 100644 --- a/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java +++ b/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java @@ -24,7 +24,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -public class FIRMessagingModule extends ReactContextBaseJavaModule { +public class FIRMessagingModule extends ReactContextBaseJavaModule implements LifecycleEventListener { private final static String TAG = FIRMessagingModule.class.getCanonicalName(); Intent mIntent; @@ -33,6 +33,7 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule { mIntent = intent; + getReactApplicationContext().addLifecycleEventListener(this); registerTokenRefreshHandler(); registerMessageHandler(); } @@ -81,15 +82,15 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule { getReactApplicationContext().registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - if (getReactApplicationContext().hasActiveCatalystInstance()) { - String token = intent.getStringExtra("token"); + if (getReactApplicationContext().hasActiveCatalystInstance()) { + String token = intent.getStringExtra("token"); - WritableMap params = Arguments.createMap(); - params.putString("token", token); + WritableMap params = Arguments.createMap(); + params.putString("token", token); - sendEvent("FCMTokenRefreshed", params); - abortBroadcast(); - } + sendEvent("FCMTokenRefreshed", params); + abortBroadcast(); + } } }, intentFilter); } @@ -100,21 +101,43 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule { getReactApplicationContext().registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - if (getReactApplicationContext().hasActiveCatalystInstance()) { - RemoteMessage message = intent.getParcelableExtra("data"); - WritableMap params = Arguments.createMap(); - if(message.getData() != null){ - Map data = message.getData(); - Set keysIterator = data.keySet(); - for(String key: keysIterator){ - params.putString(key, (String) data.get(key)); - } - sendEvent("FCMNotificationReceived", params); - abortBroadcast(); + if (getReactApplicationContext().hasActiveCatalystInstance()) { + RemoteMessage message = intent.getParcelableExtra("data"); + WritableMap params = Arguments.createMap(); + if(message.getData() != null){ + Map data = message.getData(); + Set keysIterator = data.keySet(); + for(String key: keysIterator){ + params.putString(key, (String) data.get(key)); } - + sendEvent("FCMNotificationReceived", params); + abortBroadcast(); } + + } } }, intentFilter); } + + @Override + public void onHostResume() { + Intent newIntent = getCurrentActivity().getIntent(); + if(newIntent != mIntent && newIntent != null){ + WritableMap params = Arguments.fromBundle(newIntent.getExtras()); + WritableMap fcm = Arguments.createMap(); + fcm.putString("action", newIntent.getAction()); + params.putMap("fcm", fcm); + sendEvent("FCMNotificationReceived", params); + } + mIntent = newIntent; + } + + @Override + public void onHostPause() { + } + + @Override + public void onHostDestroy() { + + } } -- 2.26.2