Ios 异步请求后从AppDelegate更改初始视图控制器

Ios 异步请求后从AppDelegate更改初始视图控制器,ios,swift,storyboard,appdelegate,Ios,Swift,Storyboard,Appdelegate,我想在用户启动应用程序时更改初始视图控制器,但仅在我从服务器获取要显示的视图控制器的信息之后 事情是这样的,有点像这样: func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after

我想在用户启动应用程序时更改初始视图控制器,但仅在我从服务器获取要显示的视图控制器的信息之后

事情是这样的,有点像这样:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    FirebaseManager.getUserProfile() { user in
       if user?.sports.count == 0 {  

       // present View Controller 1   

       } else {

       // present View Controller 2

       }
   }

   return true
}
调用后,我决定显示哪个VC,但问题是
return true
在开始时被同步触发

这会导致不愉快的用户体验,因为它会显示初始情节提要(
Login.storyboard
,如
info.plist
中配置的),并且只有在请求完成后(几秒钟后),才会更改为正确的视图控制器。我希望它直接更改为视图控制器,而不显示任何其他内容(即使它需要用户更多的等待)


我怎样才能避免这种情况?处理这种情况的最佳做法是什么?

我建议使用Firebase远程配置参数。它将您的数据存储在本地。你可以远程管理它


或者预先将值存储在
FirebaseManager.getUserProfile()
UserDefaults
中。

显示启动VC,直到从服务获得响应为止。创建一个以飞溅图像为背景的新VC(这将是您的初始VC),并在viewDidLoad中调用服务方法并相应导航。谢谢。我知道它会起作用,我也会寻找其他解决方案。我可以存储在UserDefaults中,但我必须为每个登录的用户提供一个单独的UserDefault,这看起来不太好。但是谢谢你告诉我Firebase远程配置参数,我不知道。