Methodik

Der Mobile App Sensor kann für eine Reihe von Mobile Devices eingesetzt werden. Die Library misst hierbei nur Aktionen innerhalb von Applikationen. Mit diesem Sensor ist es nicht möglich, die Webnutzung von einem Mobile-Geräte zu messen. Hierzu ist eine andere Implementierung vorgesehen, die auch direkt in den entsprechenden Webseiten implementiert werden muss.

Eine Zusammenführung der Mobile-App-Nutzung und der Mobile-Web-Nutzung ist im Standardverfahren nicht möglich.

Beschreibung der Mobile App Library Schnittstelle

Exemplarisch für alle Plattformen wird in diesem Kapitel die Schnittstelle zum Mobile App Sensor beschreiben. Zur Erläuterung wird hier die Programmiersprache Java verwendet. Die Funktionsnamen sind aber in allen unterstützten Plattformen und deren Programmiersprache gleich.

Die Schnittstelle ist grundsätzlich auf allen Plattformen gleich. Die Besonderheiten und ein Beispielcode ist in den entsprechenden Kapiteln zu den Plattformen zu finden.
Generell gilt für den Einbau:

  • Erzeuge ein Objekt SpringMobile mit dem Applikationsnamen und dem Angebotsnamen. (Der Angebotsname wird zusammen mit der Library ausgeliefert)
  • Für definierte Aktionen rufe die Methode commit(...) mit den entsprechenden Variablen und Werten auf.

Beispiel:

public class SpringMobile {

/**
* Konstruktor mit verbindlicher Angabe einer Angebotskennung
* und des Applikationsnamen.
*/
public SpringMobile(String site, String application) { }

/**
* Mit dem Aufruf dieser Methode werden alle Name-Value-Paare
* der {@link Map} an das Messsystem gesendet.
*
* @param target Eine Map mit allen Name-Value-Paaren.
*/
public void commit(Map target) { }

/**
* Wenn der Wert false angegeben wird, wird
* das Senden der Requests an das Messsystem abgeschaltet.
* Per default ist dieser Wert true.
*/
public void setTracking(boolean tracking) { }

/**
* Liefert den Wert true wenn das Tracking
* aktiviert ist ansonsten den Wert false.
*/
public boolean isTracking() { }
}

Vordefinierte Variable Contentpath (cp)

Das Setzen dieser Variable ist für die Messung mandatorisch. Der Wert der Variablen muss hierarchisch nach dem ÖWA Kategoriensystem aufgebaut werden, weil dahinter liegende Reportingsysteme dann in der Lage sind für jede Ebene der Hierarchie Messwerte vorzuberechnen.

Beispiele:

  • RedCont/Homepage/Homepage
  • RedCont/Nachrichten/LokaleNachrichten/Wien
  • Ecommerce/Onlineshop/Service/myApp/iPhone

Support

Sollten bei der Implementierung der Library SpringMobile Fragen oder Probleme auftreten, dann senden Sie bitte eine E-Mail an unser Support- Team unter support@oewa.at mit folgenden Informationen:

  • Name
  • Beschreibung des Problems
  • Evtl. Fehlermeldungen mit Fehlercodes
  • Plattform (Version), Applikationsname (Version)

Integration iOS

Das folgende Beispiel zeigt den grundsätzlichen Einbau für die Plattform iOS. Bei der Erzeugung der Klasse SpringMobile muss eine Sitekennung (<site>) angegeben werden, die zusammen mit dieser Dokumentation und den Libraries ausgeliefert wird.

/*
 * SpringMobile importieren
 */
#import "Spring.h"

/*
 * Instanz bereitstellen
 */
Spring *spring;

/*
 * SpringMobile-Instanz erstellen mit der Sitekennung und dem
 * Applikationsnamen
 */
spring = [[Spring alloc] initWithSiteAndApplication:@"" application:@"myApplication1"];
Timeout (default: 10 Sekunden)
Mit diesem Wert kann ein Timeout (in Sekunden) für jeden HTTP- Request innerhalb der Lib konfiguriert werden.
Beispiel:
spring = [[Spring alloc] initWithSiteAndApplication:@"app" application:@"Test App"];
spring.timeout = 10.0; // in Sekunden
Debug
Wenn dieser Wert auf YES gesetzt wird, liefert die Library Debugausgaben über die Klasse NSLog.
spring = [[Spring alloc] initWithSiteAndApplication:@"app" application:@"Test App"];
spring.debug = YES;
Beispielausgabe
2011-11-25 13:42:52.878 TestApp3[73923:ff07] spring (1.0.3.1)> http://test.2cnt.net/j0=,,,;+,app=Test%20App+did=7ca359bc4c3c6a19;;;?lt=gvf6lykt
2011-11-25 13:42:52.927 TestApp3[73923:ff07] spring (1.0.3.1)> http status code: 200 - no error
Beispiel für die Variable Contentpage (cp)
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"service/messaging/email",@"cp",nil];
[spring commit:dict];

Die iOS-Library verwendet den Apple Advertising Identifier (IDFA). Daher muss in der App das adSupport.framework integriert werden, um eine korrekte Funktion der Library zu gewährleisten.
Auf der „Prepare for Upload page“ in iTunes Connect muss der Punkt „Serve advertisements within the app“ bei “This app uses the Advertising Identifier to…” markiert werden.
Wenn die Zustimmung zur Würdigung des Userwunsches nach „keinem Ad-Tracking“ gegeben wurde, muss sichergestellt werden, dass diese Einstellung in der App abgefragt und bei Aktivierung von der App kein Aufruf der ÖWA Library für einen Messimpuls getätigt wird.
Beschreibung zur Nutzung der drei verschiedenen Sensoren aus dem iOS Library Package
spring-appsensor-device.a

Diese Version wurde mit ARM Support kompiliert und ist für iOS Geräte.

spring-appsensor-simulator.a

Diese Version wurde mit x86 Support kompiliert und ist für den iOS Simulator.

spring-appsensor-fat.a

Die Version spring-appsensor-fat.a ist eine Kombination aus der spring-appsensor-device.a und der spring-appsensor-simulator.a und kann sowohl für iOS Geräte als auch für den iOS Simulator genutzt werden.

Notwendiger Eintrag in der Priority List
Damit der Applikationsname (identischer Storename für die App ) auch ausgelesen werden kann, ist es unbedingt notwendig die Variable "CFBundleDisplayName" in der Priority List zu befüllen.

Integration Android

Das folgende Beispiel zeigt den grundsätzlichen Einbau für die Plattform Android. Bei der Erzeugung der Klasse SpringMobile muss eine Sitekennung (<site>) angegeben werden, die zusammen mit dieser Dokumentation und den Libraries ausgeliefert wird.

Beispiel:
/**
 * SpringMobile importieren
 */
import de.spring.mobile.SpringMobile;

/**
 * SpringMobile-Instanz erstellen mit der Sitekennung und dem
 * Applikationsnamen
 */
SpringMobile spring = new SpringMobile("<site>", "Application Name", getApplicationContext());
Folgende Einstellungen sollen in der Datei AndroidManifest.xml vorgenommen werden:
<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>

Das Setzen der Permission beim Benutzer ist nicht mandatorisch, wird aber ausdrücklich empfohlen.
Wird die Permission READ_PHONE_STATE gesetzt, werden die Android-ID und die Device-ID verwendet.
Wird die Permission nicht gesetzt, wird nur die Android-ID verwendet.
Zwei Aspekte sind dabei entscheidend:
Das Gerät liefert nur eine gültige Android-ID, wenn der Benutzer einen Google-Account besitzt. (dies sollte jedoch bei allen Nutzern der Apps der Fall sein, da ohne Google-Account kein Zugriff auf den Android Market möglich ist)
Es gibt einen Bug in der Android-Version 2.2, der allerdings nur in Verbindung mit bestimmten Providern auftritt, wobei bei allen betroffenen Geräten die gleiche Android-ID geliefert wird.
Timeout
Mit diesem Wert kann ein Timeout (in Sekunden) für jeden HTTP- Request innerhalb der Lib konfiguriert werden.
SpringMobile spring = new ("app","TestApp",getApplicationContext());
spring.setTimeout(10); // in Sekunden
Beispiel für die Variable Contentpage (cp)
Map<String, Object> map = new HashMap<String, Object>();
map.put("cp", "service/messaging/email");
spring.commit(map);
Wichtig ab Android 3.0 !
Die Initialisierung und Verwendung der spring Lib muss im UI-Thread stattfinden, andernfalls kann es zu Fehlermeldungen in den Background-Threads kommen.

Downloads

ÖWA-Kategoriensystem

Libraries

iOS Library 1.8.12 (06.07.2016)

Android Library 1.7.6 (06.07.2016)

 

QDS-Tester Registration Apps für Developer

Android (23.10.2015)

iOS (30.09.2016)