Lokalisierung von Push-Nachrichten in mobilen Anwendungen

Nachdem ich ein weiteres Backend-Projekt für mobile Anwendungen zur Unterstützung erhalten hatte, stieß ich leider auf die Tatsache, dass das Massenversenden von Push-Nachrichten an Themen nicht lokalisiert ist. Im Internet habe ich auch kein detailliertes Material zu diesem Thema gefunden. Und alles, was ich gefunden habe, bezog sich auf die Lokalisierung auf der Client-Seite, und das ist nicht immer praktisch, weil erfordert die Vorabbestimmung aller möglichen Nachrichtenoptionen und das Erstellen von Ressourcendateien mit allen möglichen Übersetzungen.

In meinem Beitrag werde ich Ihnen erklären, wie Sie Push-Nachrichten in Themen auf der Backend-Seite der mobilen Anwendung lokalisieren.

In den Beispielen werde ich die firebase-admin-Bibliothek für node.js verwenden.

Angenommen, wir müssen eine Push-Nachricht senden, um Nachrichten in der Anwendung zu veröffentlichen. Dies geschieht natürlich am besten über das Thema. Derzeit können Sie ein Gerät für ein Thema vom Server abonnieren:

admin.messaging().subscribeToTopic(tokens, 'news'), 

Sie haben das Gerät also für die Nachrichten abonniert. Aber es gibt ein Problem. Alle Clients, unabhängig vom ausgewählten Gebietsschema, erhalten denselben Push-Nachrichtentext. Hier kann eine relativ neue Funktion von Firebase zur Rettung kommen - das Senden von Nachrichten mit Filtern.

Es ist sehr einfach zu implementieren. Wenn der Client das Anwendungsgebietsschema ändert, muss der Client das Thema mit dem neuen Gebietsschema abonnieren und (leider) das Thema mit dem vorherigen Gebietsschema abbestellen

  admin.messaging().subscribeToTopic(tokens, req.prams.lang), admin.messaging().unsubscribeFromTopic(user.lang), user.save({ lang: req.prams.lang }); 

Jetzt müssen Sie nur noch Nachrichten mit den angegebenen Filtern an Themen senden:

  admin.messaging().send({ ...payloadRu, condition: "'news' in topics && 'ru' in topics" }), admin.messaging().send({ ...payloadEs, condition: "'news' in topics && 'es' in topics" }), admin.messaging().send({ ...payloadEn, condition: "'news' in topics && 'en' in topics" }), 

Eine so einfache Nachricht stellte sich heraus, im Gegensatz zu dem, was ich tun muss, um das Projekt umzugestalten. Weil eigentlich die Nachricht.

apapacy@gmail.com
20. Oktober 2019

Source: https://habr.com/ru/post/de472198/


All Articles