diff --git a/README.md b/README.md index 8664474c097531071f50769f193a78e089dd54b6..a5d3e06983fa248e771f194af7e107976696f766 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ Notes: - replace `"fcm.ACTION.HELLO"` by the `click_action` you want to match -And pass intent into package, edit `MainActivity.java`: +If you are using RN<0.30.0 and react-native-fcm < 1.0.15, pass intent into package, edit `MainActivity.java`: - RN 0.28+: diff --git a/android/react-native-fcm.iml b/android/react-native-fcm.iml index fa72a0def0af389a3974c797189643345170615d..12811433940bd5c83df414142840c3b9b5c7f640 100644 --- a/android/react-native-fcm.iml +++ b/android/react-native-fcm.iml @@ -65,14 +65,6 @@ - - - - - - - - @@ -81,6 +73,14 @@ + + + + + + + + @@ -103,31 +103,31 @@ - + - + - - + - - + - + + + - - + - + + \ No newline at end of file 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 328b71095ab0e93cb2a41dbad89d2d960b425f72..e0b036b9f1c8f02199ca28423b7f65493b4cb765 100644 --- a/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java +++ b/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java @@ -4,6 +4,7 @@ import android.content.BroadcastReceiver; import android.content.Intent; import android.content.IntentFilter; +import com.facebook.react.bridge.ActivityEventListener; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.LifecycleEventListener; import com.facebook.react.bridge.Promise; @@ -25,13 +26,14 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; -public class FIRMessagingModule extends ReactContextBaseJavaModule implements LifecycleEventListener { +public class FIRMessagingModule extends ReactContextBaseJavaModule implements LifecycleEventListener, ActivityEventListener { private final static String TAG = FIRMessagingModule.class.getCanonicalName(); - Intent currentIntent; + Intent initIntent; public FIRMessagingModule(ReactApplicationContext reactContext) { super(reactContext); getReactApplicationContext().addLifecycleEventListener(this); + getReactApplicationContext().addActivityEventListener(this); registerTokenRefreshHandler(); registerMessageHandler(); } @@ -112,14 +114,9 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule implements Li }, intentFilter); } - @Override - public void onHostResume() { - Intent newIntent = getCurrentActivity().getIntent(); - if(newIntent == currentIntent){ - return; - } + private WritableMap parseIntent(Intent intent){ WritableMap params; - Bundle extras = newIntent.getExtras(); + Bundle extras = intent.getExtras(); if (extras != null) { try { params = Arguments.fromBundle(extras); @@ -131,15 +128,19 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule implements Li params = Arguments.createMap(); } WritableMap fcm = Arguments.createMap(); - fcm.putString("action", newIntent.getAction()); + fcm.putString("action", intent.getAction()); params.putMap("fcm", fcm); - if (currentIntent == null){ + return params; + } + + @Override + public void onHostResume() { + if (initIntent == null){ //the first intent is initial intent that opens the app - sendEvent("FCMInitData", params); - } else { - sendEvent("FCMNotificationReceived", params); + Intent newIntent = getCurrentActivity().getIntent(); + sendEvent("FCMInitData", parseIntent(newIntent)); + initIntent = newIntent; } - currentIntent = newIntent; } @Override @@ -150,4 +151,13 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule implements Li public void onHostDestroy() { } + + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + } + + @Override + public void onNewIntent(Intent intent){ + sendEvent("FCMNotificationReceived", parseIntent(intent)); + } }