gpt4 book ai didi

ios - React Native - 将数据从 native 发送到 javascript/桥接

转载 作者:行者123 更新时间:2023-11-29 11:57:08 27 4
gpt4 key购买 nike

我是 React Native (iOS) 的新手,我已经阅读了很多关于桥接的内容,但是我似乎无法让它工作。

我需要能够将对象/字符串从 AppDelegate 发送到 JavaScript。我的 AppDelegate 返回一个 UserName,它由 AppDelegate 中我的一种方法中的 native 代码检索。

我尝试在 AppDelegate.m 中使用

#import "RCTBridge.h"
#import "RCTEventDispatcher.h"

然后

@synthesize bridge = _bridge;

在我的方法中

  NSString *eventName = notification.userInfo[@"name"];
[self.bridge.eventDispatcher sendAppEventWithName:@"EventReminder"
body:@{@"name": eventName}];

但以上均无效,我收到错误。我还需要对 AppDelegate.h 做些什么吗?

谁能帮帮我?将数据从 native 发送到 javascript 的最简单方法是什么?

更新:

我找到了解决方法,但我认为它没有效果,因为我调用了两次 RCTRootView。首先加载带有 initialProperties nil 的应用程序,如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSURL *jsCodeLocation;


jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];



RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
moduleName:@"myApp"
initialProperties:nil
launchOptions:launchOptions];



rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];

[self getUsername];

}

第二次,当我检索到用户名时,我会像这样更新 initialProperties:

-(void) getUsername {

//3rd party code to retrieve the username

NSString *username = username

NSURL *jsCodeLocation;

jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle?platform=ios&dev=true"];

RCTBridge *bridge = [[RCTBridge alloc] initWithBundleURL:jsCodeLocation moduleProvider:nil launchOptions:nil];

RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"myApp"
initialProperties: @{@"username" : username}];



self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];


}

通过上述方式,我可以通过 JavaScript 中的 this.props 发送和接收用户名。

但正如我所说,我不确定这是一种有效的方法,因为我调用了两次 RCTRootView

如有任何帮助,我们将不胜感激。

最佳答案

您可以不尝试将它放在 iOS 端的初始启动代码中,而是将它放在您导出函数以从中返回信息的 native 模块中。参见 React Natives 官方文档:https://facebook.github.io/react-native/docs/native-modules-ios.html

关于ios - React Native - 将数据从 native 发送到 javascript/桥接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38593549/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com