Instapaper Creator propose une solution élégante pour la mise à jour de l'application en arrière-plan

Apple a fait un travail habile en atténuant les inconvénients du véritable multitâche avec iOS 4 en donnant aux développeurs l'accès à quelques API intelligemment choisies (comme l'audio en arrière-plan) et à la sauvegarde de l'état universel.

Cela suffira à la plupart des gens et à la plupart des applications sans épuiser considérablement la durée de vie de la batterie ou la puissance de traitement, mais malheureusement, les nouvelles API iOS 4 ne faites rien pour remédier à l'un des plus grands avantages du multitâche: les applications d'arrière-plan qui peuvent mettre à jour ou synchroniser les informations lorsqu'elles n'en ont pas se concentrer. En d'autres termes, lorsque iOS 4 arrivera, les applications telles que les lecteurs de flux, les clients Twitter et les programmes de messagerie instantanée devront toujours être ouvertes en permanence afin d'aspirer de nouvelles informations provenant d'Internet.

Sur son blog personnel, Marco Arment - développeur de l'Instapaper préféré de l'App Store - a posté

une excellente proposition à Apple sur la façon de permettre aux applications de se mettre à jour efficacement en arrière-plan: donnez à iOS la possibilité de hiérarchiser les demandes périodiques de réseau d'applications tierces.

L'ajout d'un service multitâche supplémentaire résoudrait ce problème pour de nombreux types d'applications: une requête réseau périodique. Voici comment je ferais :

• L'application donne au système une NSURLRequest et un intervalle de rafraîchissement idéal, par exemple toutes les 30 minutes, toutes les quelques heures ou tous les jours.

• iOS exécute cette demande, chaque fois qu'il le juge nécessaire, et enregistre la réponse dans un fichier local.

• Au prochain lancement de l'application, iOS lui remet un NSData de la réponse la plus récente.

Exécuter la demande « chaque fois qu'il le juge nécessaire » est important. iOS peut décider, par exemple :

• Ne pas mettre à jour lorsque la batterie est faible, la connectivité est mauvaise, d'autres requêtes sont en cours d'exécution, la mémoire libre est faible, l'utilisation du processeur est élevée ou l'utilisateur devrait dépasser sa limite de données mensuelle.

• Ne pas mettre à jour aussi fréquemment que l'application le demande, ou augmenter l'intervalle au fil du temps, ou ajuster dynamiquement l'intervalle en fonction de la fréquence à laquelle il reçoit une réponse 304 (Non modifié).

• Ne pas mettre à jour du tout si l'application demandeuse n'a pas été lancée depuis longtemps.

Cela permettrait à Instapaper de télécharger des mises à jour en arrière-plan, et profiterait également grandement aux lecteurs RSS, aux clients Twitter, au chat programmes, widgets météo et d'actualités, et un grand nombre d'autres applications qui ne peuvent actuellement pas tirer beaucoup d'avantages d'iOS ' multitâche.

Je ne suis certainement pas un architecte système, mais cela me semble être une solution efficace. En fait, c'est une solution tellement compréhensible et évidente que l'idée d'attendre la mise à jour iOS 5 pour une telle fonctionnalité me donne un petit cas des secousses… bien que cela pourrait être le Talisker de la nuit dernière parlant.

Dernier article de blog

Les pompiers chinois utilisent un iPhone pour sauver un enfant de deux ans du puits
September 11, 2021

Les pompiers chinois utilisent un iPhone pour sauver un enfant de deux ans du puitsLes pompiers de la province chinoise du Yunnan ont sauvé un enfa...

Le « bug » a-t-il rendu homophobe le Russe Siri ?
September 11, 2021

La version russe d'Apple de Siri a été lancée plus tôt ce mois-ci, et bien que la présence de l'assistant virtuel en Russie soit certainement la bi...

| Culte de Mac
September 11, 2021

Les Beatles ont leur propre chaîne sur Apple TVPour célébrer les 50 ans de l'apparition des Fab Four dans le Ed Sullivan Show, l'Apple TV a été tra...