ios ios8 ipa openurl

ios 8 openUrl itms-services no sale de la aplicación actual



ios8 ipa (3)

En iOS 6 o 7, la aplicación sale a la pantalla de inicio cuando llamo a UIApplication openUrl con una url de itms-services://XXXX para instalar una nueva versión de la aplicación (usando la implementación empresarial con archivos ipa).

En iOS 8, este ya no es el caso. Ahora la aplicación continúa ejecutándose tal como no ha pasado nada, pero si aparece la pantalla de inicio, puedo ver el icono de mi aplicación en gris, con un gráfico circular de descargas completado en un 66% y el texto "Downloading..." continuación. Si ahora espero un rato (menos de un minuto), la aplicación se instala correctamente y puedo volver a iniciarla.

¿Alguien más ha experimentado este comportamiento? ¿Alguien ha visto alguna documentación al respecto? Puedo aceptar cambios de comportamiento siempre y cuando estén documentados, pero no he visto ninguna documentación al respecto.


He experimentado algo similar. Tengo una página web para nuestra tienda de aplicaciones interna y cuando hago clic en el enlace me aparece un mensaje preguntándome si quiero instalar y cuando digo que sí, safari solo se queda ahí. La aplicación se está descargando en la pantalla de inicio, pero bajo IOS 7, el safari se colocará en segundo plano y podrá ver dónde se está descargando su aplicación y su progreso. Ahora parece que nada está sucediendo. Me encantaría corregir esto. Quizás algo haya cambiado en los archivos .plist que usa el protocolo itms-services. Este protocolo no es privado, solo está reservado para implementaciones empresariales.


Sí, también obtienes el mismo comportamiento al hacer clic en un enlace de descarga en safari ahora en iOS8.

No estoy seguro de por qué introdujeron este cambio, pero realmente no hay una forma de evitarlo (a menos que fuerce su aplicación para bloquearse con algo como exit(0); )

Además, el esquema de url de itms-services no está documentado y es técnicamente una API privada. Por experiencia, no está permitido enviar aplicaciones a la App Store que lo utilizan.


Si bien forzar la aplicación de la aplicación funcionará técnicamente, una solución mucho mejor (que le permita al usuario conservar el estado de la aplicación) sería simplemente crear un fondo de la aplicación que inicie el enlace itms-services ejecutando lo siguiente.

[[UIApplication sharedApplication] performSelector:@selector(suspend)];

Usamos esto en una aplicación utilizada para distribuir compilaciones de prueba a nuestros evaluadores y funciona muy bien, y elimina la confusión de un probador que intenta instalar una aplicación y que la aplicación se mantenga al frente. También les permite regresar a nuestra aplicación de distribución y hacer que la retire donde estaban.