我一直在寻找如何在React Native和Android Native代码之间建立桥梁一段时间,但我仍然不太明白。我已阅读文档here,但我不太明白。 我想要做的是,我想构建一个利用推送通知的应用程序,但由于我需要将消息推送到中国,我不能使用GCM(多亏了防火墙),所以我使用另一个第三方推送SDK
我设法将推送集成到我的应用中(每当我推送一些内容时都会产生console.log()
消息),下一步是我想将其重新路由到某个页面
任何帮助将不胜感激:)
答案 0 :(得分:1)
注意:如果您使用的是公共推送通知(即GCM和APNS),请改用this。由于我需要使用另一个第三方推送服务,我需要找到一种方法将SDK(本机)与React Native连接起来。
所以经过几个小时修补这个问题后,我找到了解决问题的方法。该解决方案分为两部分:
emitter
,只要服务器发送推送,就会发出一个事件。listener
,这会听你之前发出的事件。<强>发射极强>
这种情况发生在原生方面(在我的情况下是Android)
对于这部分,我从this库使用GCM的方式中了解到了这一点。并在RN文档中找到了教程here。
基本上,在您收到推送SomeBroadCastReceiver onReceive()
函数后,您可以将该包作为参数传递给此函数
reactContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
//this eventName is a key so you need to remember it, because you need to call it on the listener
.emit(eventName, params);
<强>听者强>
听众将建立在RN方面。这个documentation帮助了我。之前我错过了这个文档,因为它只出现在RN iOS文档中。
import { NativeEventEmitter, NativeModules } from 'react-native';
//import your already created package name here
const { YourCustomPackageName} = NativeModules;
然后在ComponentWillMount()
const yourCustomPackageEmitter = new NativeEventEmitter(YourCustomPackageName);
pushListenerEmitter.addListener(eventName, this.handlePush, this);
然后你只需要创建handlePush
函数并获取参数
handlePush = (event) => {
console.log('event triggered..');
console.log(event);
}
答案 1 :(得分:0)
进行推送通知的最佳方法是深度链接。如果您使用的是React Navigation,则操作起来非常简单。 Deep Linking React Native 您可以定义唯一的URL(例如yorApp:// employee / 1),然后轻松导航至该屏幕。