gpt4 book ai didi

javascript - NativeAppEventEmitter 返回未定义

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

很长一段时间以来,我一直在尝试获取登录用户访问 token 。我在 JS 中遇到了重大问题,所以我在 Obj-C 中尝试并取得了成功。

之后我在 RN 上阅读了本指南:https://facebook.github.io/react-native/docs/native-modules-ios.html#sending-events-to-javascript关于如何将字符串从 Obj-C 传递给 JS,它似乎已经成功了。然而,问题是它返回未定义,这让我很生气,因为它调用了字符串,我可以看到我的 Obj-C 如何在日志中正确返回它,但是当它应该在登录后由我的 JS 记录时,它是未定义的。

在 AppDelegate.m 中我有这个:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation
];

NSString *fbAccessToken = [FBSDKAccessToken currentAccessToken].tokenString;

[self.bridge.eventDispatcher sendAppEventWithName:@"AccessToken"
body:@{@"name": fbAccessToken}];

NSLog(@"%@", fbAccessToken);

return handled;
}

它成功记录了一个有效的访问 token 。在 JS 中,我通过以下方式调用 EventEmitter:var subscription = NativeAppEventEmitter.addListener('AccessToken');,我猜这应该有效,因为我也看过这个例子:https://github.com/facebook/react-native/blob/master/Libraries/Geolocation/Geolocation.js ,他们所做的似乎和我一模一样。

简单地调用订户给我这个:

2016-05-06 10:39:31.013 [info][tid:com.facebook.React.JavaScript] { subscriber: 
{ _subscriptionsForType:
{ AccessToken:
[ { subscriber: [Circular],
listener: undefined,
context: undefined,
eventType: 'AccessToken',
key: 0 },
[Circular] ] },
_currentSubscription: null },
listener: undefined,
context: undefined,
eventType: 'AccessToken',
key: 1 }

所以调用 name 或 body 只会给我 undefined

我做错了什么?

最佳答案

你必须捕获传入的数据,所以尝试这样的事情(这是在文档示例中!):

var subscription = NativeAppEventEmitter.addListener(
'AccessToken',
(token) => console.log(token.name)
);

请记住,您不能真正直接调用 subscriber

关于javascript - NativeAppEventEmitter 返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37068009/

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