Commit 5df5dad4 authored by Yogev Ben David's avatar Yogev Ben David Committed by GitHub

Merge pull request #271 from wix/foregroundListener

Foreground listener
parents 4a3efcd6 24bab8ab
...@@ -7,5 +7,6 @@ public interface Defs { ...@@ -7,5 +7,6 @@ public interface Defs {
String TOKEN_RECEIVED_EVENT_NAME = "remoteNotificationsRegistered"; String TOKEN_RECEIVED_EVENT_NAME = "remoteNotificationsRegistered";
String NOTIFICATION_RECEIVED_EVENT_NAME = "notificationReceived"; String NOTIFICATION_RECEIVED_EVENT_NAME = "notificationReceived";
String NOTIFICATION_RECEIVED_FOREGROUND_EVENT_NAME = "notificationReceivedInForeground";
String NOTIFICATION_OPENED_EVENT_NAME = "notificationOpened"; String NOTIFICATION_OPENED_EVENT_NAME = "notificationOpened";
} }
...@@ -21,6 +21,7 @@ import com.wix.reactnativenotifications.core.ProxyService; ...@@ -21,6 +21,7 @@ import com.wix.reactnativenotifications.core.ProxyService;
import static com.wix.reactnativenotifications.Defs.NOTIFICATION_OPENED_EVENT_NAME; import static com.wix.reactnativenotifications.Defs.NOTIFICATION_OPENED_EVENT_NAME;
import static com.wix.reactnativenotifications.Defs.NOTIFICATION_RECEIVED_EVENT_NAME; import static com.wix.reactnativenotifications.Defs.NOTIFICATION_RECEIVED_EVENT_NAME;
import static com.wix.reactnativenotifications.Defs.NOTIFICATION_RECEIVED_FOREGROUND_EVENT_NAME;
public class PushNotification implements IPushNotification { public class PushNotification implements IPushNotification {
...@@ -61,6 +62,9 @@ public class PushNotification implements IPushNotification { ...@@ -61,6 +62,9 @@ public class PushNotification implements IPushNotification {
public void onReceived() throws InvalidNotificationException { public void onReceived() throws InvalidNotificationException {
postNotification(null); postNotification(null);
notifyReceivedToJS(); notifyReceivedToJS();
if (mAppLifecycleFacade.isAppVisible()) {
notifiyReceivedForegroundNotificationToJS();
}
} }
@Override @Override
...@@ -186,6 +190,10 @@ public class PushNotification implements IPushNotification { ...@@ -186,6 +190,10 @@ public class PushNotification implements IPushNotification {
mJsIOHelper.sendEventToJS(NOTIFICATION_RECEIVED_EVENT_NAME, mNotificationProps.asBundle(), mAppLifecycleFacade.getRunningReactContext()); mJsIOHelper.sendEventToJS(NOTIFICATION_RECEIVED_EVENT_NAME, mNotificationProps.asBundle(), mAppLifecycleFacade.getRunningReactContext());
} }
private void notifiyReceivedForegroundNotificationToJS() {
mJsIOHelper.sendEventToJS(NOTIFICATION_RECEIVED_FOREGROUND_EVENT_NAME, mNotificationProps.asBundle(), mAppLifecycleFacade.getRunningReactContext());
}
private void notifyOpenedToJS() { private void notifyOpenedToJS() {
mJsIOHelper.sendEventToJS(NOTIFICATION_OPENED_EVENT_NAME, mNotificationProps.asBundle(), mAppLifecycleFacade.getRunningReactContext()); mJsIOHelper.sendEventToJS(NOTIFICATION_OPENED_EVENT_NAME, mNotificationProps.asBundle(), mAppLifecycleFacade.getRunningReactContext());
} }
......
...@@ -70,7 +70,10 @@ import {NotificationsAndroid} from 'react-native-notifications'; ...@@ -70,7 +70,10 @@ import {NotificationsAndroid} from 'react-native-notifications';
// On Android, we allow for only one (global) listener per each event type. // On Android, we allow for only one (global) listener per each event type.
NotificationsAndroid.setNotificationReceivedListener((notification) => { NotificationsAndroid.setNotificationReceivedListener((notification) => {
console.log("Notification received on device", notification.getData()); console.log("Notification received on device in background or foreground", notification.getData());
});
NotificationsAndroid.setNotificationReceivedInForegroundListener((notification) => {
console.log("Notification received on device in foreground", notification.getData());
}); });
NotificationsAndroid.setNotificationOpenedListener((notification) => { NotificationsAndroid.setNotificationOpenedListener((notification) => {
console.log("Notification opened by device user", notification.getData()); console.log("Notification opened by device user", notification.getData());
......
...@@ -4,6 +4,7 @@ import NotificationAndroid from "./notification"; ...@@ -4,6 +4,7 @@ import NotificationAndroid from "./notification";
const RNNotifications = NativeModules.WixRNNotifications; const RNNotifications = NativeModules.WixRNNotifications;
let notificationReceivedListener; let notificationReceivedListener;
let notificationReceivedInForegroundListener;
let notificationOpenedListener; let notificationOpenedListener;
let registrationTokenUpdateListener; let registrationTokenUpdateListener;
...@@ -23,6 +24,10 @@ export class NotificationsAndroid { ...@@ -23,6 +24,10 @@ export class NotificationsAndroid {
notificationReceivedListener = DeviceEventEmitter.addListener("notificationReceived", (notification) => listener(new NotificationAndroid(notification))); notificationReceivedListener = DeviceEventEmitter.addListener("notificationReceived", (notification) => listener(new NotificationAndroid(notification)));
} }
static setNotificationReceivedInForegroundListener(listener) {
notificationReceivedInForegroundListener = DeviceEventEmitter.addListener("notificationReceivedInForeground", (notification) => listener(new NotificationAndroid(notification)));
}
static clearNotificationReceivedListener() { static clearNotificationReceivedListener() {
if (notificationReceivedListener) { if (notificationReceivedListener) {
notificationReceivedListener.remove(); notificationReceivedListener.remove();
...@@ -30,6 +35,13 @@ export class NotificationsAndroid { ...@@ -30,6 +35,13 @@ export class NotificationsAndroid {
} }
} }
static clearNotificationReceivedInForegroundListener() {
if (notificationReceivedInForegroundListener) {
notificationReceivedInForegroundListener.remove();
notificationReceivedInForegroundListener = null;
}
}
static setRegistrationTokenUpdateListener(listener) { static setRegistrationTokenUpdateListener(listener) {
registrationTokenUpdateListener = DeviceEventEmitter.addListener("remoteNotificationsRegistered", listener); registrationTokenUpdateListener = DeviceEventEmitter.addListener("remoteNotificationsRegistered", listener);
} }
......
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