只有在用户login后才能redirectBranch.io

点击邀请链接后,我正在使用分支将用户redirect到我的应用程序的特定视图。 它的工作原理除了我需要他们只在他们login后redirect,而不是像现在这样。 从我可以告诉没有方法在我的初始视图控制器被调用后点击一个分支链接,所有的设置必须在AppDelegate上完成。 以下是我的AppDelegate中的一些相关代码:

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)") } }) } }) ... 

redirect到DetailViewController就像它应该但我需要它redirect只有他们login后。 提前感谢您的帮助。

亚历克斯从分支在这里:这是完全有可能的。 您目前正在使用我们的自动路由实现 ,这简化了一些事情,但没有足够的细节来处理这个用例。 相反,您需要构build自定义链接路由方法来存储链接数据,直到login过程完成。

编辑:通用实现:

 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