Teníamos una aplicación en producción que reportaba un tiempo muy alto para interactuar (tti) para ios 15 precalentado.
TTI = tiempo cuando se carga ViewController - mainStartTime
El tiempo de inicio principal se mide dentro del método willFinishLaunchingWithOptions de AppDelegate.swift de esta manera
mainStartTime = Date()y cuando se carga el primer controlador de vista, medimos tti como
tti = -(mainStartTime.timeIntervalSinceNow)Observamos que para escenarios precalentados, mainStartTime llegaba muy temprano (aproximadamente 2 horas antes de que el usuario incluso iniciara la aplicación).
Revisé en línea pero no encontré documentación. Solo quería saber si es posible que el precalentamiento esté llamando al método willFinishLaunchingWithOptions mientras se precalienta la aplicación.
La documentación de Apple es incorrecta, aquí está el comportamiento observado en iOS 15:
UIApplicationMain() siempre se ejecuta, incluso durante el precalentamiento.
Lo que suceda después de esto depende de si su aplicación usa el ciclo de vida de UIScene .
Para aplicaciones que admiten escenas:
application:didFinishLaunchingWithOptions: se puede llamar (no siempre sucede)scene:willConnectToSession:options: no se llama; de hecho, el SceneDelegate no se crea hasta que se abre la aplicación.Para aplicaciones que no admiten escenas:
application:didFinishLaunchingWithOptions: no se llama.