2 votes

Codename One envoie et affiche des notifications push

J'essaie de trouver comment pousser des notifications appropriées en utilisant les serveurs Codename One. J'aimerais envoyer des notifications qui ressemblent à ceci Notifications locales - avec titre, corps, badge, etc.

Toutefois, dans le documentation pour les serveurs push, il semble y avoir juste un concernant les données utiles de la notification :

  • corps - le corps du message.

Q1 : Comment pousser (côté serveur via le serveur Codename One) et afficher (application Codename One) une notification avec un titre et un corps à partir du serveur ?

J'aimerais aussi pouvoir envoyer et recevoir des données personnalisées dans les données utiles, par exemple une référence à un contenu d'application qui devrait être ouvert dans l'application lors de l'ouverture de l'application "à partir" de cette notification push particulière.

Q2 : Puis-je envoyer n'importe quoi comme corps de notification, même mon propre JSON ?

Dans l'API Codename One, il y a cette interface de rappel (callback) PushCallback , notamment la méthode void push(String value) . Cette fonction de rappel est-elle exactement destinée à "pré-traiter/parser" les données utiles de la notification juste avant de les afficher en tant que notification locale ?

Merci.

2voto

Diamond Points 6543

Il existe plusieurs les types de messages push que vous pouvez envoyer dans Codename One, à savoir 0,1,2,3,4,5,100 et 101.

Si vous avez besoin du titre et du corps, définissez votre type de poussée à 4 et séparez le titre et le corps du texte avec ; dans votre charge utile.

Si vous avez besoin d'un push avec un contenu caché que vous pouvez utiliser pour manipuler votre application en arrière-plan, optez pour un push de type 3 . Séparez les charges utiles visibles et cachées à l'aide de la fonction ; . La section cachée est l'endroit où vous mettez votre chaîne JSON, assurez-vous que le champ vissible message ne commence pas par { ou [ . A php ressemblera à quelque chose comme ceci :

$vissibleMsg = "Cum ut quia delectus libero hic.";
$jsonString = json_encode(array("action" => "openMainForm", "id" => "1", "message" => $vissibleMsg));

$payload = $vissibleMsg . ";" . $jsonString;

Et dans votre push(String value) lire le contenu JSON caché comme suit :

@Override
public void push(String value) {
    Display.getInstance().callSerially(() -> {
        if (value.startsWith("{") || value.startsWith("[")) {
            try {
                JSONObject response = new JSONObject(value);

                switch (response.getString("action")) {
                    case "openMainForm":
                        //do whatever you want here
                        break;
                    default:
                        //perform default action here
                        break;
                }
            } catch (JSONException err) {
                Log.e(err);
            }
        }
    });
}

Si vous avez besoin d'un contenu caché et d'un contenu visible avec le titre et le corps, vous devrez envoyer le push deux fois en utilisant respectivement le type 2 et le type 4, sur la base du lien que j'ai partagé ci-dessus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X