diff --git a/android/react-native-fcm.iml b/android/react-native-fcm.iml index 841500a257be8c1061e0fce73b6a77b86df2cf13..f1f4a602ae52e00f542f0a9e5b9a2b6dcc6ca085 100644 --- a/android/react-native-fcm.iml +++ b/android/react-native-fcm.iml @@ -65,14 +65,6 @@ - - - - - - - - @@ -81,12 +73,21 @@ + + + + + + + + + @@ -101,7 +102,6 @@ - @@ -122,10 +122,11 @@ + - + 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 219559ecd18cfac46f42a87def358856157cf5a4..96928ab92927afb4aeefe1358b30bd9fc54a0479 100644 --- a/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java +++ b/android/src/main/java/com/evollu/react/fcm/FIRMessagingModule.java @@ -13,6 +13,7 @@ import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.WritableMap; import com.facebook.react.modules.core.DeviceEventManagerModule; import com.google.firebase.iid.FirebaseInstanceId; +import com.google.firebase.messaging.FirebaseMessaging; import com.google.firebase.messaging.RemoteMessage; import android.os.Bundle; @@ -71,6 +72,16 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule implements Li promise.resolve(FirebaseInstanceId.getInstance().getToken()); } + @ReactMethod + public void subscribeToTopic(String topic){ + FirebaseMessaging.getInstance().subscribeToTopic(topic); + } + + @ReactMethod + public void unsubscribeFromTopic(String topic){ + FirebaseMessaging.getInstance().unsubscribeFromTopic(topic); + } + private void sendEvent(String eventName, Object params) { getReactApplicationContext() .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) diff --git a/index.js b/index.js index 208d253fa8ee469f12b13a713f2d70101019b0f8..3200504bcefe29b99b68ecede81674952da65a58 100644 --- a/index.js +++ b/index.js @@ -1,37 +1,40 @@ -import { - NativeModules, - DeviceEventEmitter, -} from 'react-native'; +import {NativeModules, DeviceEventEmitter} from 'react-native'; const eventsMap = { - refersh: 'FCMTokenRefreshed', - notification: 'FCMNotificationReceived', + refreshToken: 'FCMTokenRefreshed', + notification: 'FCMNotificationReceived' }; const FIRMessaging = NativeModules.RNFIRMessaging; const FCM = {}; -FCM.getFCMToken = function getFCMToken() { +FCM.getFCMToken = () => { return FIRMessaging.getFCMToken(); }; -FCM.requestPermissions = function requestPermissions() { - return FIRMessaging.requestPermissions(); +FCM.requestPermissions = () => { + return FIRMessaging.requestPermissions(); }; -FCM.on = function on(event, callback) { - const nativeEvent = eventsMap[event]; +FCM.on = (event, callback) => { + const nativeEvent = eventsMap[event]; - const listener = DeviceEventEmitter.addListener(nativeEvent, (params) => { - callback(params); - }); + const listener = DeviceEventEmitter.addListener(nativeEvent, callback); - return function remove() { - listener.remove(); - }; + return function remove() { + listener.remove(); + }; }; +FCM.subscribeToTopic = (topic) => { + FIRMessaging.subscribeToTopic(topic); +} + +FCM.unsubscribeFromTopic = (topic) => { + FIRMessaging.unsubscribeFromTopic(topic); +} + FCM.initialData = FIRMessaging.initialData; FCM.initialAction = FIRMessaging.initialAction; diff --git a/ios/RNFIRMesssaging.m b/ios/RNFIRMesssaging.m index 72267969f1de61fd19ae393b71ba4576624a306b..98bf37e7016532f08e5d88440e14123d52d59e2a 100644 --- a/ios/RNFIRMesssaging.m +++ b/ios/RNFIRMesssaging.m @@ -109,6 +109,16 @@ RCT_EXPORT_METHOD(requestPermissions) } } +RCT_EXPORT_METHOD(subscribeToTopic: (NSString*) topic) +{ + [[FIRMessaging messaging] subscribeToTopic:topic]; +} + +RCT_EXPORT_METHOD(unsubscribeFromTopic: (NSString*) topic) +{ + [[FIRMessaging messaging] unsubscribeFromTopic:topic]; +} + - (void)handleRemoteNotificationReceived:(NSNotification *)notification { [_bridge.eventDispatcher sendDeviceEventWithName:FCMNotificationReceived