2016-11-23 3 views
1

Ich benutze Zweig, um den Benutzer zu einer bestimmten Ansicht meiner App umleiten nach dem Klicken auf einen Einladungslink. Es funktioniert, außer dass ich sie erst NACH dem Anmelden umleiten muss, nicht vorher wie ich es jetzt getan habe. Von was ich sagen kann, keine Methoden auf meiner ersten Ansicht Controller wird nach dem Klicken auf einen Zweig Link aufgerufen und das ganze Setup muss auf AppDelegate erfolgen. Hier ist ein Teil des entsprechenden Code auf meinem AppDelegate:Branch.io Redirect nur nach Benutzeranmeldung

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    Branch.getInstance().initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: { params, error in 
     guard error == nil else { return } 
     guard let userDidClick = params["+clicked_branch_link"] as? Bool else { return } 
     if userDidClick { 
      let branch = Branch.getInstance() 
      branch?.initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: { params, error in 
       if error == nil { 
        var controller = UIStoryboard.init(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "DetailViewController") 

        branch?.registerDeepLinkController(controller, forKey: "valid_link") 
        branch?.initSession(launchOptions: launchOptions, automaticallyDisplayDeepLinkController: true) 

        print("prm: \(params)") 
       } 
      })  } 
    }) 
... 

, die auf DetailViewController Umleitungen wie es angenommen hat, aber ich brauche es nur zu umleiten NACHDEM sie anmelden. Danke für jede Hilfe im Voraus.

Antwort

1

Alex von Branch hier: das ist absolut möglich. Sie verwenden derzeit unsere automatic routing implementation, die Dinge vereinfacht, aber nicht nuanciert genug ist, um diesen Anwendungsfall zu behandeln. Stattdessen sollten Sie eine custom link routing method erstellen, um Ihre Verknüpfungsdaten zu speichern, bis der Anmeldevorgang abgeschlossen ist.

Edit: generische Implementierung:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    let branch: Branch = Branch.getInstance() 
     branch.initSession(launchOptions: launchOptions, andRegisterDeepLinkHandler: {params, error in 

     // If the key 'valid_link' is present in the deep link dictionary 
     if error == nil && params["+clicked_branch_link"] != nil && params["valid_link"] != nil { 

      // assign valid_link to a variable 

     } 
    return true 
} 

// perform your login process, and pass the valid_link variable through to the post-login viewcontroller for display 
+0

können Sie bitte Ihre Antwort mit jeder Probe oder Erklärung auszuarbeiten. –

+0

Ohne vollständige Details des Authentifizierungsprozesses des OP, nein. Sehen Sie die aktualisierte Antwort für einen generischen Ansatz –

+0

Danke für die Hilfe bis jetzt, können Sie mir bitte in Code für ViewController auch Post-Login helfen, was dort zu tun ist. –