1

我有以下内容从我的 iOS 应用程序向 React Native 发出事件。

iOS

- (void)sendBrazeDeepLinkUrlToReactNative: (NSString *) payload {
  if (hasListeners) {
    [self sendEventWithName:@"incomingRNAppEvent" body:@{@"url":payload}];
  }
}

然后我在我的 React Native App 中监听事件。

const AppNotificationEmitter = new NativeEventEmitter(AppNotification);
      const subscription = AppNotificationEmitter.addListener(
        "incomingRNAppEvent",
        (event: any) => {
          console.log("InAppMessage Recieved: ", JSON.stringify(event));

          console.log("AppNotification: ", event);
        }
      );

当事件发生时,我触发了事件并且一切都按预期工作,除了......

React Native 中接收到的事件对象包含一个空对象???

例如 `console.log("AppNotification", event) 的输出是:

AppNotification: {"url": null}

并且我能够通过调试iOS原生模块并检查触发事件时的值来确认URL肯定是设置的。即有效载荷是一个有效的网址。

4

1 回答 1

0

好的,事实证明我对 Objective-C 的了解是问题所在。进入我的 sendBrazeDeepLinkUrlToReactNative 的对象正在获取 NSURL * 而不是 NSString

- (void)sendBrazeDeepLinkUrlToReactNative: (NSString *) payload {
  if (hasListeners) {
    [self sendEventWithName:@"incomingRNAppEvent" body:@{@"url":payload}];
  }
}

此代码有效。

- (void)sendBrazeDeepLinkUrlToReactNative: (NSURL *) payload {
  if (hasListeners) {
    [self sendEventWithName:@"incomingRNAppEvent" body:@{@"url":payload.absoluteString}];
  }
}
于 2022-01-31T12:18:08.070 回答