2016-05-05 9 views
1

Ich baue gerade eine App in React Native und konfrontiert mit einem Problem, das ich nicht in der Lage sein konnte, in meinem RN framewok aufzulösen, und ich muss wahrscheinlich erwähnen, dass ich sehr bin neu mit Objective-C. Allerdings habe ich es geschafft, indem ich es in meiner AppDelegate.m-Datei aufgerufen habe. Aber wie kann ich diese String-Variable, die ich in meinem Appdelegate erstellt habe, an meine Javascript-Dateien übergeben?Übergeben einer Zeichenfolge von Obj-C auf React Native

Ich nahm einen kurzen Blick auf den NativeAppEventEmitter, aber es scheint etwas anderes zu sein. In meinem AppDelegate.m sieht es wie folgt aus:

- (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; 
    return handled; 
} 

am NativeAppEventEmitter Trick von RN gegeben Suche habe ich versucht, sie umzusetzen. Aber es beschwert sich viel über meine Brücke.

#import "AppDelegate.h" 

#import "RCTRootView.h" 

#import <FBSDKCoreKit/FBSDKCoreKit.h> 

#import "RCTBridge.h" 

#import "RCTBridgeModule.h" 

#import "RCTEventDispatcher.h" 

@implementation AppDelegate 

RCT_EXPORT_MODULE(); 

@synthesize bridge = _bridge; 

Wo ich in meinem AppDelegate.h erklären ihn als: @property (nonatomic) NSString *bridge;

Aber wenn ich versuche, die eventDispatcher es mir folgendes gibt zu verwenden: wenn

enter image description here

Antwort

2

können Sie einige Daten übergeben Starten einer App mit initialProperties. Ich denke, es ist die beste Lösung in Ihrem Fall. Sie können Ihr Token auf RCTRootView übergeben und es dann von props greifen. Es gibt ein gutes Beispiel in RN docs. Alternativ können Sie send an event mit eingebetteten Daten.

+0

Die Daten werden nur auftreten, wenn ich die Anmeldung in meiner App durchführe. Also ich denke, es wird leer sein, wenn die App gestartet wird. Wäre das ein Problem? –

+0

Ich habe meine Antwort auf Ihren Fall aktualisiert. Dies hängt möglicherweise nicht mit der Frage selbst zusammen, aber Sie können ['reactive-native-fbsdk'] (https://github.com/facebook/react-native-fbsdk) verwenden und native-JS-Kommunikation vermeiden. Sie finden ein Tutorial, wie Sie es richtig konfigurieren können (hier: https://blog.callstack.io/login-users-with-facebook-in-react-native-4b230b847899#.kyme1j6du). –

+0

Danke! Ich werde versuchen, diese Arbeit dann zu machen. In Bezug auf die fbsdk, der Grund, warum ich es so mache, ist, weil ich in der Lage war, ein AccessStoken perfekt in hier zu generieren, aber nicht mit der fbsdk, Problem damit ist weiter in meiner Frage hier zu erklären: http: // stackoverflow. com/questions/37045983/issues-retrieving-fbsdk-access-token-und-user-id –