Show TOC Anfang des Inhaltsbereichs

Prozessdokumentation Geräteerkennungsprozeß  Dokument im Navigationsbaum lokalisieren

Verwendung

Die Geräteerkennung ermittelt aus der HTTP-Anfrage den Gerätetyp und weist dabei die Werte, die diesem Gerätetyp zugeordnet sind, einer Instanz der Implementierung des Interfaces IF_CLIENT_INFO zu.

Funktionsumfang

Identifizierung eines mobilen Endgerätes

Der Prozeß der Geräteerkennung  basiert auf  den HTTP-Request-Headern „Accept“ und „User-Agent“, die im HTTP-Request vom anfragenden Gerät mitgegeben werden und resultiert in der Bildung einer Instanz der Implementierung des Interfaces IF_CLIENT_INFO.

Der Mechanismus der Geräteerkennung vergleicht die im HTTP-Request-Header „User-Agent“ mitgelieferte Zeichenfolge z. B. Nokia7110/1.0 (04.84), eine notwendige Information zur Identifikation des Endgerätes, mit den Werten in der Konfigurationstabelle MOB_DEVCFG.

Falls die entsprechende Zeichenfolge in der Konfigurationstabelle MOB_DEVCFG gefunden wird, dann wird eine Instanz der Implentierung des Interfaces IF_CLIENT_INFO mit den Werten für dieses anfragende Endgerät gefüllt.

In der Auswertung des HTTP-Request-Headers wird die Genauigkeit, mit der ein Endgerät identifziert werden kann, berücksichtigt. Dazu muß für einen bestimmten Gerätetyp im XML-Tag <priority/> in der Konfigurationstabelle ein bestimmter Prioritätswert zugeordnet werden.

Für den Prioritätswert 1 wird genau die passende Zeichenfolge und damit ein bestimmter Gerätetyp ermittelt. Wird beim Abgleichen der Zeichenfolge keine Übereinstimmung gefunden, so versucht der Geräteerkennungsprozeß das Endgerät einem übergeordneten Gerätetyp der Priorität 2 und 3 zuzuordnen.

Enthält der HTTP-Request-Header „User-Agent“ beispielsweise eine Zeichenfolge, die mit „Nokia“ beginnt, so wird das Endgerät als ein Gerätetyp des Herstellers Nokia erkannt und die Werte des Gerätetyps NokiaGeneric zum Füllen der Instanz der Klasse „ClientInfo“ verwendet. Dieser allgemeine Gerätetyp kann deshalb herangezogen werden, da man in der Regel davon ausgehen kann, daß ein Hersteller für seine Endgeräte den gleichen Browser verwendet.

Kann der Geräteerkennungsprozeß keine Übereinstimmung in der Konfigurationstabelle MOB_DEVCFG finden, so kann er über den im HTTP-Request-Header „ACCEPT“ mitgelieferten Content-Typ das anfragende mobile Endgerät entweder dem Typ wmlGeneric für WAP-fähige Endgeräte oder dem Typ htmlGeneric für HTML-fähige mobile Endgeräte zuordnen. Auf diese Weise bietet der Geräteerkennungsprozeß die Identifizierung eines WAP-fähigen Endgerätes, auch wenn die Konfigurationstabelle dazu keinen Eintrag enthält.

Das Interface IF_CLIENT_INFO bietet eine Reihe von Methoden, die auf die unterschiedlichen Darstellungsmöglichkeiten verschiedener Browser-Typen eingehen.

Eine Instanz der Implemetierung des Interfaces IF_CLIENT_INFO wird zur Laufzeit dann mit Werten gefüllt, wenn durch eine HTTP-Anfrage zum ersten Mal eine Methode des Interfaces IF_CLIENT_INFO in einer BSP-Anwendung aufgerufen wird.

Die Werte dieser Eigenschaften, die SAP für die verschiedenen auf dem Markt erhältlichen Gerätetypen zur Verfügung stellt, sind in Tabellen auf dem SAP Web Application Server hinterlegt. Anhand der über den HTTP-Request mitgelieferten Information zum Gerätetyp wird der entsprechende Eintrag zu dem anfragenden Gerätetyp in der Tabelle ausgewählt, die Werte für ein bestimmtes Gerät ermittelt und in die Instanz der Klasse "ClientInfo" eingetragen.

Sie können so die im Interface IF_CLIENT_INFO definierten Methoden beim Erstellen einer Web-Anwendung nutzen und damit bei der Entwicklung von Web-Anwendungen die Eigenschaften und Merkmale mobiler Endgeräte berücksichtigen.

Der Zugriff auf das Interface IF_CLIENT_INFO erfolgt über das Runtime-Objekt innerhalb einer BSP-Anwendung, da über das Runtime-Objekt der Zugriff auf laufzeitrelevante Informationen ermöglicht wird.

Das folgende Quelltextfragment zeigt Ihnen, wie Sie über das Runtime-Objekt auf das Interface IF_CLIENT_INFO zugreifen können:

<%@page language=“abap“%>
<%
...
data client_info type ref to IF_CLIENT_INFO.
client_info = runtime->client_info.
if client_info->get_title_supported( ) = ‘X’.
...
%>

 

 

 

Ende des Inhaltsbereichs