Au milieu des multiples changements introduits dans iOS 7, il y en a au moins un auquel personne ne s’attendait et auquel finalement bien peu de gens prêtent vraiment attention, et pourtant il s’agit d’une nouveauté majeure: il s’agit du nouveau système multitâche de l’OS.

© DR

Bien entendu, le gestionnaire de tâche a subit un très sérieux “relifting”, mais cela va bien au delà de ca. Les développeurs ont en effet reçus de nouveaux outils permettant gérer le multitâche dans iOS. Pour bien vous en faire comprendre la mesure, commençons par un petit peu d’histoire:

iOS: le multitâche depuis iOS 2 jusqu’à iOS 6

Il est d’abord important de souligner que l’iPhone ayant toujours été un mini-ordinateur, ce dernier a toujours supporté le multitâche. Mais jusqu’à l’iOS 4, Apple s’est toujours gardé la possibilité de gérer le système eux-même. Pourquoi? Eh bien les raisons sont simples: pour un appareil ayant la taille et la batterie d’un Smartphone, il est très important que la puissance et l’autonomie soient conservés. Qu’auriez-vous pensé si après avoir lancé 6 applications, votre iPhone se soit soudainement mis à ramer de manière significative ou si la batterie s’était vidé en 2 temps 3 mouvements parce qu’une application a décidé de tourner inutilement en tâche de fond ?

Lors de l’introduction de iOS 4, ils ont donc ouvert le multitâche aux développeurs. Mais très timidement. Voici les possibilités qui ont été offertes “à l’époque” et qui sont encore d’actualités dans iOS 6:

– VOIP, Audio et navigation: Ce sont les 3 types d’applications ayant eu la possibilité de pouvoir fonctionner sans restriction ou presque (Apple ayant jugé que ce sont les trois principales dont le fonctionnement ne pouvait être interrompu en pleine utilisation)
– Pour les autres types d’applications: Apple laisse aux applications une poignée de seconde lorsque l’utilisateur ferme son application pour terminer les tâches qu’il est en train de faire et ensuite sauvegarder son état. L’idée ? Mettre l’application sur “pause” afin que l’utilisateur puisse reprendre l’activité à tout moment plus tard, retrouvant son application dans l’état dans laquelle il l’a laissée, lui donnant ainsi l’illusion qu’elle n’a pas cessé de fonctionner entre temps alors que c’est le cas.

Alors la grande question: Est-ce que Apple a ouvert grand les portes de sa bergerie et permet aux développeurs de faire n’importe quoi au détriment de la batterie ou de la puissance ? La réponse est évidement non. Ils gardent la main mise sur leur système. Oui de nouvelles applications seront autorisés à tourner en tâche de fond mais non elles ne pourront pas faire n’importe quoi. Voici les nouvelles possibilités offertes aux développeurs:

“Background Fetch”

Le principe de cette nouvelle option est de permettre au développeur de mettre à jour son application… Lorsque l’iPhone le décide. Voici un exemple de cas typique:
Imaginons que je suis développeur d’un grand réseau social très connu. Pour le moment, lorsque je veux que les mises à jour se chargent sur l’iPhone de mon utilisateur, il faut que ce dernier ouvre l’application et fasse un “refresh”.

Dans iOS 7, les choses changent. Le développeur a la possibilité de demander à ce que son application se rafraîchisse plus souvent. La seule option qu’il a pour cette possibilité est le temps minimum qu’il faut attendre avant de tenter un rafraichissement. Si j’ai par exemple une application qui charge des vidéos publiées quotidiennement, je sais qu’il est inutile qu’elle se rafraichisse toutes les 15 minutes. Je peux donc dire “attends un jour avant de te rafraîchir”. Si on n’a pas de préférence (par exemple pour mon application de réseau social citée précédemment), on peux simplement lui signifier et Apple décide de ce délai pour vous.

Évidement, en mettant 15 minutes en temps minimum, l’application ne se mettra pas automatiquement à jour toutes les 15 minutes. Cela veux simplement dire que dans le délai de 15 minutes, Apple ne tentera pas de mettre à jour votre application. Après ce délai, elle peux décider à tout moment de le faire. Cette décision sera prise en fonction des habitudes de l’utilisateur: si iOS détecte qu’il ouvre tous les jours mon application de réseau social à 10h, à 15h et à 20h, elle saura quand il est plus intéressant de se mettre à jour en conséquence.

“Remote Push Notification Service”

La seconde possibilité offerte au développeur est le “Remote Push”. De quoi s’agit-il ? Eh bien c’est le même système que les notifications Push arrivant sur vos iPhone gérés par Apple MAIS ces dernières seront désormais silencieuses. l’idée est que ces notifications viennent réveiller une application afin de charger ses données. Prenons l’exemple d’une application d’un site d’actualité. Sous iOS 6, voici comment une notification Push se déroule:

– La notification est envoyée depuis les serveurs d’Apple sur votre iPhone
– La notification s’affiche sur votre iPhone
– Vous ouvrez votre application
– Les nouvelles données sont chargées afin de vous montrer l’article du site d’actualité

Sous iOS 7, voici ce qu’il sera possible de faire:

– La notification est envoyée depuis les serveurs d’Apple sur votre iPhone.
– Les nouvelles données sont chargées de manière silencieuses sur votre iPhone.
– La notification s’affiche sur votre iPhone.
– Vous ouvrez votre application => vous avez directement accès à l’application avec le nouvel article déjà pré-chargé.

Ce n’est qu’un exemple, car ce système peut s’utiliser de beaucoup d’autre manière comme par exemple le téléchargement de nouveaux podcast ou de photos. Une notification peut même être totalement invisible et fonctionner sans même que vous ne vous en aperceviez (le téléchargement d’un nouvel épisode de Podcast ne nécessite par exemple pas forcément votre intervention).

Mais aussi des restrictions…

Évidement, une application ne peut pas faire n’importe quoi. Et l’une des restrictions imposées sur le fonctionnement en tâche de fond de ces applications est le temps. Un timer démarre en effet à chaque lancement en tâche de fond. Une application n’a que peu de temps pour mettre à jour ses données et si elle n’y arrive pas, sa mise à jour sera tout simplement interrompue.

Mais que se passera-il du coup si j’ai une application ayant besoin de télécharger des données conséquentes ? Comme par exemple des vidéos ou des podcasts ? Eh bien c’est là que nous en arrivons à la 3ème nouvelle option d’iOS 7:

“Multimedia download Background”

Le nom de cette nouvelle option veux tout dire: si vous voulez faire transférer de plus grosses données à iOS 7, vous mettez ces données (vidéos / photos) dans une sorte de file d’attente. Et c’est l’OS qui déterminera par lui même quel sera le meilleur moment pour télécharger ces données. Ce moment sera surtout déterminé par la qualité du réseau (Wifi ? 4G ? 3G? Edge?) et la puissance de la batterie (par exemple si votre batterie en est à 5% et que vous êtes en Edge dans une zone peu couverte mais qu’une application de Podcasting demande à télécharger un film, iOS attendra très probablement de meilleures conditions avant de le télécharger).

L’utilisateur garde toujours la main

Pour conclure, il est important de souligner que dans les réglages de iOS 7, vous gardez la main mise sur les applications étant autorisées à tourner en tâche de fond, mais aussi sur celles étant autorisées à accéder au réseau cellulaire. Vous évitez ainsi toute mauvaise surprise. Enfin, toutes les applications ont besoin d’être adaptées. Une application sous iOS 6 ne fonctionnera pas dans le nouveau système de tâche de fond de iOS 7 sans une intervention du développeur. Cette manipulation est cependant très simple et pourra se faire en l’ajout de 3 lignes de codes pour la plupart des applications.

Réagissez sur le forum.