Возможно, я неверно истолковал ваш вопрос, но похоже, что вы выполняете какое-то блокирующее действие в своем методе [UIApplication didFinishLaunchingWithOptions:]. Вы должны реструктурировать свой код так, чтобы вы использовали асинхронную стратегию, чтобы вам не нужно было тратить много времени на ожидание внутри метода didFinishLaunchingWithOptions. В любом случае, ничего не будет отображаться до тех пор, пока этот метод не завершит выполнение.
Когда вы говорите, что регистрируетесь для push-уведомлений, возможно, вы могли бы быть более конкретным и опубликовать пример реализации вашего метода? Простой вызов - [UIApplication registerForRemoteNotificationTypes:] не является блокирующим, поэтому он не будет вызывать описанный выше симптом.
Важно выполнять любую обработку, которая может занять время, например синхронный сетевой ввод / вывод, в фоновом потоке, чтобы избежать блокировки основного потока, который заботится о пользовательском интерфейсе.