Partage de connexion et applications ou comment rester ami avec le forfait de votre utilisateur

Avec l’arrivée des forfaits téléphoniques qui acceptent le partage de connexion (ou tethering), plus besoin d’une clé 3G pour brancher votre portable ou tablette. Personnellement, je l’utilise de plus en plus souvent. Lorsque je branche mon PC à mon téléphone, je remarque deux types de comportement :

  • Les applications qui détectent que la connexion est surement limitée en capacité et qu’il vaut mieux ne pas télécharger trop de données. Par exemple, Skydrive envoie un simple avertissement et Outlook propose de synchroniser ou non :

    image

  • Les applications qui continuent à télécharger des données sans ralentir. Cela n’est pas uniquement lié aux PC : j’ai déjà consommé un mois d’abonnement avec juste youtube sur une tablette en deux soirées.

On se retrouve donc à devoir gérer dans nos applications un nouvel état de connexion. Jusqu’à présent, on avait:

  • Soit du réseau et tout allait bien,
  • Soit aucun réseau. Le plus souvent l’application nous l’indique de façon très courtoise avec une SocketException.

Maintenant nous avons en plus une connexion du type “elle est active, mais n’abuse pas”. Alors que faire ? Dans un premier temps, il est important de savoir que nous sommes dans ce cas. Windows 8 contient, dans la partie Windows Store App, une classe NetwortInformation qui nous permet de connaître ce statut. Elle se trouve dans un des nouveaux namespaces WinRT: Windows.Networking.Connectivity (à ne pas confondre avec NetworkInformation dans System.Net du framework classique).

Ce qui est intéressant avec cette classe est qu’elle est supportée dans les OS récents et même dans les versions desktops des applications :

image

Pour pouvoir y accéder depuis les applications “desktops” il faut, par contre, une petite manipulation qui est très bien décrite sur le blog de Scott Hanselman.

Une fois cela fait, nous pouvons récupérer l’information sur le coût de la connexion courante :

var profile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();                    
var cost = profile.GetConnectionCost();
var costType = cost.NetworkCostType;

Cette énumération prend les valeurs suivantes :

  • Unknown : Windows ne reconnait pas le type de connexion,
  • Unrestricted : c’est “open bar”, vous pouvez utiliser le réseau comme bon vous semble,
  • Fixed : la connexion a une limite d’utilisation,
  • Variable : la facture dépend de l’utilisation de la bande passante.

Nous avons aussi la possibilité de savoir où nous en sommes de notre consommation mais ce n’est pas toujours possible. Par exemple, lorsque les détails de connexion sont sur le téléphone :

wp_ss_20130924_0001

Personnellement je ne ferais pas de différence entre Fixed/Variable/Unknown. Dans ces cas, j’utiliserais la tactique d’Outlook: l’opt-in. L’utilisateur connait mieux que moi sa connexion à internet, je le laisse donc faire le choix de connecter ou non l’application. Il est aussi possible de ne connecter l’application qu’en mode dégradé en diminuant les données qui peuvent être échangées, soit en espaçant les connexions, soit en limitant la qualité des données (images/video), mais dans ce dernier cas il faudra bien entendu envoyer les données dans la qualité optimale dès que la connexion sera de nouveau sans limitation.

Un autre facteur de décision est l’autonomie : doit-on envoyer des données au risque de vider la batterie même si la connexion le permet ? Bref, la stratégie de connexion n’est pas un sujet à prendre à la légère et doit être étudiée très attentivement à partir des cas d’utilisation de l’application.

@+

Pas de commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *