Automatische Geräteerkennung
Ich wurde schon häufiger gefragt, wie ich es hinbekomme, daß meine Webapplikationen (zumindest zzap und fastfiction) zwischen normalem Browser und Handy unterscheiden können und unterschiedliche, angepasste Inhalte ausliefern. Die Antwort lautet: mittels automatischer Geräteerkennung.
Leider gibt es nicht die eine Methode, mit der man ganz einfach abfragen kann, welche Eigenschaften das Gerät hat, sondern man muß sich einer Kombination unterschiedlicher Methoden bedienen. Die Methode, die ich für meine Projekte benutze ist mehrstufig.
Bei der Konzeption definiere ich zunächst die grundlegenden Geräteklassen, die unterstützt werden sollen. Jede dieser Geräteklassen wird später mit speziell angepasstem Content beliefert. Typische Vertreter sind ‘web’ (also normale Webseiten auf einem Computer), ‘wap1’ (Alte WAP-Telefone, WML-basiert. Mittlerweile zu vernachlässigen), ‘wap2’ (XHTML-basiert, farbig, von nahezu allen Handies der letzten 2 Jahre unterstützt) ‘imode’ (In Deutschland nicht sehr populär) und ‘pda’ (Windows mobile, Palm, evtl. Symbian). In der Regel konzipiere ich nur noch für zwei Klassen, nämlich ‘web’ und ‘wap2’.
Exkurs: Warum überhaupt noch für WAP entwickeln?
Ich höre immer häufiger, daß WAP tot sei, weil die tollen neuen Handies doch alle schon “richtige” Browser an Bord haben. Das mag für einige hochwertige Geräte stimmen, z.B. für mein Nokia E61, aber erstens sind diese Geräte noch nicht so zahlreich, zweitens fehlen noch immer wichtige Features, wie z.B. Flash-Unterstützung (z.B. für Videos), drittens ist selbst UMTS für “fette” HTML-Seiten zu langsam und viertens sind die Ein- und Ausgabemöglichkeiten prinzipbedingt extrem eingeschränkt.
Der wichtigste Punkt ist allerdings, daß normale Internetseiten einfach nicht den Anforderungen für eine mobile Anwendung entsprechen. Sie müssen schnell, übersichtlich und einfach sein, und den mobilen Nutzungskontext berücksichtigen (kurze Aufmerksamkeit, Ablenkung, etc.). Daher müssen mobile Web/Wapseiten auf das Wesentliche reduziert sein: Simple Navigationsstruktur, Content auf das Notwendigste reduziert, minimale Eingaben.
Wenn aber ohnehin schon die ganze Sitestruktur für mobile Nutzung angepasst werden muss, kann man die Inhalte auch gleich so ausliefern, daß sie auf mindestens 98% aller Mobiletelefone funktionieren.
Meine Strategie der Geräteerkennung zielt nun darauf ab, in der ersten Phase die Geräteklasse zu ermitteln und danach zu versuchen, die Daten für eine verfeinerte Anpassung zu ermitteln. Es ist stets eine Kombination von Grundannahmen und dem Versuch anschließend genaueres zu ermitteln. Die erste Grundannahme ist, daß der Client ein normaler Webbrowser ist. Dann wird im Useragent-String nach Hinweisen darauf gesucht, daß es sich um ein Mobiltelefon oder PDA handelt. Wie man das schnell und sauber hinbekommen kann, zeigt Andy Moore in dem Artikel “PHP to detect mobile phones“.
Falls ein Mobile-Client erkannt wurde, wird abschließend versucht, Details, wie Screengröße und unterstützte Medienformate zu ermitteln. Diese Ermittlung kann recht aufwändig sein und sollte nur einmal zu Beginn einer Session gemacht werden.
Wenn man dann weiß, was für ein Gerät man vor sich hat, kann man endlich mit der Erzeugung und Auslieferung des spezifischen Contents beginnen.
Weiterführende Links:
- Eine Einführung in das Thema gibt Martin Kindler in dem Artikel Entwicklung mobiler Web-Anwendungen – HTTP-Header, UAProf und WURFL.
- Zur Vertiefung empfehle ich anschließend den Artikel Tutorial about Detecting User Agent Types and Client Device Capabilities empfohlen.
- Einen umfassenden Einblick gewährt auch Luca Passanis Artikel “Global Authoring Practices for the Mobile Web“.