如何延迟启动画面的消失,并在iOS目标C中在后台并行运行web服务?

问题描述:

我已经在我的应用程序中集成了branch.io(https://branch.io/)用于深度链接。 这里,我在分支处理程序中得到的响应稍微有些延迟。一旦我得到响应,我会做一些其他处理,然后决定是否导航到第一个屏幕或第二个屏幕。如何延迟启动画面的消失,并在iOS目标C中在后台并行运行web服务?

问题是甚至在获取分支响应之前,显示第一个屏幕。我想延迟一段时间的闪屏(这不像大多数人说的那样好,但我没有任何选择)。我提到了各种链接,How can I display a splash screen for longer on an iPhone?他们建议添加一个splash视图。但是这不起作用。我不知道是什么原因。我也用[NSThread sleepForTimeInterval:6.0]; 但是,这阻止了主线程。我也使用GCD,这没有帮助。

在didFinishLaunchingWithOptions,这是我的编码,

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, NULL), ^{ 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      //get branch response 
     }); 

    }); 

但第一屏正从branch.io响应之前出现。请帮助....这是我的应用程序的主要问题,没有它我不能测试任何东西..请帮助我...让我知道如果我没有让自己清楚..

为什么不创建屏幕之间的启动画面和主屏幕,这将加载所需的数据,当它完成后,它将被重定向到主屏幕。它会说等待数据加载并可能显示一些进度指示器。我认为这是最好的解决方案。

您可以在didFinishLaunchingWithOptions的主线程中运行webservice。启动画面将一直存在,直到服务完成。之后,你可以选择屏幕将被推送到。

记住处理API失败的情况。

+0

亚历克斯从Branch.io在这里:这应该工作。值得一提的是,API调用实际上是通过我们的SDK来处理的,它确保在任何情况下都会返回一个值(即使网络出现故障,或者API回调失败)。 –

+0

行,明白!等到获取Web服务的完成块后,调用'[self.window makeKeyAndVisible]' – Proton