IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

dclink

Detection des appareils mobiles

Noter ce billet
par , 28/02/2015 à 20h41 (1185 Affichages)
Bonjour tout le monde.

La détection des appareils mobiles se situe principalement autour des en-têtes HTTP comme l'user-agent. De nos jours, adaptez une application web selon la nature du client devient de plus en plus important.
Si vous vous souciez de la différenciation sur vos serveurs du traffic entre clients de type "desktop" et clients de type "mobile", je vais tenter de vous parler des principales solutions du marché que je connais, à savoir :

1/ 51 Degrees

Plusieurs versions pour différents langages de programmations et packaging sont proposés ici. Deux principaux types d'API sont proposés, "trie" et "pattern", le premier étant le plus rapide, le second privilégiant la précision dans la détection. A choisir selon son usage détection en temps réel ou utilisation locale en mode "batch". Pour avoir testé la version pour le langage C, multiplateforme (testé sous différents unixes mais doit marcher aussi bien sous win32), la version "trie" est en effet l'une des plus rapides du marché au prix d'une consommation mémoire plutôt conséquente. La version "pattern" est bien plus économe en terme de consommation mémoire bien que la différence dans la précision se fait bien sentir.

Les différents appels de l'API sont assez simples d'accès :
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Example de l'API C version "trie"
#include <51Degrees.h>
...
DataSetInitStatus status;
int device;
int ismobilepropindex;
char *ismobilevalue;
...
if ((status = init("/tmp/51Degrees-Lite.trie", NULL) == DATA_SET_INIT_STATUS_SUCCESS) {
   if ((device = getDeviceOffset(argv[1])) != -1) {
       ismobilepropindex = getPropertyIndex("IsMobile");
       ismobilevalue = getValue(ismobilepropindex);
       ...
   }
   destroy();
}

2/ DeviceAtlas

Il y a là également plusieurs versions pour différents langages, la version C++ (aussi multiplateforme) a, en plus, un module Apache, Nginx et IIS. Cette fois une seule et unique API unifiée qui allie plutôt bien pure performance et précision dans la détection. La consommation mémoire est plutôt raisonnable.

Les différents appels sont assez facile d'accés là également.

Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <mtld/devatlas.h>
using namespace Mobi::Mtld;
using namespace std;
...
Da::DeviceAtlas atlas;
Da::HeaderMap map;
 
try {
    atlas.loadDataFromFile("/tmp/20150228.json");
    map["user-agent"] = argv[1];
    map["x-device-useragent"] = argv[2];
    ...
    Da::HttpHeaders headers(map);
    Da::DeliveryContext device(atlas, headers);
    for (Da::DeliveryContext::const_iterator it = device.begin(); it != device.end(); ++it) {
        const Da::Property *prop = it->first;
        const Da::Value *val = it->second;
        std::cout << prop->name << "=" << *val << "\n";
    }
    ...
}
} catch (exception &e) {
...
}

Ce sont bien sûr des solutions plutôt adaptées aux entreprises mais la problématique de la détection des divers appareils mobiles (tablettes et maintenant montres "intelligentes" ... etc) devenant de plus en plus complexe mais au vu de la plus grande diversité de ceux ci leur distinction étant plus que jamais nécessaire, une API de détection est un atout majeur.

Envoyer le billet « Detection des appareils mobiles » dans le blog Viadeo Envoyer le billet « Detection des appareils mobiles » dans le blog Twitter Envoyer le billet « Detection des appareils mobiles » dans le blog Google Envoyer le billet « Detection des appareils mobiles » dans le blog Facebook Envoyer le billet « Detection des appareils mobiles » dans le blog Digg Envoyer le billet « Detection des appareils mobiles » dans le blog Delicious Envoyer le billet « Detection des appareils mobiles » dans le blog MySpace Envoyer le billet « Detection des appareils mobiles » dans le blog Yahoo

Mis à jour 24/04/2016 à 20h49 par LittleWhite

Catégories
Développement Web , Programmation , C , C++

Commentaires

  1. Avatar de Pierre Louis Chevalier
    • |
    • permalink
    Merci pour ce tutoriel