From 8f807e80e0023829179adc1e729c6ac25f14c09a Mon Sep 17 00:00:00 2001 From: yogevbd Date: Sun, 3 Feb 2019 19:45:41 +0200 Subject: [PATCH] Fixes FCM notifications --- .../RNNotificationsModule.java | 63 +++++------------ .../RNNotificationsPackage.java | 69 ++++++++++++++++++- 2 files changed, 86 insertions(+), 46 deletions(-) diff --git a/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java b/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java index 3662ab8..dd38c7d 100644 --- a/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java +++ b/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java @@ -8,6 +8,7 @@ import android.os.Bundle; import android.support.v4.app.NotificationManagerCompat; import android.util.Log; +import com.facebook.react.bridge.ActivityEventListener; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Promise; import com.facebook.react.bridge.ReactApplicationContext; @@ -29,17 +30,15 @@ import com.google.firebase.FirebaseApp; import static com.wix.reactnativenotifications.Defs.LOGTAG; -public class RNNotificationsModule extends ReactContextBaseJavaModule implements AppLifecycleFacade.AppVisibilityListener, Application.ActivityLifecycleCallbacks { +public class RNNotificationsModule extends ReactContextBaseJavaModule implements ActivityEventListener { public RNNotificationsModule(Application application, ReactApplicationContext reactContext) { super(reactContext); - - FirebaseApp.initializeApp(reactContext.getApplicationContext()); if (AppLifecycleFacadeHolder.get() instanceof ReactAppLifecycleFacade) { ((ReactAppLifecycleFacade) AppLifecycleFacadeHolder.get()).init(reactContext); } - AppLifecycleFacadeHolder.get().addVisibilityListener(this); - application.registerActivityLifecycleCallbacks(this); + + reactContext.addActivityEventListener(this); } @Override @@ -56,6 +55,20 @@ public class RNNotificationsModule extends ReactContextBaseJavaModule implements notificationsDrawer.onAppInit(); } + @Override + public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) { + + } + + @Override + public void onNewIntent(Intent intent) { + Bundle notificationData = intent.getExtras(); + if (notificationData != null) { + final IPushNotification notification = PushNotification.get(getReactApplicationContext().getApplicationContext(), notificationData); + notification.onOpened(); + } + } + @ReactMethod public void refreshToken() { Log.d(LOGTAG, "Native method invocation: refreshToken()"); @@ -99,46 +112,6 @@ public class RNNotificationsModule extends ReactContextBaseJavaModule implements promise.resolve(new Boolean(hasPermission)); } - @Override - public void onAppVisible() { - final IPushNotificationsDrawer notificationsDrawer = PushNotificationsDrawer.get(getReactApplicationContext().getApplicationContext()); - notificationsDrawer.onAppVisible(); - } - - @Override - public void onAppNotVisible() { - } - - @Override - public void onActivityCreated(Activity activity, Bundle savedInstanceState) { - final IPushNotificationsDrawer notificationsDrawer = PushNotificationsDrawer.get(getReactApplicationContext().getApplicationContext()); - notificationsDrawer.onNewActivity(activity); - } - - @Override - public void onActivityStarted(Activity activity) { - } - - @Override - public void onActivityResumed(Activity activity) { - } - - @Override - public void onActivityPaused(Activity activity) { - } - - @Override - public void onActivityStopped(Activity activity) { - } - - @Override - public void onActivitySaveInstanceState(Activity activity, Bundle outState) { - } - - @Override - public void onActivityDestroyed(Activity activity) { - } - protected void startGcmIntentService(String extraFlag) { final Context appContext = getReactApplicationContext().getApplicationContext(); final Intent tokenFetchIntent = new Intent(appContext, FcmInstanceIdRefreshHandlerService.class); diff --git a/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java b/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java index 417e12b..26748a1 100644 --- a/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java +++ b/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java @@ -1,22 +1,41 @@ package com.wix.reactnativenotifications; +import android.app.Activity; import android.app.Application; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; import com.facebook.react.ReactPackage; +import com.facebook.react.bridge.ActivityEventListener; import com.facebook.react.bridge.NativeModule; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.uimanager.ViewManager; +import com.google.firebase.FirebaseApp; +import com.wix.reactnativenotifications.core.AppLifecycleFacade; +import com.wix.reactnativenotifications.core.AppLifecycleFacadeHolder; +import com.wix.reactnativenotifications.core.notification.IPushNotification; +import com.wix.reactnativenotifications.core.notification.PushNotification; +import com.wix.reactnativenotifications.core.notificationdrawer.IPushNotificationsDrawer; +import com.wix.reactnativenotifications.core.notificationdrawer.PushNotificationsDrawer; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Map; -public class RNNotificationsPackage implements ReactPackage { +import static com.wix.reactnativenotifications.Defs.LOGTAG; + +public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade.AppVisibilityListener, Application.ActivityLifecycleCallbacks { private final Application mApplication; public RNNotificationsPackage(Application application) { mApplication = application; + FirebaseApp.initializeApp(application.getApplicationContext()); + + AppLifecycleFacadeHolder.get().addVisibilityListener(this); + application.registerActivityLifecycleCallbacks(this); } @Override @@ -28,4 +47,52 @@ public class RNNotificationsPackage implements ReactPackage { public List createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); } + + @Override + public void onAppVisible() { + final IPushNotificationsDrawer notificationsDrawer = PushNotificationsDrawer.get(mApplication.getApplicationContext()); + notificationsDrawer.onAppVisible(); + } + + @Override + public void onAppNotVisible() { + } + + @Override + public void onActivityCreated(Activity activity, Bundle savedInstanceState) { + final IPushNotificationsDrawer notificationsDrawer = PushNotificationsDrawer.get(mApplication.getApplicationContext()); + notificationsDrawer.onNewActivity(activity); + + Bundle notificationData = activity.getIntent().getExtras(); + if (notificationData != null) { + final IPushNotification pushNotification = PushNotification.get(mApplication.getApplicationContext(), notificationData); + if (pushNotification != null) { + pushNotification.onOpened(); + } + } + } + + @Override + public void onActivityStarted(Activity activity) { + } + + @Override + public void onActivityResumed(Activity activity) { + } + + @Override + public void onActivityPaused(Activity activity) { + } + + @Override + public void onActivityStopped(Activity activity) { + } + + @Override + public void onActivitySaveInstanceState(Activity activity, Bundle outState) { + } + + @Override + public void onActivityDestroyed(Activity activity) { + } } -- 2.26.2