FCM udostępnia 3 zestawy narzędzi, które zapewniają wgląd w dostarczanie wiadomości:
- Firebase raporty dotyczące dostarczenia wiadomości w konsoli
- Zbiorcze dane o dostarczaniu pakietu Android SDK pochodzące z Interfejs API danych Firebase Cloud Messaging
- Wszechstronny eksport danych do Google BigQuery
Narzędzia do raportowania opisane na tej stronie wymagają usługi Google Analytics żeby funkcjonować. Jeśli w projekcie nie włączono usługi Google Analytics, możesz ją skonfigurować w integracje w ustawieniach projektu Firebase.
Pamiętaj, że raporty w wielu statystykach na tej stronie, mogą podlegać opóźnieniom wynoszącym maksymalnie 24 godziny ze względu na zbiorcze gromadzenie danych analitycznych.
Raporty o dostarczeniu wiadomości
W Raporty w konsoli Firebase możesz zobaczyć te dane dotyczące wiadomości wysłanych do pakietów SDK FCM na Androida i platformę Apple: w tym te wysyłane przez funkcję tworzenia powiadomień i interfejsy API FCM:
- Wysłane – wiadomość dotycząca danych lub wiadomość z powiadomieniem została dodana do kolejki została dostarczona lub została przekazana do usługi innej firmy, takiej jak APNs. . Sprawdź okres ważności wiadomości. .
- Odebrano (dostępne tylko na urządzeniach z Androidem) – wiadomość z danymi lub aplikacja odebrała powiadomienie. Te dane są dostępne gdy na urządzeniu odbierającym Android jest zainstalowany pakiet SDK FCM w wersji 18.0.1 lub jest większa.
- Wyświetlenia (dostępne tylko w przypadku powiadomień na urządzeniach z Androidem) – Powiadomienie na ekranie wyświetla się, gdy aplikacja jest uruchomiona w tle.
- Otwiera się – użytkownik otworzył wiadomość z powiadomieniem. Zaraportowane tylko w przypadku powiadomienia otrzymywane, gdy aplikacja działa w tle.
Te dane są dostępne w przypadku wszystkich wiadomości z ładunkiem powiadomień i wszystkie oznaczone wiadomości z danymi. Więcej informacji o etykietach: Dodawanie etykiet analitycznych do wiadomości
Przy przeglądaniu raportów dotyczących wiadomości możesz wybrać zakres dat dla wyświetlanych danych, z opcją eksportu do pliku CSV. Możesz też filtrować dane według tych kryteriów:
- Platforma (iOS lub Android)
- Aplikacja
- Własne etykiety Analytics
Dodawanie etykiet Analytics do wiadomości
Oznaczanie wiadomości etykietami jest bardzo przydatne przy analizie niestandardowej, ponieważ pozwala:
filtrowanie statystyk dostarczania według etykiet lub zbiorów etykiet. Możesz dodać
do dowolnej wiadomości wysyłanej przez interfejs API HTTP w wersji 1 przez ustawienie
w polu fcmOptions.analyticsLabel
w kolumnie
message lub w obiekcie
pola AndroidFcmOptions
lub ApnsFcmOptions
na danej platformie.
Etykiety Analytics to ciągi tekstowe w formacie ^[a-zA-Z0-9-_.~%]{1,50}$
.
Etykiety mogą zawierać małe i wielkie litery,
cyfry i te symbole:
-
~
%
Maksymalna długość to 50 znaków. Możesz określić do 100 niepowtarzalnych etykiet dziennie. Wiadomości z etykietami dodanymi ponad ten limit nie są zgłaszane.
Na karcie Raporty w konsoli Firebase możesz wyszukiwać listę wszystkich istniejących etykiet i zastosować je pojedynczo lub w połączeniu wyświetlane statystyki.
Zbiorcze dane o wyświetlaniu reklam przez interfejs FCM Data API
Interfejs Firebase Cloud Messaging Data API umożliwia pobieranie informacji, które pomaga zrozumieć wyniki dotyczące próśb o rozpoczęcie czatu skierowanych do Androida; aplikacji. Interfejs API dostarcza zbiorcze dane ze wszystkich danych urządzeń z Androidem z włączonym zbieraniem danych w projekcie. Są to m.in. szczegółowe informacje na temat: odsetek dostarczonych wiadomości, bez opóźnienia, a także ile wiadomości zostało opóźnionych lub pominiętych w Warstwa transportu Androida. Ocena tych danych może ujawnić ogólne trendy w dostarczaniu wiadomości i pomóc znaleźć skuteczne sposoby na zwiększenie skuteczności wysyłanych żądań. Informacje o dostępności zakresu dat w raportach znajdziesz w sekcji Harmonogramy danych zbiorczych.
Interfejs API dostarcza wszystkie dane dostępne dla danej aplikacji. Zobacz Dokumentacja API
Jak wygląda podział danych?
Dane o wyświetlaniu są podzielone według aplikacji, daty i etykiety Analytics.
Wywołanie interfejsu API zwróci wynik.
dla każdej kombinacji daty, aplikacji i etykiety analitycznej. Dla:
na przykład pojedynczy obiekt JSON androidDeliveryData
wygląda tak:
{
"appId": "1:23456789:android:a93a5mb1234efe56",
"date": {
"year": 2021,
"month": 1,
"day": 1
},
"analyticsLabel": "foo",
"data": {
"countMessagesAccepted": "314159",
"messageOutcomePercents": {
"delivered": 71,
"pending": 15
},
"deliveryPerformancePercents": {
"deliveredNoDelay": 45,
"delayedDeviceOffline": 11
}
}
Jak interpretować dane
Dane dostarczenia pokazują, jaki procent wiadomości spełnia każdy z tych warunków danych. Pojedyncza wiadomość może pasować do kilku wskaźników. Ze względu na ograniczenia w sposobie zbierania danych poziom szczegółowości, na którym zagregowaliśmy wskaźniki, niektóre wyniki dotyczące wiadomości nie są w ogóle odzwierciedlane w danych. więc poniższe wartości procentowe nie sumują się do 100%.
Liczba zaakceptowanych wiadomości
Jedyną liczbą w zbiorze danych jest liczba wiadomości, które zostały akceptowane przez FCM i dostarczane na urządzenia z Androidem. Ta wartość jest używana we wszystkich procentach jako mianownika. Pamiętaj, że ta liczba nie obejmuje wiadomości kierowane na użytkowników, którzy wyłączono zbieranie informacji o użytkowaniu i diagnostycznych w na ich urządzeniach.
Procentowe wyniki wiadomości
Pola zawarte w
MessageOutcomePercents
dostarcza informacji o
wyników żądań wiadomości. Kategorie wzajemnie się wykluczają. Może
odpowiadać na pytania, takie jak „Czy moje wiadomości są dostarczane?” i „Co powoduje
do usunięcia?”
Na przykład wysoka wartość w polu droppedTooManyPendingMessages
mogłaby
zasygnalizują, że instancje aplikacji odbierają
wiadomości bez możliwości zwijania
przekroczenie limitu 100 oczekujących wiadomości w FCM.
Aby temu zaradzić, upewnij się, że aplikacja obsługuje wywołania
onDeletedMessages
i rozważyć wysyłanie wiadomości zwijanych. Analogicznie wysokie wartości procentowe
droppedDeviceInactive
może być sygnałem do zaktualizowania tokenów rejestracji
przez usunięcie nieaktualnych tokenów i anulowanie ich subskrypcji z tematów. Zobacz
Zarządzaj tokenami rejestracji FCM
.
Procentowe wskaźniki skuteczności wyświetlania
Pola w polu DeliveryPerformancePercents
dostarcza informacje o wiadomościach, które zostały dostarczone. it
może odpowiadać na pytania, takie jak „Czy moje wiadomości były opóźnione?”, oraz
„Dlaczego wiadomości są opóźnione?” Na przykład duża wartość parametru
delayedMessageThrottled
wyraźnie wskazuje, że przekraczasz limit
maksymalne limity na urządzenie,
i należy dostosować częstotliwość wysyłania wiadomości.
Procentowe statystyki wiadomości
Ten obiekt dostarcza dodatkowe informacje o wszystkich wysyłanych wiadomościach.
Pole priorityLowered
określa procent zaakceptowanych wiadomości, które
miał zmniejszony priorytet z HIGH
na NORMAL
. Jeśli ta wartość jest wysoka, spróbuj wysyłać mniej wiadomości o wysokim priorytecie lub upewnij się, że
po wysłaniu wiadomości o wysokim priorytecie zawsze wyświetla się powiadomienie. Więcej informacji znajdziesz w dokumentacji dotyczącej priorytetu wiadomości.
Czym różnią się te dane od danych eksportowanych do BigQuery?
Eksport BigQuery udostępnia osobne dzienniki wiadomości dotyczące akceptacji wiadomości przez backend FCM i dostarczanie wiadomości w pakiecie SDK na urządzeniu (kroki 2 i 4 architekturę FCM). Te dane pomagają zapewnić, że poszczególne wiadomości zostały zaakceptowane i dostarczone. Więcej informacji o Eksportowanie danych do BigQuery znajdziesz w następnej sekcji.
Interfejs Firebase Cloud Messaging Data API zapewnia natomiast zagregowane dane. co konkretnie dzieje się w warstwie transportu Androida (lub w kroku 3 architekturę FCM). Dane te dostarczają dokładnie informacji o wyświetlaniu reklam wiadomości z backendów FCM do pakietu Android SDK. Jest to szczególnie przydatne w przypadku pokazując trendy dotyczące przyczyn opóźnienia lub utraty wiadomości podczas tego przesyłania.
Czasem może się zdarzyć, że te 2 zbiory danych nie będą dokładnie odpowiadać. z następujących powodów:
- Zagregowane wskaźniki obejmują tylko część wszystkich wiadomości.
- Dane zbiorcze są zaokrąglane.
- Nie prezentujemy danych poniżej progu umożliwiającego zachowanie prywatności
- Część wyników wiadomości jest utracona ze względu na optymalizacje i zarządzać dużym ruchem.
Ograniczenia interfejsu API
Osie czasu zbierania danych
Interfejs API zwróci dane historyczne z 7 dni. dane zwrócone przez ten interfejs API będą jednak opóźnione nawet o 5 dni. Na przykład na stronie 20 stycznia: dane z okresu 9–15 stycznia są dostępne, ale nie dla stycznia. 16 lub późniejszą. Dodatkowo udostępniamy Ci dane w miarę naszych możliwości. W przypadku jeśli wystąpi przerwa w działaniu danych, FCM rozwiąże problem i nie uzupełni danych po czy problem został rozwiązany. Przy większych przerwach w działaniu dane mogą być niedostępne przez tydzień. lub więcej.
Zakres danych
Wskaźniki dostarczane przez interfejs Firebase Cloud Messaging Data API mają pozwalają poznać ogólne trendy dostarczania wiadomości. Nie są one jednak Pełne pokrycie wszystkich scenariuszy wiadomości. Poniższe scenariusze są nieuwzględnionych w danych.
Wiadomości, które wygasły
Jeśli wygaśnie czas życia danych (TTL)
po zakończeniu danej daty dziennika, wiadomość nie będzie liczona jako
droppedTtlExpired
w tym dniu.
Wiadomości na nieaktywne urządzenia
Wiadomości wysyłane na nieaktywne urządzenia mogą nie pojawiać się w zbiorze danych
w zależności od ścieżki danych. Może to prowadzić do pewnych błędów w zliczaniu
droppedDeviceInactive
i pending
.
Wiadomości na urządzenia z określonymi preferencjami użytkownika
Użytkownicy, którzy wyłączyli zbieranie danych o użytkowaniu i diagnostyce w witrynie ich wiadomości nie będą uwzględniane w naszych liczeniach, dzięki czemu z preferencjami.
Zaokrąglanie i wartości minimalne
FCM celowo zaokrągla i wyklucza liczby, które nie są duże wystarczy.
Eksportowanie danych do BigQuery
Dane wiadomości możesz wyeksportować do BigQuery do dalszej analizy. BigQuery, pozwala analizować dane z użyciem BigQuery SQL, eksportować je do innej chmury lub użyć danych na potrzeby niestandardowych modeli ML. Eksport do BigQuery obejmuje wszystkie dostępne dane dotyczące wiadomości, niezależnie od typ wiadomości, czyli czy jest ona wysyłana przez interfejs API, w edytorze powiadomień.
W przypadku wiadomości wysyłanych do urządzeń z pakietem SDK FCM wersji, dostępna jest dodatkowa opcja umożliwiająca dane dotyczące dostawy w przypadku Twojej aplikacji:
- System Android w wersji 20.1.0 lub nowszej.
- iOS 8.6.0 lub nowszy
- pakiet SDK Firebase Web w wersji 9.0.0 lub nowszej
Poniżej znajdziesz szczegółowe informacje na temat włączania eksportu danych dla: Android oraz iOS:
Aby rozpocząć, połącz projekt z BigQuery:
Wybierz jedną z tych opcji:
Otwarta Kreator powiadomień, i na dole strony kliknij Otwórz BigQuery.
Z poziomu Integracje w konsoli Firebase kliknij Połącz w BigQuery.
Na tej stronie są wyświetlane FCM opcje eksportu dla wszystkich Aplikacje, które obsługują FCM w projekcie.
Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby włączyć BigQuery.
Więcej informacji znajdziesz w artykule Łączenie Firebase z BigQuery. .
Gdy włączysz eksport BigQuery dla Cloud Messaging:
Firebase eksportuje dane do usługi BigQuery. Notatka że początkowe udostępnienie danych do eksportu może potrwać do 48 godzin gotowe.
- Możesz ręcznie zaplanować uzupełnianie danych. z ostatnich 30 dni.
Po utworzeniu zbioru danych jego lokalizacja nie można zmienić, ale możesz skopiować zbiór danych do innej lokalizacji lub ręcznie przenieść (ponownie utworzyć) zbiór danych w innej lokalizacji. Aby się uczyć Więcej informacji znajdziesz w artykule o zmienianiu lokalizacji zbioru danych.
Firebase regularnie synchronizuje dane z projektu Firebase w BigQuery Te codzienne operacje eksportu rozpoczynają się o 4:00 czasu pacyficznego i zwykle kończy się w ciągu 24 godzin.
Domyślnie wszystkie aplikacje w projekcie są połączone z BigQuery oraz dowolnymi aplikacje, które dodasz później do projektu, zostaną automatycznie połączone BigQuery Dostępne opcje określać, które aplikacje mają wysyłać dane.
Aby wyłączyć eksportowanie danych z BigQuery: odłącz projekt w konsoli Firebase.
Włącz eksportowanie danych dotyczących dostarczania wiadomości
Urządzenia z iOS z pakietem SDK FCM w wersji 8.6.0 lub nowszej może włączyć eksportowanie danych dotyczących dostarczania wiadomości w swojej aplikacji. FCM obsługuje eksportowanie danych zarówno w przypadku alertów, jak i powiadomień w tle. Przed włączeniem tych opcji musisz najpierw utworzyć FCM Link do BigQuery w Twoim projekcie, zgodnie z opisem w sekcji Eksportowanie danych do BigQuery.
Włącz eksportowanie danych dostawy na potrzeby powiadomień o alertach
Ponieważ tylko powiadomienia o alertach mogą aktywować aplikację usługi powiadomień musisz dodać rozszerzenie usługi powiadomień do aplikacji i połączeń ten interfejs API w rozszerzeniu usługi, aby włączyć śledzenie wiadomości w sieci reklamowej. Zobacz Dokumentacja firmy Apple Modyfikowanie treści w nowo dostarczanych powiadomieniach.
Dla każdego otrzymanego powiadomienia należy wykonać następujące połączenie:
Swift
// For alert notifications, call the API inside the service extension:
class NotificationService: UNNotificationServiceExtension {
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
Messaging.extensionHelper()
.exportDeliveryMetricsToBigQuery(withMessageInfo:request.content.userInfo)
}
}
Objective-C
// For alert notifications, call the API inside the service extension:
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request
withContentHandler:(void (^)(UNNotificationContent *_Nonnull))contentHandler {
[[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:request.content.userInfo];
}
@end
Jeśli tworzysz żądania wysyłania przy użyciu interfejsu API HTTP w wersji 1, sprawdź, czy
podaj mutable-content = 1
w
obiekt ładunku.
Włącz eksport danych dostawy na potrzeby powiadomień w tle
W przypadku wiadomości w tle odebranych, gdy aplikacja działa na pierwszym planie lub w tle: możesz wywołać interfejs API eksportu danych w głównym module obsługi wiadomości z danymi w aplikacji. To połączenie musi być nawiązywane w przypadku każdego otrzymanego powiadomienia:
Swift
// For background notifications, call the API inside the UIApplicationDelegate or NSApplicationDelegate method:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
Messaging.extensionHelper().exportDeliveryMetricsToBigQuery(withMessageInfo:userInfo)
}
Objective-C
// For background notifications, call the API inside the UIApplicationDelegate or NSApplicationDelegate method:
@implementation AppDelegate
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
[[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:userInfo];
}
@end
Jakie dane są eksportowane do BigQuery?
Pamiętaj, że kierowanie reklam na nieaktualne tokeny lub nieaktywne rejestracje może zawyżać część te statystyki.
Schemat wyeksportowanej tabeli:
_PARTITIONTIME | SYGNATURA CZASOWA | Ta pseudokolumna zawiera sygnaturę czasową początku dnia (w strefie czasowej UTC) z których dane zostały wczytane. W przypadku partycji RRRRMMDD ta pseudokolumna zawiera wartość TIMESTAMP('RRRR-MM-DD'). |
event_timestamp | SYGNATURA CZASOWA | Sygnatura czasowa zdarzenia zarejestrowana przez serwer |
numer_projektu | LICZBA CAŁKOWITA | Numer projektu identyfikuje projekt, który wysłał wiadomość. |
message_id | CIĄG ZNAKÓW | Identyfikator wiadomości określa jej treść. Wygenerowane na podstawie identyfikatora aplikacji timestamp, identyfikator wiadomości w niektórych przypadkach może nie być globalnie unikalny. |
identyfikator_instancji | CIĄG ZNAKÓW | Unikalny identyfikator aplikacji, do której została wysłana wiadomość (jeśli jest dostępny). Jest taka możliwość identyfikator instancji lub identyfikator instalacji Firebase. |
message_type | CIĄG ZNAKÓW | Typ wiadomości. Może to być Wiadomość z powiadomieniem lub Wiadomość z danymi. Temat służy do identyfikowania oryginalnej wiadomości związanej z tematem lub wysłaniem kampanii; kolejne wiadomości są albo powiadomieniami, albo wiadomościami zawierającymi dane. |
sdk_platform | CIĄG ZNAKÓW | Platforma aplikacji odbiorcy |
nazwa_aplikacji | CIĄG ZNAKÓW | Nazwa pakietu aplikacji na Androida lub identyfikator pakietu w przypadku aplikacji na iOS |
klucz_zwinięcia | CIĄG ZNAKÓW | Klucz zwijania określa grupę wiadomości, które można zwinąć. Gdy urządzenie nie jest połączone, wyświetla się tylko ostatnia wiadomość z danym zwinięciem klucz jest w kolejce do ostatecznego dostarczenia |
rekrutacja priorytetowa | LICZBA CAŁKOWITA | Priorytet wiadomości. Prawidłowe wartości to „normal” i „wysoka”. W iOS: odpowiadają one priorytetom APNs 5 i 10 |
TTL | LICZBA CAŁKOWITA | Ten parametr określa czas (w sekundach), przez jaki wiadomość ma być przechowywana w pamięci FCM, gdy urządzenie jest offline |
temat | CIĄG ZNAKÓW | Nazwa tematu, do którego została wysłana wiadomość (jeśli dotyczy) |
identyfikator_zbiorczy | LICZBA CAŁKOWITA | Identyfikator zbiorczy identyfikuje grupę powiązanych wiadomości, np. określoną wyślij do tematu |
event | CIĄG ZNAKÓW | Typ zdarzenia.
Możliwe wartości to:
|
etykieta_analityki | CIĄG ZNAKÓW | Interfejs HTTP v1 API etykietę analityczną można ustawić przy wysyłaniu wiadomości, aby oznaczyć wiadomość do celów analitycznych |
Co można zrobić z wyeksportowanymi danymi?
W poniższych sekcjach znajdziesz przykłady zapytań, które możesz uruchamiać w BigQuery z wyeksportowanymi danymi FCM.
Liczba wysłanych wiadomości według aplikacji
SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_id != ''
GROUP BY 1;
Liczba unikalnych instancji aplikacji, których dotyczą wiadomości
SELECT COUNT(DISTINCT instance_id)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED';
Licznik wysłanych powiadomień
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DISPLAY_NOTIFICATION';
Zliczanie wysłanych wiadomości z danymi
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_type = 'DATA_MESSAGE';
Zliczanie wiadomości wysłanych do tematu lub kampanii
SELECT COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND bulk_id = your bulk id AND message_id != '';
Aby śledzić zdarzenia dotyczące wiadomości wysyłanej do określonego tematu, zmodyfikuj to zapytanie tak, aby
Zastąp AND message_id != ''
elementem AND message_id = <your message id>;
.
Oblicz czas zwielokrotnienia dla danego tematu lub kampanii
Czas rozpoczęcia zwielokrotnienia to moment otrzymania pierwotnego żądania, a zakończenie czas to czas, kiedy ostatnia wiadomość była kierowana na pojedyncze wystąpienie po utworzeniu konta.
SELECT TIMESTAMP_DIFF( end_timestamp, start_timestamp, MILLISECOND ) AS fanout_duration_ms, end_timestamp, start_timestamp FROM ( SELECT MAX(event_timestamp) AS end_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id ) sent CROSS JOIN ( SELECT event_timestamp AS start_timestamp FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' AND bulk_id = your bulk id AND message_type = 'TOPIC' ) initial_message;
Liczba dostarczonych wiadomości
SELECT messages_sent, messages_delivered, messages_delivered / messages_sent * 100 AS percent_delivered FROM ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_sent FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT COUNT(DISTINCT CONCAT(message_id, instance_id)) AS messages_delivered FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND (event = 'MESSAGE_DELIVERED' AND message_id IN ( SELECT message_id FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED' GROUP BY 1 ) ) delivered;
Śledzenie wszystkich zdarzeń związanych z danym identyfikatorem wiadomości i identyfikatorem instancji
SELECT *
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND message_id = 'your message id'
AND instance_id = 'your instance id'
ORDER BY event_timestamp;
Czas oczekiwania obliczony dla danego identyfikatora wiadomości i identyfikatora instancji
SELECT TIMESTAMP_DIFF( MAX(delivered_time), MIN(accepted_time), MILLISECOND ) AS latency_ms FROM ( SELECT event_timestamp AS accepted_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND event = 'MESSAGE_ACCEPTED' ) sent CROSS JOIN ( SELECT event_timestamp AS delivered_time FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND message_id = 'your message id' AND instance_id = 'your instance id' AND (event = 'MESSAGE_DELIVERED' ) delivered;