2016-08-14 1 views
4

Um FBSDK zu verwenden Ich brauche diese Schnipsel in AppDelegateAppDelegate.m für beide FBSDK und LinkingManager

- (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 
    ]; 
    // Add any custom logic here. 
    return handled; 
} 

LinkingManager nutzen zu können, muss ich diese Schnipsel in AppDelegate

#import "RCTLinkingManager.h" 

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    return [RCTLinkingManager application:application openURL:url 
         sourceApplication:sourceApplication annotation:annotation]; 
} 

Sie sind offensichtlich dupliziert . Wie kombiniere ich die beiden, damit beide Bibliotheken funktionieren? Ich weiß kein Objective-C

+0

Sie können verschiedene Dinge zurückgeben, indem Sie den sourceApplication -Parameter überprüfen – washloops

Antwort

5

Natürlich können Sie diese Methode nur einmal in Ihrem AppDelegate implementieren.

[[FBSDKApplicationDelegate... und [RCTLinkingManager... beide zurück BOOL.

Sie können beide Snippets in derselben Methode einfügen. Ich würde vorschlagen, YES zurückzugeben, wenn sowohl [RCTLinkingManager... als auch [[FBSDKApplicationDelegate...YES zurückgeben. Andernfalls geben Sie NO zurück.

Es könnte wie folgt aussehen:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 

    BOOL handledFB = [[FBSDKApplicationDelegate sharedInstance] application:application 
    openURL:url 
    sourceApplication:sourceApplication 
    annotation:annotation 
    ]; 

    BOOL handledRCT = [RCTLinkingManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; 

    return handledFB || handledRCT; 
} 

Ich kann nicht garantieren, dass Sie FBSDKApplicationDelegate und RCTLinkingManager in der gleichen App verwenden können, weil ich noch nie mit diesem gearbeitet. Aber dein Code sollte zumindest kompilieren.

+1

Gerade lief in das gleiche Problem, und dies funktioniert immer noch von React 16 und reagieren Native 0.49.3 –

+0

Das hat perfekt funktioniert - danke! –

Verwandte Themen