Ich verwende FCM, um Benachrichtigungen an meine Apps-Benutzer zu senden. Ich verwende auch Firebase Analytics, um ein Feedback über das Verhalten der App zu erhalten.FCM liefert keine Benachrichtigung an alle Topic-Abonnenten (Datenbenachrichtigung)
Ich habe eine App, die ein bestimmtes Thema abonniert, wenn sie ihre Standardaktivität startet. Also im Grunde jeder Benutzer, der mindestens einmal die App gestartet hat, ist ein Thema Teilnehmer. Von Firebase Analytics kann ich 21374 first_open in den Ereignisprotokollen der letzten 30 Tage sehen. Ich kann diesen Betrag auch im Dashboard "Aktive Benutzer" sehen.
Also grundsätzlich mindestens 21k Abonnenten sollte für das Thema verfügbar sein.
Ich schob gestern eine Benachrichtigung zu diesem Thema. Es ist eine Datenbenachrichtigung, also gibt es kein Problem mit dem Hintergrund/Vordergrund/nicht gestarteten Zustand der App.
In der OnMessageReceived-Methode protokolliere ich ein Ereignis auf Firebase Analytics. Und anscheinend haben nur 2,9K Benutzer die Benachrichtigung erhalten.
Was kann diesen Unterschied zwischen der Zahl der Abonnenten und der Benachrichtigung, die effektiv an die Benutzer weitergegeben wird, erklären?
Einige Elemente, das verknüpft werden kann:
Die App auf dem Speicher vor 3 Tagen aktualisiert. Daher haben die Benutzer die neue Version der App möglicherweise nicht gestartet. Ein Update sollte jedoch nicht das Thema entfernen, das bereits von der vorherigen Version abonniert wurde. Ich habe auch einige Tests durchgeführt, um dies zu überprüfen, und ein Update entfernt nicht das Thema, das von einer früheren Version abonniert wurde (es sei denn, die App wird zuerst deinstalliert). Also sollte es nicht der Grund für dieses Problem sein.
Die App wurde mit einer neuen Version des GooglePlayServices/Firebase Paket aktualisiert (von 9,2 bis 10.0.1) Ist es durch die ältere Version von GooglePlayServices/Firebase Paket abonniert alle Themen entfernen?
Gibt es einen anderen Grund für die auf eine Differenz zwischen den Teilnehmern führen kann Zählung & Benachrichtigung Zahl geliefert bekommen?
@Bob Snyder
Hier ist, wie ich überprüfen, für die Google-Version Play-Dienste:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
int success = googleApiAvailability.isGooglePlayServicesAvailable(this);
if(success != ConnectionResult.SUCCESS) {
googleApiAvailability.makeGooglePlayServicesAvailable(this);
}
FirebaseMessaging.getInstance().subscribeToTopic("mytopic");
Die Version der Google Play-Dienste verwendet wird, um die Umwelt mobil im Zusammenhang + tragen, Viele Nutzer haben Schwierigkeiten, ihre GooglePlayService-Version zu aktualisieren. Daher verwende ich im Allgemeinen eine niedrigere Version als die neueste Version und aktualisiere sie nur bei Bedarf.
@Jorgesys
Mein FirebaseMessagingService ist eigentlich ganz einfach:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Logger.d("From: " + remoteMessage.getFrom());
MyFirebaseAnalytics mAnalytics = new MyFirebaseAnalytics(this);
mAnalytics.logEvent("notif", "reception");
Map<String, String> data = remoteMessage.getData();
// Check if message contains a data payload.
if (data.size() > 0) {
Logger.d("Message data payload: " + data);
}
Die LogEvent Methode der ist auf Firebase die Ereignisprotokollierung.
die App gelöscht? –
Firebase Analytics meldet 7.8k app_remove, so ist es nicht das Problem. Und die 7.8k App wurde möglicherweise von einigen Benutzern entfernt, die die App im letzten Monat installiert haben. Es fehlen immer noch mehr als 10k Teilnehmer (21k - 7,8k entfernt - 2,9k empfangen) –
Wenn Sie "Datenbenachrichtigung" sagen, meinen Sie, dass die Nachricht sowohl [Datennutzlast als auch Benachrichtigungsnutzlast] hat (https: // firebase. google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages)? –