Dans l’article précédent, on a vu comment envoyer des notifications à tous les utilisateurs de l’application en utilisant les API REST d’Azure Mobile Center.
Cette fois-ci on va voir comment créer et utiliser des audiences pour envoyer notifications push à des segments d’utilisateurs.
Les audiences
Les audiences permettent de découper la base des utilisateurs. Les paramètres disponibles par défaut sont les suivants :
- Version de l’application
- Pays
- Opérateur
- Langue
- Modèle de l’appareil
- OEM
- Version du système ou niveau d’API
- Taille d’écran
Il est également possible de préciser ses propres paramètres en utilisant des propriétés personnalisées.
La documentation officielle sur les audiences est présente ici : https://docs.microsoft.com/en-us/appcenter/push/send-notification#audiences
Audience standard
Création de l’audience
La création d’une audience en utilisant les services REST se fait avec la méthode PUT sur :
https://api.mobile.azure.com/v0.1/apps/[user]/[app]/analytics/audiences/[audiencename]
Prenons un exemple et créons une audience rassemblant tous les utilisateurs ne se trouvant pas en Corée du Nord. Puisque les identifiants des pays utilisés par l’API semblent suivre la norme ISO 3166-1 alpha 2 on va nommer cette audience AudienceNotInKP.
On va donc appeler en PUT le service suivant :
https://api.mobile.azure.com/v0.1/apps/[user]/[app]/analytics/audiences/AudienceNotInKP
Le payload de cette requête sera sous forme de json, alors on précise le bon header HTTP :
Content-Type: application/json
Ne reste plus qu’à écrire le payload dans le corps du message HTTP :
{
"definition": "CarrierCountry ne 'KP'",
"description": "Users not in North Korea"
}
Les propriétés standard
On remarquera que le champ definition utilise du ODATA. Ainsi ne signifie not equals et eq signifie equals. La liste des variables disponibles n’est pas clairement exposée dans la documentation. Néanmoins je me suis chargé de vous la dresser ici dans le même ordre que la liste précédente :
- AppVersion
- CarrierCountry
- CarrierName
- Language
- Model
- OemName
- OsVersion
- ScreenSize
Audience personnalisée
Création de l’audience
La création d’audiences personnalisées se base sur les propriétés personnalisées ajoutées par l’application. On va donc maintenant ajouter une audience basée sur la propriété TestProperty dont la valeur devrait être de 42.
On suit le même principe que ci-dessus avec l’adresse :
https://api.mobile.azure.com/v0.1/apps/[user]/[app]/analytics/audiences/Audience42
{
"definition": "TestProperty eq '42'",
"custom_properties": {
"TestProperty": "string"
}
}
La nouvelle audience est maintenant créée.
L’application mobile
Ajouter une propriété personnalisée dans l’application mobile est très simple et se fait de la manière suivante :
var cp = new CustomProperties();
cp.Set("TestProperty", "42");
MobileCenter.SetCustomProperties(cp);
Vous trouverez des exemples sur la documentation officielle : https://docs.microsoft.com/en-us/mobile-center/sdk/other-apis/xamarin.
Lister les audiences
Lister les audiences se fait de manière très simple avec un GET sur l’adresse suivante :
https://api.mobile.azure.com/v0.1/apps/[user]/[app]/analytics/audiences/
Notifier une audience
Maintenant que l’on a les informations nécessaires, l’envoi d’une notification est aussi simple que de faire un POST sur la bonne url :
https://api.mobile.azure.com/v0.1/apps/[user]/[app]/push/notifications
Le payload de notre push sera sous forme de json, alors on précise le bon header HTTP :
Content-Type: application/json
Ne reste plus qu’à écrire le payload de notre push dans le corps du message HTTP :
{
"notification_target": {
"type": "audiences_target",
"audiences": ["AudienceNotInKP"]
},
"notification_content": {
"name": "Audience Notification",
"title": "Audience Notification Title !",
"body": "Audience Notification Message !",
"custom_data": {}
}
}
On remarquera que les audiences sont précisées dans un tableau JSON. Il est donc possible d’en ajouter plusieurs !
Conclusion
Dans cet article je vous ai montré comment envoyer une notification push vers une audience particulière grâce aux API REST de Azure Mobile Center.
Puisqu’il est facile de créer dynamiquement des audiences en REST, certains scénarii deviennent facilement envisageables. Par exemple, on pourrait avoir un identifiant utilisateur comme propriété personnalisée et ainsi notifier tous les appareils d’un utilisateur donné sans avoir à gérer la liste de ses appareils.
Comments