2017-01-29 2 views
0
  1. Мне было предложено показать два Splash Screens при запуске приложения. один для определенной группы клиентов и других для другой группы клиентов . Как я знаю, Apple не позволяет отображать два всплеска экрана , потому что он уже подписан на Bundle. поэтому я решил использовать UIImageView и изменить изображение checking группы.
  2. Для проверки группы я использовал deep links, которые предоставляют Branch.io. когда кто-то пришел из ссылки referral, которую мы создали, она показывает один image, и если кто-то пришел с обычного пути, мы показываем другое image как изображение launch, а не заставку. он работает правильно.
  3. Но при первом запуске он показывает Black Screen в течение пяти-шести секунд (значительное время) и показывает изображение.
  4. Если это не первый раз, он работает должным образом. (Черный экран для 1 до 2 сек.)

Ниже путь, который я использовал, чтобы проверить состояние и показать image в другом viewController.Вид полностью черный в течение нескольких секунд при первом запуске в ios, swift

в AppDelegate, внутри метода didFinishLaunchWithOption Я проверил с branch, как показано ниже.

пусть филиал: Филиал = Branch.getInstance() // branch.setDebug()

branch.initSessionWithLaunchOptions(launchOptions) { (params, error) in 
     if error == nil { 

      let clickedBranchlink : Bool = params["+clicked_branch_link"] as! Bool 
      let isfirstSession : Bool = params["+is_first_session"] as! Bool 


      if clickedBranchlink == true { 
       let theReferrer : String = params["referrer"] as! String 
       if theReferrer == "groupA" { 


       // in here I checked the group and set userdefault values and navigate to the view which the image view has and show the image according to this condition. 
       } 

} 
} 

Примечание: есть способ увеличить процесс этого и уменьшить черный экран. я делаю это внутри основного потока. потому что первый раз он избегает проходить через branch.initSessionWithLaunchOptions, а затем он проходит через него. надеюсь, что это поможет.

+0

Возможно, начните со статического всплеска, а затем смените изображение на изображение целевой группы. – muescha

+0

смотрите здесь - может быть, это помогает? https://www.raywenderlich.com/133224/how-to-create-an-uber-splash-screen – muescha

+0

Является ли эта 5-6-секундная задержка для запуска _every_ когда приложение не работает в фоновом режиме или просто первое после установки приложения? –

ответ

0

Этот initSessionWithLaunchOptions будет вызываться каждый раз при запуске приложения, и приложение не находится в фоновом режиме. Учитывая ваше замечание о том, что проблема возникает только при первом установлении приложения, я подозреваю, что у вас есть код, запущенный в didFinishLaunchingWithOptions до того, как вызывается функция initSessionWithLaunchOptions Branch.

Процесс инициализации отделения включает в себя отправку сетевого запроса, а затем ожидание ответа, так что это всегда будет занимать некоторое время, но не будет никакой разницы во времени, которое требуется на установку и на любые другие открытые. Запустите эту асинхронную инициализацию ветвей как можно быстрее, прежде чем какой-либо другой код в didFinishLaunchtingWithOptions будет выполнен, и вы сможете сократить время до появления всплывающей страницы. Это должно устранить любую изменчивость времени, которое требуется для отображения изображения всплеска, которое, по вашему мнению, может быть связано с Branch.

Смежные вопросы