Commit fd8f4a4c authored by Libin Lu's avatar Libin Lu

add subscribe to topic feature and fix event typo

parent 48770b8f
...@@ -65,14 +65,6 @@ ...@@ -65,14 +65,6 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
...@@ -81,12 +73,21 @@ ...@@ -81,12 +73,21 @@
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.firebase/firebase-messaging/9.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
...@@ -101,7 +102,6 @@ ...@@ -101,7 +102,6 @@
</content> </content>
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" /> <orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="react-native-0.17.1" level="project" />
<orderEntry type="library" exported="" name="fresco-0.8.1" level="project" /> <orderEntry type="library" exported="" name="fresco-0.8.1" level="project" />
<orderEntry type="library" exported="" name="imagepipeline-0.8.1" level="project" /> <orderEntry type="library" exported="" name="imagepipeline-0.8.1" level="project" />
<orderEntry type="library" exported="" name="play-services-base-9.0.1" level="project" /> <orderEntry type="library" exported="" name="play-services-base-9.0.1" level="project" />
...@@ -122,10 +122,11 @@ ...@@ -122,10 +122,11 @@
<orderEntry type="library" exported="" name="firebase-analytics-9.0.1" level="project" /> <orderEntry type="library" exported="" name="firebase-analytics-9.0.1" level="project" />
<orderEntry type="library" exported="" name="firebase-core-9.0.1" level="project" /> <orderEntry type="library" exported="" name="firebase-core-9.0.1" level="project" />
<orderEntry type="library" exported="" name="jsr305-3.0.0" level="project" /> <orderEntry type="library" exported="" name="jsr305-3.0.0" level="project" />
<orderEntry type="library" exported="" name="react-native-0.20.1" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-23.0.1" level="project" /> <orderEntry type="library" exported="" name="appcompat-v7-23.0.1" level="project" />
<orderEntry type="library" exported="" name="okhttp-2.5.0" level="project" /> <orderEntry type="library" exported="" name="okhttp-2.5.0" level="project" />
<orderEntry type="library" exported="" name="android-jsc-r174650" level="project" />
<orderEntry type="library" exported="" name="drawee-0.8.1" level="project" /> <orderEntry type="library" exported="" name="drawee-0.8.1" level="project" />
<orderEntry type="library" exported="" name="android-jsc-r174650" level="project" />
<orderEntry type="library" exported="" name="firebase-analytics-impl-9.0.1" level="project" /> <orderEntry type="library" exported="" name="firebase-analytics-impl-9.0.1" level="project" />
<orderEntry type="library" exported="" name="bolts-android-1.1.4" level="project" /> <orderEntry type="library" exported="" name="bolts-android-1.1.4" level="project" />
<orderEntry type="library" exported="" name="commons-cli-1.2" level="project" /> <orderEntry type="library" exported="" name="commons-cli-1.2" level="project" />
......
...@@ -13,6 +13,7 @@ import com.facebook.react.bridge.ReactMethod; ...@@ -13,6 +13,7 @@ import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.WritableMap; import com.facebook.react.bridge.WritableMap;
import com.facebook.react.modules.core.DeviceEventManagerModule; import com.facebook.react.modules.core.DeviceEventManagerModule;
import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.RemoteMessage; import com.google.firebase.messaging.RemoteMessage;
import android.os.Bundle; import android.os.Bundle;
...@@ -71,6 +72,16 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule implements Li ...@@ -71,6 +72,16 @@ public class FIRMessagingModule extends ReactContextBaseJavaModule implements Li
promise.resolve(FirebaseInstanceId.getInstance().getToken()); 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) { private void sendEvent(String eventName, Object params) {
getReactApplicationContext() getReactApplicationContext()
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class) .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
......
import { import {NativeModules, DeviceEventEmitter} from 'react-native';
NativeModules,
DeviceEventEmitter,
} from 'react-native';
const eventsMap = { const eventsMap = {
refersh: 'FCMTokenRefreshed', refreshToken: 'FCMTokenRefreshed',
notification: 'FCMNotificationReceived', notification: 'FCMNotificationReceived'
}; };
const FIRMessaging = NativeModules.RNFIRMessaging; const FIRMessaging = NativeModules.RNFIRMessaging;
const FCM = {}; const FCM = {};
FCM.getFCMToken = function getFCMToken() { FCM.getFCMToken = () => {
return FIRMessaging.getFCMToken(); return FIRMessaging.getFCMToken();
}; };
FCM.requestPermissions = function requestPermissions() { FCM.requestPermissions = () => {
return FIRMessaging.requestPermissions(); return FIRMessaging.requestPermissions();
}; };
FCM.on = function on(event, callback) { FCM.on = (event, callback) => {
const nativeEvent = eventsMap[event]; const nativeEvent = eventsMap[event];
const listener = DeviceEventEmitter.addListener(nativeEvent, (params) => { const listener = DeviceEventEmitter.addListener(nativeEvent, callback);
callback(params);
});
return function remove() { return function remove() {
listener.remove(); listener.remove();
}; };
}; };
FCM.subscribeToTopic = (topic) => {
FIRMessaging.subscribeToTopic(topic);
}
FCM.unsubscribeFromTopic = (topic) => {
FIRMessaging.unsubscribeFromTopic(topic);
}
FCM.initialData = FIRMessaging.initialData; FCM.initialData = FIRMessaging.initialData;
FCM.initialAction = FIRMessaging.initialAction; FCM.initialAction = FIRMessaging.initialAction;
......
...@@ -109,6 +109,16 @@ RCT_EXPORT_METHOD(requestPermissions) ...@@ -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 - (void)handleRemoteNotificationReceived:(NSNotification *)notification
{ {
[_bridge.eventDispatcher sendDeviceEventWithName:FCMNotificationReceived [_bridge.eventDispatcher sendDeviceEventWithName:FCMNotificationReceived
......
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