<commit_before># Plan de taggage SDK Android #


## Tracking d'une application webview

En ce qui concerne la navigation dans le contexte d'une application de type *webview* sur Android (site web html/js standard), notre identifiant interne doit être fourni dans l'url d'ouverture afin d'assurer la continuité du tracking.
Pour récupérer cette valeur, la technique du client doit utiliser la fonction suivante définie dans notre SDK:

  * Android :
```xml
String euidl = EAnalytics.getEUIDL();
```

Une fois cette valeur fournie dans le paramètre **ea-euidl-bypass**, on débraye le système de cookie usuel pour utiliser l'euidl en provenance de l'application.

**Exemple:**

```xml
http://www.vpg.fr/ios-landing-webview?ea-euidl-bypass=$euidl_de_l_app
```

Si le ea.js détecte ce paramètre alors il l'utilise et le stocke en interne tout le long de la session, ceci afin d'éviter que le site ne le repasse a chaque page visitée.
Une fois ce passage de paramètre effectué, le tracking d'une application IOS en contexte webview ne diffère pas des formats Javascript que nous utilisons pour un site web classique.

La documentation disponible à [cette adresse](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:general) contient toutes les informations nécessaires à l'implémentation de nos Tags Javascript.



## Tracking d'une application native

Dans le cas d'une application native, notre SDK doit être incorporé au code source de l'application pour pouvoir intégrer le type de marqueur suivant:

```xml
EAProperties properties = new EAProperties.Builder("NOM_PAGE”).build();
Eanalytics.getInstance().track(properties);
```

Notre **SDK** a été conçu pour faciliter au maximum l'intégration en offrant une structure objet simple à utiliser et une documentation détaillée.

Les paramètres disponibles et les possibilités sont exactement les mêmes que pour notre Tag collector. Vous pourrez donc suivre les chemins de navigation sur votre application et les comparer avec votre site web classique en intégrant les mêmes variables.

Les appels générés par ces marqueurs sont également très proches de l'appel collector classique et ont été conçus pour être le plus léger possible afin de ne pas perturber l'application.

Certains paramètres de notre collector sont spécifiques au tracking d'une application mobile. Pour plus d'informations à ce sujet consultez [cette documentation](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:parameters_list).

Notre SDK est également capable de collecter un nombre illimité d'interactions offline et de les envoyer une fois l'utilisateur connecté. Ce procédé nous permet de continuer à tracker l'internaute même si ce dernier interagit avec votre application hors connection. La navigation est enregistrée et réattribuée à posteriori via notre paramètre ereplay-time.

## Règle d'affectation de trafic

Sur un site web classique, notre système identifie et affecte le trafic en fonction de l'**URL** sur lequel le marqueur est appelé. Nous n'avons cependant pas accès à cette information dans le contexte d'une application.

Pour définir la règle d'attribution de traffic, nous nous basons donc sur le sous domaine de tracking utilisé et passé en paramètre de la méthode **init** de l'objet EAnalytics défini dans notre SDK:

```xml
public class YourApp extends Application {
     @Override
    public void onCreate() {
        super.onCreate();
        EAnalytics.init(this, "DOMAINE_DE_TRACKING", true);
    }
 }
```

<note important>
Ça signifie aussi que si vous utilisez le même sous domaine de tracking pour plusieurs de vos applications, nous devrons les distinguer en ajoutant le paramètre [from](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:parameters_list) dans les marqueurs. Ce sera automatiquement le cas pour une application hybride qui partage certaines pages en commun avec votre site web.</note>

A noter également que l'absence d'URL signifie aussi l'absence d'un nom de page par défaut. Le paramètre [path](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:parameters_list) n'est pas optionnel mais __obligatoire__ dans le tracking d'une application.

Le trafic généré par votre application peut remonter sur un site Eulerian dédié ou être fusionné avec celui d'un autre site web existant. Comme indiqué plus haut, si votre application passe en mode webview pour certaines pages l'ajout du paramètre [from](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:parameters_list) est obligatoire pour nous permettre de rediriger le trafic correctement dans nos systèmes. 

## Métriques téléchargement et mise à jour

Déscription des paramètres associés : 
  * **ea-appname** : NOM_APPLICATION , correspond au nom de l’application. Ce dernier ne doit pas changer
  * **ea-appversion** : VERSION_APPLICATION , correspond à la version de l’application
  * **ea-appinstalled** : 1 , il doit être ajouté à tous les utilisateurs ayant déjà téléchargé l’application avant la mise à jour de l’url d’appel contenant les deux paramètres ci-dessus

La présence du paramètre **ea-appname** déclenche un traitement au niveau du système. 

Le système va alimenter la métrique **téléchargement** si :
  * Le user n’a jamais été exposé à la valeur du paramètre **ea-appname** au moment de l’ouverture de l’application et le paramètre **ea-appinstalled** n’est pas présent dans l’appel

Le système va alimenter la métrique **Mise à jour** si :
  * Le user a déjà été exposé au paramètre **ea-appname** et sa valeur est identique à celle présente lors de la dernière ouverture de l’application. Par contre, la valeur du paramètre **ea-appversion** est différente.

![download_upgrade.png](https://bitbucket.org/repo/kA6LdM/images/3930826066-download_upgrade.png)

## Intégration via jCenter

Dans le cadre du tracking des applications mobiles, **jCenter** vous permet de simplifier le processus d'intégration du SDK.

### Installation

Insérer le SDK Android dans l'outil [Gradle](http://gradle.org/|Gradle).
```xml
dependencies {
   compile 'com.eulerian.android.sdk:eanalytics:1.6.0'
}
```

Dans le fichier **AndroidManifest.xml**, ajouter les permissions suivantes :

```javascript
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><commit_msg>remove jCenter doc<commit_after># Plan de taggage SDK Android #


## Tracking d'une application webview

En ce qui concerne la navigation dans le contexte d'une application de type *webview* sur Android (site web html/js standard), notre identifiant interne doit être fourni dans l'url d'ouverture afin d'assurer la continuité du tracking.
Pour récupérer cette valeur, la technique du client doit utiliser la fonction suivante définie dans notre SDK:

  * Android :
```xml
String euidl = EAnalytics.getEUIDL();
```

Une fois cette valeur fournie dans le paramètre **ea-euidl-bypass**, on débraye le système de cookie usuel pour utiliser l'euidl en provenance de l'application.

**Exemple:**

```xml
http://www.vpg.fr/ios-landing-webview?ea-euidl-bypass=$euidl_de_l_app
```

Si le ea.js détecte ce paramètre alors il l'utilise et le stocke en interne tout le long de la session, ceci afin d'éviter que le site ne le repasse a chaque page visitée.
Une fois ce passage de paramètre effectué, le tracking d'une application IOS en contexte webview ne diffère pas des formats Javascript que nous utilisons pour un site web classique.

La documentation disponible à [cette adresse](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:general) contient toutes les informations nécessaires à l'implémentation de nos Tags Javascript.



## Tracking d'une application native

Dans le cas d'une application native, notre SDK doit être incorporé au code source de l'application pour pouvoir intégrer le type de marqueur suivant:

```xml
EAProperties properties = new EAProperties.Builder("NOM_PAGE”).build();
Eanalytics.getInstance().track(properties);
```

Notre **SDK** a été conçu pour faciliter au maximum l'intégration en offrant une structure objet simple à utiliser et une documentation détaillée.

Les paramètres disponibles et les possibilités sont exactement les mêmes que pour notre Tag collector. Vous pourrez donc suivre les chemins de navigation sur votre application et les comparer avec votre site web classique en intégrant les mêmes variables.

Les appels générés par ces marqueurs sont également très proches de l'appel collector classique et ont été conçus pour être le plus léger possible afin de ne pas perturber l'application.

Certains paramètres de notre collector sont spécifiques au tracking d'une application mobile. Pour plus d'informations à ce sujet consultez [cette documentation](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:parameters_list).

Notre SDK est également capable de collecter un nombre illimité d'interactions offline et de les envoyer une fois l'utilisateur connecté. Ce procédé nous permet de continuer à tracker l'internaute même si ce dernier interagit avec votre application hors connection. La navigation est enregistrée et réattribuée à posteriori via notre paramètre ereplay-time.

## Règle d'affectation de trafic

Sur un site web classique, notre système identifie et affecte le trafic en fonction de l'**URL** sur lequel le marqueur est appelé. Nous n'avons cependant pas accès à cette information dans le contexte d'une application.

Pour définir la règle d'attribution de traffic, nous nous basons donc sur le sous domaine de tracking utilisé et passé en paramètre de la méthode **init** de l'objet EAnalytics défini dans notre SDK:

```xml
public class YourApp extends Application {
     @Override
    public void onCreate() {
        super.onCreate();
        EAnalytics.init(this, "DOMAINE_DE_TRACKING", true);
    }
 }
```

<note important>
Ça signifie aussi que si vous utilisez le même sous domaine de tracking pour plusieurs de vos applications, nous devrons les distinguer en ajoutant le paramètre [from](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:parameters_list) dans les marqueurs. Ce sera automatiquement le cas pour une application hybride qui partage certaines pages en commun avec votre site web.</note>

A noter également que l'absence d'URL signifie aussi l'absence d'un nom de page par défaut. Le paramètre [path](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:parameters_list) n'est pas optionnel mais __obligatoire__ dans le tracking d'une application.

Le trafic généré par votre application peut remonter sur un site Eulerian dédié ou être fusionné avec celui d'un autre site web existant. Comme indiqué plus haut, si votre application passe en mode webview pour certaines pages l'ajout du paramètre [from](https://eulerian.wiki/doku.php?id=fr:collect:technical_implementation:parameters_list) est obligatoire pour nous permettre de rediriger le trafic correctement dans nos systèmes. 

## Métriques téléchargement et mise à jour

Déscription des paramètres associés : 
  * **ea-appname** : NOM_APPLICATION , correspond au nom de l’application. Ce dernier ne doit pas changer
  * **ea-appversion** : VERSION_APPLICATION , correspond à la version de l’application
  * **ea-appinstalled** : 1 , il doit être ajouté à tous les utilisateurs ayant déjà téléchargé l’application avant la mise à jour de l’url d’appel contenant les deux paramètres ci-dessus

La présence du paramètre **ea-appname** déclenche un traitement au niveau du système. 

Le système va alimenter la métrique **téléchargement** si :
  * Le user n’a jamais été exposé à la valeur du paramètre **ea-appname** au moment de l’ouverture de l’application et le paramètre **ea-appinstalled** n’est pas présent dans l’appel

Le système va alimenter la métrique **Mise à jour** si :
  * Le user a déjà été exposé au paramètre **ea-appname** et sa valeur est identique à celle présente lors de la dernière ouverture de l’application. Par contre, la valeur du paramètre **ea-appversion** est différente.

![download_upgrade.png](https://bitbucket.org/repo/kA6LdM/images/3930826066-download_upgrade.png)

## Intégration via jitpack

Dans le cadre du tracking des applications mobiles, **jitpack** vous permet de simplifier le processus d'intégration du SDK.

### Installation

Insérer le SDK Android dans l'outil [Gradle](http://gradle.org/|Gradle).
```xml
dependencies {
   compile 'com.eulerian.android.sdk:eanalytics:1.9.0'
}
```

Dans le fichier **AndroidManifest.xml**, ajouter les permissions suivantes :

```javascript
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
{'fraction_non_alphanumeric': 0.06978367062107467, 'fraction_numerical': 0.0023261223540358223, 'mean_word_length': 5.276399026763991, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 12, 'lorem ipsum': 0, 'www.': 2, 'xml': 12}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2593168', 'n_tokens_mistral': 3938, 'n_tokens_neox': 3878, 'n_words': 1572}