2017-10-29 1 views
0

Ich versuche, genau herauszufinden, was dieser Code von der Branch.io DokumentationMit Branch.io zusammen mit Facebook SDK

bedeutet
// Add the openURL and continueUserActivity functions 
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { 
    if (![RNBranch.branch application:app openURL:url options:options]) { 
     // do other deep link routing for the Facebook SDK, Pinterest SDK, etc 
    } 
    return YES; 
} 

Was ist die beste Art und Weise schon, wenn ich die FBSDK muss hinzufügen, in ist und handle ich das mit der Rückgabe boolean bearbeitet?

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
      options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { 

    BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application 
                   openURL:url 
                 sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] 
                  annotation:options[UIApplicationOpenURLOptionsAnnotationKey] 
        ]; 

    if (![RNBranch.branch application:application openURL:url options:options]) { 
    // do other deep link routing for the Facebook SDK, Pinterest SDK, etc 
    } 
    return YES; 
} 

Im Wesentlichen ist meine Frage, was ist der richtige Ansatz, hier als Rückkehr behandelt und warum return YES nach den if (![RNBranch... verwendet wird, und ist sie nötig? Was sollte ich im Hinterkopf behalten? Ich bin schon zurück BOOL handled?

Antwort

0

Ich denke, Sie sollten zuerst versuchen, das Branch-Routing, dann, wenn es fehlgeschlagen ist, versuchen Sie Facebook.

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
      options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *) { 

    // first try to open the deep link in our app 
    if (![RNBranch.branch application:application openURL:url options:options]) { 
    // failed — this is probably a deep link for some other application. Let’s try Facebook. 
    return [[FBSDKApplicationDelegate sharedInstance] application:application 
                   openURL:url 
                 sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]]; 
                  annotation:options[UIApplicationOpenURLOptionsAnnotationKey] 
    } 
    // succeeded, since Branch handled the deep link for us, returning YES. 
    return YES; 
} 

Wenn Sie Handler neben Facebook hinzufügen möchten, tun Sie es in der if.

+0

Danke, sieht gut aus - ich bin mir nicht sicher, genau das gebe ich zu. Die Anwendung kann mittels Verzweigung geöffnet werden, und FBSDKApplicationDelegate wird nur für die Facebook-Analyse verwendet, wie es scheint, da ein tatsächlicher Login mit Facebook nicht mehr verwendet wird. Ich nehme an, dass ich Ereignisse ohne die Facebook Login Seite der Dinge protokollieren möchte. In diesem Sinne, wenn ich immer noch Facebook Analytics verwenden will, dh für aktive Benutzer und was nicht, ist das ... 'return [[FBSDKApplicationDelegate 'Code benötigt? https://developers.facebook.com/docs/analytics/ –

2

Amruta von Ast hier:

Sie sollten den Zweig SDK openURL Anruf vor jedem anderen SDK Anruf in Ihrem openURL-Methode aufrufen, um sicherzustellen, dass der Klick nicht von einer anderen Anwendung verbraucht wird. Wenn Branch den Klick nicht verarbeiten kann, können Sie den Aufruf von Facebook SDK ausprobieren.

Im Hinblick auf den Rückgabewert für die openURL Methode, obwohl iOS Dokumentation besagt, dass openURL Yes zurückkehren soll, wenn der Klick No (documentation ref) während unserer Tests Zweig einen Fehler auf dem Apple-Ende sollte erfolgreich anders gehandhabt wird zurückkehren gefunden. Wenn openURL false/No zurückgibt, reagiert die Anwendung nicht mehr auf zukünftige Klicks. Daher empfehlen wir, immer true/Yes von der openURL-Methode zurückzugeben.