原生模块是JS中也可以使用的Objective-C类。一般来说这样的每一个模块的实例都是在每一次通过JS bridge通信时创建的。他们可以导出任意的函数和常量给React Native。
(1.)rn向原生iOS传值(事先要写好的方法),并可以回调(变相的原生iOS向rn传值)
必须要继承协议
RCTBridgeModule
RN中
(2.)对于RN调iOS原生,一目了然,上面第一种就是,至于iOS调RN:显然我们可以通过RN主动调原生继而通过Callback或者Promise回调从而拿到原生传过来的数据;然而这样只是原生被动向RN传数据,很多时候我们需要原生代码主动向RN发送消息,这种场景其实很常见,比如集成第三方的服务,通过代理回调获取结果发送给RN。。。具体来说比如我项目里,接入了第三方IM,我需要在RN的代码里监听IM账号被其它设备踢出登录,第三方SDK已经提供了账号被踢出的监听回调。
所以这边用到了通知 RCTEventEmitter
继承RCTEventEmitter实现RCTBridgeModule协议
.m文件中需要实现下面三个代理方法
在合适的时机发送消息给RN
RN中