android - iOS 上的设备事件发射器

标签 android ios reactjs react-native deviceeventemitter

我正在开发一个 react native 应用程序。我正在尝试将事件从 native 代码发送到我的 react native 代码。这在 Android 上有效,但在 iOS 上却很困难。

我已成功监听从我的 native Android 代码发送的事件。然而,在 iOS 上运行时,我的 React Native 应用程序并没有“拾取”相同的事件,并试图找出原因。

我有连接到 MQTT 代理的代码。该代码是为 iOS 和 Android 原生编写的。在连接过程中,我将连接状态从 native 代码发送到react-native。这在 Android 上运行良好。使用reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName, eventString)方法从我的Android代码发送的事件按预期到达我的react native 代码。但是,在我的 iOS 代码中,正在发送使用 sendEvent() 方法传输的消息,但我没有在我的 react native 代码中接收它们。我什至在我的 iOS 模拟器中收到一条黄色警告,指出“在没有注册监听器的情况下发送 Status”。发送事件的 Swift 类扩展了 RCTEventEmitter 类。

希望这就是人们需要帮助的所有细节。我没有太多使用 DeviceEventEmitter 的经验,也没有太多使用 Swift 和 iOS 的经验。主要是 Android 人员,所以这有点令人困惑。我猜它实际上非常简单,但我有点迷失了。

this.handleMqttStatusChange = this.handleMqttStatusChange.bind(this);
DeviceEventEmitter.addListener("Status", this.handleMqttStatusChange);

以下 Swift 代码发送事件。

self.sendEvent(withName: "Status", body: ["status":"Connecting"]);

发送事件的 Swift 类扩展了 RCTEventEmitter。

class AwsIotModule: RCTEventEmitter {

我的 Android Java 文件扩展了 ReactContextBaseJavaModule。

public class AwsIotModule extends ReactContextBaseJavaModule {

下面的java方法用于发送事件。

private void sendEvent(ReactContext reactContext,
                           String eventName,
                           @Nullable WritableMap params) {
        reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
                .emit(eventName, params);
    }

最佳答案

嗯,我明白了。我在 react native 代码中转而使用 NativeEventEmitter 而不是 DeviceEmitter。现在 Android 和 iOS 上的 React-Native 都会接收事件。

关于android - iOS 上的设备事件发射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55412904/

相关文章:

android - MvvmCross Android ImageView绑定(bind)图片src

android - 单选按钮状态未保留在回收站 View 中

android - 下载后在expo中打开PDF文件

ios - MvvmCross Xamarin.Forms(iOS): Using a TabbedPage within a MasterDetail page

javascript - Reactjs,当 elem 位于 map() 内部时无法 getelementbyid

java - 使用许多 AsyncTasks 会使我的 Android 应用程序运行得更快吗?

iphone - 重叠的 UITextView 边框

iphone - ios AudioQueue 流式传输多首歌曲

reactjs - 从 Electron 返回结果到 React

javascript - Webpack - 将应用程序部署到不同的环境