branch.io绕过app登录界面,如何在url处理之前处理延迟

时间:2016-04-08 13:23:36

标签: ios sdk branch.io

我在ios App中使用branch.io SDK。我们使用它作为一种方式来邀请用户访问我们的应用程序,并在存在分支链接时将其重定向到自定义的登录屏幕。我们注意到的一件事是,应用程序打开和分支处理程序被调用之间存在轻微延迟。

这意味着我的应用加载了它常用的开始屏幕,然后可能会运行半分钟的代码,我的应用会重定向到正确的视图。我看到LaunchScreen,我的登录屏幕半秒,然后是我的branch.io处理程序视图。这一切都是正确的,但我想知道如何更好地构建这个以便没有初始登录屏幕视图?

也有可能与分支区块和普通应用程序的启动块发生竞争 - 两者都是异步的。现在,分支块总是需要更长的时间,所以没什么大不了的。

我有一些想法:

1)创建一个类似于应用程序登陆的LaunchScreen的初始视图,直到branch.io返回,人为地扩展启动画面而不是显示登录屏幕。这里的问题是,这也需要Branch.io来触发nonbranch.io延续,并且意味着所有条目都有半秒延迟。不好。如果我还需要网络电话,延迟可能会更长,锭床工人也不会帮助这个过程。

2)在branch.io处理程序中嵌入AuthManager登录状态代码,以便正常的应用程序进程以串行方式运行到分支;而不是两个都运行异步。再次,这会产生必须处理的延迟,否则只有半秒的白屏。它还将我的整个应用程序的加载成功与branch.io的SDK按预期工作,而不是我更喜欢依赖任何SDK。

有没有更好的方法来构建这个工作流程?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   //...

   // initialize branch.io
   Branch *branch = [Branch getInstance];
   [branch initSessionWithLaunchOptions:launchOptions andRegisterDeepLinkHandler:^(NSDictionary *params, NSError *error) {
      // do stuff with branch, such as redirect to a custom View.
      // run every load and handled if branch.io link present     

      // possible network call(s) involved if branch link present.     
   }];

   // ...

   [[AuthManager sharedInstance] isLoggedInCompletionHandler:^{
      // load HomeViewController (logged in)
   } notLoggedInCompletionHandler:^{
      // load LoginViewController (not logged in)
   }];
}

1 个答案:

答案 0 :(得分:0)

Alex与Branch.io在这里:

这种轻微延迟是等待来自服务器回调的数据的不可避免的限制。 Branch尽一切可能尽可能地缩短等待时间,在尝试解决这种情况时,我们的合作伙伴经常采取类似于您的第二个想法的方法。

分支回调可以保证100%的时间触发(即使网络已经关闭),因此最好的选择是构建一个基本上保持所有路由的闪屏,直到回调到来。如果Branch没有提供任何内容,您可以定期路由。如果Branch提供了某些内容,您可以路由到深层链接的内容。