Me gustaría que mi aplicación pueda, por ejemplo, cada 12 horas, incluso si la aplicación no se está ejecutando o está en segundo plano, envíe una solicitud HTTP a un servidor, obtenga una pequeña archivo con un número de versión y si la versión en el servidor es más alta que la versión en el cliente, luego descargue algunos más archivos en el disco para que la próxima vez que se inicie la aplicación encontrará contenido nuevo en el disco.iOS procesado en segundo plano
¿Qué patrones de diseño son los más adecuados para tal tarea en iOS?
Algunos vienen a mi mente pero no tengo tanta experiencia.
- Quizás las notificaciones push, el servidor debe enviar un mensaje a todos los clientes cuando hay una nueva versión disponible.
- O, ¿Hay algo similar a Service de Android que puede ayudar?
- O, tal vez, cada vez que se inicia la aplicación (o va al primer plano) simplemente haga ping al servidor y vea si hay algo nuevo.
- O, cada vez que la aplicación comienza a hacer ping al servidor y agrega un temporizador para las próximas 12 h en caso de que esta aplicación aún esté en primer plano.
- O, cada vez que se inicia la aplicación, compruebe un valor de preferencia y si la última vez que se hizo ping al servidor fue hace más de 12 horas, haga ping ahora. Y luego guarde este tiempo de ping.
La opción 1 puede ser más pesada en el servidor y podría ser más complicada de implementar (considere un ios nuevo) pero puede ser la única opción para la actualización de fondo real. Pero aun así, todavía no quiero que el usuario tenga que reaccionar ante un cliente b/wa de actualización de bajo nivel y un servidor (y eso es lo que es), a menos que las notificaciones push puedan ir directamente a la aplicación y ejecutarse algo sin la intervención del usuario, entonces esta opción no vuela.
Las opciones 3-5 son todas posibles y no suenan demasiado pero solo funcionarían si la aplicación está en primer plano.
Por lo que sé, las aplicaciones en segundo plano solo pueden reproducir música, obtener actualizaciones de ubicación o actualizaciones de VoIP. Incluso hay this hack con el sonido silencioso que intentaba escapar de esta limitación. (y no fue aprobado para la tienda).
Tal vez las limitaciones son buenas, por lo tanto, ¿cómo puedo cumplir las reglas y lograr un ping de servidor periódico (o más generalmente resolver el problema de los clientes y servidores de sincronización periódica b/n incluso cuando las aplicaciones están en bg)?
Gracias
Yo sugeriría 4 o 5. Una aplicación puede hacer lo que quiera en el fondo, pero sólo durante 10 minutos. Las notificaciones push solo pueden ejecutar código si muestran un mensaje y el usuario elige abrirlas. – ughoavgfhw