Commit 8ffcac97 authored by Libin Lu's avatar Libin Lu

hook on newIntent to broadcast notification clicked when app in background

parent c079acad
...@@ -24,7 +24,7 @@ import java.util.HashMap; ...@@ -24,7 +24,7 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
public class FIRMessagingModule extends ReactContextBaseJavaModule { public class FIRMessagingModule extends ReactContextBaseJavaModule implements LifecycleEventListener {
private final static String TAG = FIRMessagingModule.class.getCanonicalName(); private final static String TAG = FIRMessagingModule.class.getCanonicalName();
Intent mIntent; Intent mIntent;
...@@ -33,6 +33,7 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule { ...@@ -33,6 +33,7 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule {
mIntent = intent; mIntent = intent;
getReactApplicationContext().addLifecycleEventListener(this);
registerTokenRefreshHandler(); registerTokenRefreshHandler();
registerMessageHandler(); registerMessageHandler();
} }
...@@ -81,15 +82,15 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule { ...@@ -81,15 +82,15 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule {
getReactApplicationContext().registerReceiver(new BroadcastReceiver() { getReactApplicationContext().registerReceiver(new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (getReactApplicationContext().hasActiveCatalystInstance()) { if (getReactApplicationContext().hasActiveCatalystInstance()) {
String token = intent.getStringExtra("token"); String token = intent.getStringExtra("token");
WritableMap params = Arguments.createMap(); WritableMap params = Arguments.createMap();
params.putString("token", token); params.putString("token", token);
sendEvent("FCMTokenRefreshed", params); sendEvent("FCMTokenRefreshed", params);
abortBroadcast(); abortBroadcast();
} }
} }
}, intentFilter); }, intentFilter);
} }
...@@ -100,21 +101,43 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule { ...@@ -100,21 +101,43 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule {
getReactApplicationContext().registerReceiver(new BroadcastReceiver() { getReactApplicationContext().registerReceiver(new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (getReactApplicationContext().hasActiveCatalystInstance()) { if (getReactApplicationContext().hasActiveCatalystInstance()) {
RemoteMessage message = intent.getParcelableExtra("data"); RemoteMessage message = intent.getParcelableExtra("data");
WritableMap params = Arguments.createMap(); WritableMap params = Arguments.createMap();
if(message.getData() != null){ if(message.getData() != null){
Map data = message.getData(); Map data = message.getData();
Set<String> keysIterator = data.keySet(); Set<String> keysIterator = data.keySet();
for(String key: keysIterator){ for(String key: keysIterator){
params.putString(key, (String) data.get(key)); params.putString(key, (String) data.get(key));
}
sendEvent("FCMNotificationReceived", params);
abortBroadcast();
} }
sendEvent("FCMNotificationReceived", params);
abortBroadcast();
} }
}
} }
}, intentFilter); }, 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() {
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment