1、RCTEventEmitter:
OC:
@interface RCT_EXTERN_MODULE(YRNAMapEventModule, RCTEventEmitter)
Swift:
@objc(YRNAMapEventModule)
class YRNAMapEventModule: RCTEventEmitter {
}
2、RCTBridgeModule
OC
@interface RCT_EXTERN_MODULE(YRNShareModule, NSObject)
Swift:
@objc(YRNShareModule)
class YRNShareModule: NSObject, RCTBridgeModule {
}
RCTBridgeModule 和 RCTEventEmitter 都可以桥接给 RN端使用吗
WearDeviceModule.sendMessageToDevice
RCTEventEmitter 和 RCTBridgeModule 区别是什么
特性 / 功能 | RCTBridgeModule | RCTEventEmitter |
---|---|---|
📦 主要用途 | 提供 JS 可调用的方法 | 向 JS 发送事件(事件通道) |
📲 JS 如何使用 | NativeModules.YourModule.method() | DeviceEventEmitter.addListener("event", callback) |
📡 通信方向 | JS → Native | Native → JS |
🔄 是否支持事件发送 | ❌ 不支持 | ✅ 专门用于事件 |
🧩 常用于 | 通用功能模块,如分享、文件操作、权限等 | 地图、定位、蓝牙、传感器等需要持续回调的场景 |
🧠 是否必须实现 supportedEvents() | ❌ 否 | ✅ 是,必须列出所有可能发送的事件名 |
🛠 Swift 父类 | NSObject | RCTEventEmitter(继承自 NSObject) |