2017-12-19 1 views
9

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.

+0

die App gelöscht? –

+0

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) –

+0

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)? –

Antwort

3

Nun kann es eine Reihe von Dingen, die ein Faktor hier sein kann:

1) Personen die App entfernt haben

2) Die Menschen haben ‚Force-Stop‘ auf Ihrer App kann verwendet

3) Daten Analytics dauert in der Regel einige Zeit, zu protokollieren es

unvollständig sein kann

4) Menschen mit einem Netzwerk nicht ihr Thema Nachrichten bis zur Ablaufzeit der Nachricht Thema zwischengespeichert haben verbunden sind (Standard ist 4 Wochen)

5) Der Benutzer hat möglicherweise die App-Daten gelöscht, was dazu führt, dass die Instanz-ID ungültig wird und Themenmeldungen ebenfalls abbestellt werden. Wenn Sie keine Wiederanmelde-Logik an Ihrem Ende haben, bleiben sie abgemeldet.

6) In neueren Android-Versionen, wenn Ihre App nicht für einige Zeit geöffnet ist (Google hat die Menge nicht bekannt gegeben) und in diesen Tagen, wenn Ihre App keine sichtbaren Komponenten hatte zB Vordergrund Service, Benachrichtigung etc .. Die App wird zwischengespeichert und Benachrichtigungen werden nicht wie gewohnt geliefert. Dies ist App standby

7) Die Zeit bis zum Ablauf der Datennachricht ist abgelaufen und zu diesem Zeitpunkt hat der Benutzer keine Verbindung zum FCM-Server und Nachrichten erhalten.

8) In einigen Situationen kann FCM möglicherweise keine Nachricht senden. Dies tritt auf, wenn zu einem Zeitpunkt, zu dem eine Verbindung hergestellt wird, zu viele Nachrichten (> 100) für Ihre App auf einem bestimmten Gerät ausstehen oder wenn das Gerät in mehr als einem Monat nicht mit FCM verbunden ist. In diesen Fällen können Sie einen Rückruf an FirebaseMessagingService.onDeletedMessages()

Es könnten auch andere Faktoren beigetragen wie das Thema Bildschirm zeigt 21k erhalten, aber es ist nicht auf die tatsächliche Anzahl bisher usw.

+0

In Firebase Analytics gibt es ein "aktive Benutzer" Dashboard, das die "einzigartigen Benutzer" pro Monat, Woche und Tag darstellt. Ich habe die folgenden Werte; Monat = 21k, Woche = 7k & Tag = 1.2k. Selbst wenn einige Leute entfernt haben, die App (marginal) oder klare Daten (marginal) oder Android O (noch marginaler) gestoppt haben, wird es nicht die "4k-Benachrichtigungen" von meiner letzten sendenden Sitzung erklären. In einer anderen Sitzung habe ich 8k, und dann in einer anderen 5k nur 3 Tage später. Ich habe nur 6 Nachrichten gesendet, seit ich FCM verwende, also bin ich weit von der 100 entfernt. –

+0

Da Ihre Frage breit ist, so war meine Antwort Kumpel. Ich hatte nicht die vollständigen Informationen. Außerdem weiß ich nicht, wie Sie Benutzer für ein bestimmtes Thema abonnieren. Könnte sein, dass sie abgemeldet werden – Kushan

Verwandte Themen