Ce guide a pour but de vous accompagner au cours des différentes étapes pour installer la libraire Wintdo.

0 Sommaire

1 Partie application

1.1 Déclarer l'application auprès de firebase (si ce n'est pas déjà fait)

Pour déclarer votre application auprès de Firebase vous pouvez suivre ce tutoriel

1.2 Ajouter les dépendances

1.2.1 Dans le build.gradle du projet

Ajouter au build.gradle du projet dans allprojects/repositories la source suivante maven {url "https://dl.bintray.com/hbaltz2/test-wintdo/"} dans le futur le sdk sera posté sur jcenter, l'ajout de cette ligne sera alors inutile.

"Exemple d'ajout de la dépendance dans le projet d'une application test"

"Exemple d'ajout de la dépendance dans le projet d'une application test"

1.2.2 Dans le build.gradle du module contenant l'activité principale

Ajouter au build.gradle du module contenant l'activité principale dans dependencies la source suivante compile 'fr.meteo:wintdo:0.5.5'.

"Exemple d'ajout de la dépendance dans le module d'une application test"

1.2.2.1 Problèmes compatibilités des dépendances

Si vous vous servez de dépendances déjà présentes dans la librairie Wintdo, il se peut que des conflits voient le jour, notamment avec les play-services de google qui doivent être tous à la même version, si vous observez un message d'erreur de ce type : All com.google.android.gms libraries must use the exact same version specification (mixing versions can lead to runtime crashes). c'est que vous êtes confronté à un problème de ce type.

Pour régler ce problème, lors de la compilation de Wintdo il faut exclure les libraires qui se servent d'une version différentes des play-services de Google :

compile ('fr.meteo:wintdo:0.5.5'){
    exclude group: 'com.google.android.gms', module: 'play-services-location'
    exclude group: 'com.google.android.gms', module: 'play-services-maps'
    exclude group: 'com.google.maps.android', module: 'android-maps-utils'
    exclude group: 'com.google.firebase'
}

N'oubliez pas d'intégrer les services nécessaires à Wintdo avec la bonne version si vous ne les avez pas déjà intégrés dans votre application :

compile 'com.google.android.gms:play-services-maps:$YOUR_VERSION_OF_THE_PLAY_SERVICE'
compile 'com.google.firebase:firebase-messaging:$YOUR_VERSION_OF_THE_PLAY_SERVICE'
compile 'com.google.android.gms:play-services-location:$YOUR_VERSION_OF_THE_PLAY_SERVICE'
compile 'com.google.maps.android:android-maps-utils:$YOUR_VERSION_OF_THE_MAPS_UTILS'
"Exemple de correction de problème de dépendances dans une application test"

1.3 Initialiser le sdk

1.3.1 Déclarer le service de localisation Wintdo

Dans le manifeste il faut déclarer le service de localisation de Wintdo dans l'application en ajoutant dans <application></application> la ligne suivante :

<service android:name="fr.meteo.wintdo.wintdo_sdk.services.locationService" />
"Exemple de la déclaration du service de localisation de Wintdo dans une application test"

1.3.2 Dans le onCreate() de l'activité

Dans le onCreate() de l'activité vers laquelle vous souhaitez rediriger l'utilisateur à l'aide des notifications Wintdo, ajouter la ligne Wintdo.bind(this);, la fonction bind prend une activité en entrée et sert à initialiser le service Wintdo. Voir la section paramétrer le SDK , pour plus d'options.

"Exemple d’initialisation de Wintdo dans une application test"

1.4 Gérer les notifications

Nota bene : Vérifier que votre application est bien déclarée auprès de Firebase et qu'elle intègre bien Firebase (voir la section si rapportant)

1.4.1 Gérer la réception

Dans le cas où votre application ne possède pas un service de réception des messages Firebase, il faut créer ce service (vous pouvez suivre ce tutoriel et ce tutoriel pour le faire ). Dans votre service de réception des messages Firebase (votre classe étendant FirebaseMessagingService), il faut ajouter dans le onMessageReceived(RemoteMessage remoteMessage) les lignes suivantes:

if(Wintdo.isWintdoMessage(remoteMessage)){
    Wintdo.manageAlert(this, remoteMessage);
}else{
    // Le traitement des messages qui ne viennent pas de Wintdo
}
"Exemple de gestion des messages Wintdo dans une application test avec son propre système de réception de messages"

1.4.2 Gestion de l'intent

Lors du clique sur la notification, la notification va relancer l'application et afficher un message, pour cela Wintdo passe par un Intent qu'il faut gérer, il faut donc dans le onResume() de l'activité vers laquelle vous souhaitez rediriger l'utilisateur à l'aide des notifications Wintdo ajouter les lignes suivantes :

Intent intent = getIntent();
if (Wintdo.isWintdoIntent(intent)) {
    Wintdo.manageIntent(intent);
}else{
    // Le traitement des intent qui ne viennent pas de Wintdo
}
"Exemple de gestion des intent Wintdo dans une application test"

1.5 Paramétrer le SDK

Vous pouvez changer plusieurs paramètres du SDK : * Le temps entre deux notifications de même type et de niveau d'alerte inférieur ou égal * Le logo qui apparaît dans la notification et les messages d'alertes * Le titre de l'alerte * Définir une zone d’intérêt qui sera pris en compte en plus de la position de l'utilisateur pour savoir quelles alertes afficher

Pour cela il faut se servir de la fonction bind(Activity activity, Integer timeLimit, Integer logoAlert, String alertTitle, LatLng[] interestArea), les champs en plus de l'activité sont optionnels, vous pouvez utiliser uniquement ceux qui vous intéressent.

1.5.1 Le temps entre deux notifications

Il s'agit du champs timeLimit, la fonction attend un entier en minute ou la valeur null pour ce champs. Par défaut la valeur de ce champs est de 60 minutes.

Il s'agit du champs logoAlert, la fonction attend un entier qui représente où est stocké l'image dans l’application Android ou la valeur null pour ce champs. Par défaut le logo est l'image d'alerte par défaut d'Android.

1.5.3 Le titre de l'alerte

Il s'agit du titre qui va apparaître dans la boîte de dialogue au clique de la notification. Par défaut, le titre est <Nom-de-l'application> vous informe d'un risque dans votre zone

1.5.4 La zone d'intérêt

La zone d'intérêt est défini par une bounding box en WGS84, il faut entrer le point (lat,lng) le plus au Sud-Ouest (en premier dans le tableau) et le point le plus au Nord-Est (dans la projection WGS84 bien sûr).

"Bounding box autour de Toulouse"

1.5.5 Exemple

1.5.5.1 Seulement une option

Si vous le souhaitez vous pouvez utiliser uniquement l'un des paramètres, il suffit de mettre les autres à null si le paramètre est placée après les autres, sinon il suffit de ne rien rentrer du tout.

Ainsi Wintdo.bind(this, null, R.mipmap.ic_launcher); changera uniquement le logo de l'alerte et Wintdo.bind(this, 24*60); changera uniquement le temps entre les alertes qui va passer à 24H pour une notification de même type et de niveau d'alerte inférieur ou égal.

1.5.5.2 Toutes options

Si vous souhaitez avoir une notification maximum toutes les 24H, avec dans le message d'alerte et dans la notification comme logo l'icône de lancement de l'application, le titre "Wintdo vous transmet l'alerte suivante: " pour l'alerte et la zone d’intérêt sur Toulouse, vous écrirez dans votre code :

// Interest area around Toulouse - France
LatLng[] interestArea = new LatLng[2];

interestArea[0] = new LatLng(43.525569, 1.340144);
interestArea[1] = new LatLng(43.663549, 1.553906);

Wintdo.bind(this,
 24*60,
 R.mipmap.ic_launcher, 
 "Wintdo vous transmet l'alerte suivante: ", 
 interestArea);
"Exemple Wintdo avec paramètres"

1.6 S'abonner à un canal spécifique

Wintdo propose des canaux de diffusion d'alertes spécifique à une activité, pour l'instant trois canaux existent :
* Un regroupant les alertes pouvant affecter les gens effectuant de la randonnée sur le territoire français (fr-hike)
* Un regroupant les alertes pouvant affecter les gens effectuant du ski sur le territoire français (fr-ski)
* Un regroupant les alertes pouvant affecter les gens effectuant de la voile sur le territoire français (fr-sailing)

Pour s'abonner à l'un de ses canaux il faut se servir de la fonction Wintdo.subscribe2Topic(String topic) avec comme paramètre le topic auquel vous souhaitez vous abonnez. Par exemple si souhaitez que vos utilisateurs reçoivent les alertes pouvant affecter les gens effectuant de la randonnée sur le territoire français, vous le ferez en ajoutant la ligne suivante à votre code : Wintdo.subscribe2Topic("fr-hike").

"Exemple d'abonnement à un topic"

2 Partie serveur

2.1 Générer la clé privée

Si vous possédez déjà un service d'envoi/réception dans votre application de messages Firebase, il faut que vous nous autorisiez à envoyer des messages en votre nom en nous fournissant un fichier json généré par Firebase. Ce guide va vous expliciter les différentes étapes à suivre pour générer ce fichier json :

"Console Firebase"
"Console Firebase emplacement de paramètres du projet"
"Console Firebase emplacement de compte de service"
"Console Firebase emplacement de générer la clé"
"Enregistrer la clé"
"Enregistrer la configuration"