Nous travaillons sur un envoi de notification sur une application hybride, par l’intermédiaire de Firebase.
Notre configuration semble correcte car nous avons un token d’authentification :
Pouvez-vous nous préciser quelles fonctions appeler pour envoyer une notification sur les devices, et à quel endroit les appeler (dans les hooks côté back ou dans les ressources côté front ?).
Les tokens sont stockés dans les paramètres système de l’utilisateur FIREBASE_TOKENS.
L’objet externe SocialNotification permet d’envoyer des messages vers tous les utilisateurs / des utilisateurs nommés / ou des groupes de type Notification
Ok, nous avons ajouté en P24 la possibilité de “joindre” un objet au message pour ouvrir le formulaire d’un objet sur ouverture de la notification foreground (applicaiton ouverte).
Et la méthode pour créer un message sera publique pour envoi de données spécifiques :
public static Builder getNotifBuilder(String title, String body, boolean high, long ttl, String sound, String color, String icon, Map<String,String> map)
{
// Tilte + Body
Builder b = Message.builder();
b.setNotification(new Notification(title, body));
// Android specifics
// https://github.com/firebase/firebase-admin-java/blob/master/src/main/java/com/google/firebase/messaging/AndroidConfig.java
b.setAndroidConfig(AndroidConfig.builder()
.setPriority(high ? Priority.HIGH : Priority.NORMAL)
.setTtl(ttl>0 ? ttl : TTL_DAY)
// https://github.com/firebase/firebase-admin-java/blob/master/src/main/java/com/google/firebase/messaging/AndroidNotification.java
.setNotification(AndroidNotification.builder()
// ZZZ Icon name is fixed in cordova plugin (see source FirebasePluginMessagingService.java)
.setIcon(icon!=null ? icon : "notification_icon")
.setSound(sound!=null ? sound : "default")
.setColor(color!=null ? color : "#FFFFFF")
.build())
.build());
// Custom data
if (!Tool.isEmpty(map))
b.putAllData(map);
return b;
}
public static String sendToUser(String login, String token, String title, String body, Map<String,String> map) throws Exception
{
if (!init()) return null;
try
{
Message message = getNotifBuilder(title, body, false, 0, null, null, null, map)
.setToken(token)
.build();
return FirebaseMessaging.getInstance(app).send(message);
}
catch (FirebaseMessagingException e)
{
// Unknown token => remove
if (ERR_UNREGISTERED.equals(e.getErrorCode()))
{
removeToken(login, token);
return null;
}
// Error denied, quota...
AppLog.error(GoogleFirebaseTool.class, "sendToUser", "FirebaseMessagingException code="+e.getErrorCode()+" message="+e.getMessage()+" on token="+token, e, null);
throw new Exception("Send error: "+e.getErrorCode() + " = " +e.getMessage());
}
}