Ich habe lange versucht, ein angemeldetes Benutzerzugriffstoken zu erhalten. Ich hatte große Probleme damit in JS, also versuchte und gelang es mir in Obj-C.NativeAppEventEmitter gibt undefined zurück
Danach ging ich durch diese Anleitung auf RN: https://facebook.github.io/react-native/docs/native-modules-ios.html#sending-events-to-javascript auf, wie man eine Schnur von Obj-C zu JS übergibt, und es schien, erfolgreich gewesen zu sein. Die Sache ist jedoch, dass sie undefiniert zurückkehrt, und das nervt mich, weil sie die Zeichenfolge aufruft und ich sehe, wie mein Obj-C sie im Log korrekt zurückgibt, aber wenn sie von meinem JS nach der Anmeldung protokolliert werden soll, es ist undefiniert.
In AppDelegate.m Ich habe dies:
- (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;
}
, die erfolgreich eine Arbeits accesstoken protokolliert. In JS rufe ich den EventEmitter an: var subscription = NativeAppEventEmitter.addListener('AccessToken');
, das sollte funktionieren Ich schätze da ich auch dieses Beispiel angeschaut habe: https://github.com/facebook/react-native/blob/master/Libraries/Geolocation/Geolocation.js, wo sie es scheinbar genau so gemacht haben wie ich.
einfach den Teilnehmer anzurufen gibt mir diese:
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 }
So Rufname- oder Körper gibt mir nur undefined
.
Was mache ich falsch?
Jetzt ist Sais unter Listener: [Funktion] statt undefiniert. Aber wie kann ich das so nennen, damit ich die Zeichenfolge von Obj-c bekommen kann? –
Sie können das nicht wirklich nennen. 'NativeAppEventEmitter' sendet ein Ereignis von objc an JS. Sie können es nicht anders verwenden. Das Token wird gesendet, wenn es von objc gesendet wird. –
Bedeutet dies, dass die Zeichenfolge, die ich in ObjC generiert habe, für meine Operationen in JS nutzlos ist? –