diff --git a/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java b/android/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java index 3662ab85c8f6a6f12a31ca0eeaaad6a34f0dd3f6..dd38c7d9f600c4b9521a23ee9249a2a249746d3c 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 417e12b6417c2d4c40799c662047c0cd3f8e6402..26748a14bc46a1be4045fa5330cbe1b7003b41c9 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) { + } }