FCM, mesaj teslimi hakkında fikir edinmenize yardımcı olacak üç araç seti sağlar:
- Firebase konsol mesajı teslim raporları
- Firebase Cloud Messaging Data API'den birleştirilmiş Android SDK teslim ölçümleri
- Google BigQuery'ye kapsamlı veri aktarımı
Bu sayfada açıklanan raporlama araçlarının tümü, çalışabilmesi için Google Analytics'i gerektirir. Projeniz için Google Analytics etkinleştirilmemişse, Firebase proje ayarlarınızın entegrasyonlar sekmesinde ayarlayabilirsiniz.
Bu sayfadaki birçok istatistiğin raporlanmasının, analiz verilerinin gruplanması nedeniyle 24 saate kadar gecikmelere tabi olduğunu unutmayın.
Mesaj teslim raporları
Firebase konsolundaki Raporlar sekmesinde, Notifications bestecisi ve FCM API'leri aracılığıyla gönderilenler dahil olmak üzere Android veya Apple platformu FCM SDK'larına gönderilen iletiler için aşağıdaki verileri görüntüleyebilirsiniz:
- Gönderimler — Veri mesajı veya bildirim mesajı teslimat için kuyruğa alındı veya teslimat için APN'ler gibi üçüncü taraf bir hizmete başarıyla iletildi. Daha fazla bilgi için bir mesajın ömrü konusuna bakın.
- Alındı (yalnızca Android cihazlarda kullanılabilir) — Veri mesajı veya bildirim mesajı uygulama tarafından alındı. Bu veriler, alıcı Android cihazında FCM SDK 18.0.1 veya üstü yüklü olduğunda kullanılabilir.
- Gösterimler (yalnızca Android cihazlarda bildirim mesajları için kullanılabilir) — Ekran bildirimi, uygulama arka planda çalışırken cihazda görüntülendi.
- Açar — Kullanıcı bildirim mesajını açtı. Yalnızca uygulama arka plandayken alınan bildirimler için raporlanır.
Bu veriler, bildirim yüküne sahip tüm iletiler ve tüm etiketli veri iletileri için kullanılabilir. Etiketler hakkında daha fazla bilgi edinmek için Mesajlara analiz etiketleri ekleme bölümüne bakın.
Mesaj raporlarını görüntülerken, görüntülenen veriler için CSV'ye aktarma seçeneğiyle bir tarih aralığı ayarlayabilirsiniz. Ayrıca şu kriterlere göre filtreleme yapabilirsiniz:
- Platform (iOS veya Android)
- Uygulama
- Özel analitik etiketleri
Mesajlara analiz etiketleri ekleme
İletileri etiketleme, özel analiz için çok kullanışlıdır ve teslim istatistiklerini etiketlere veya etiket kümelerine göre filtrelemenize olanak tanır. İleti nesnesinde veya platforma özel AndroidFcmOptions
veya ApnsFcmOptions
alanlarında fcmOptions.analyticsLabel
alanını ayarlayarak HTTP v1 API aracılığıyla gönderilen herhangi bir iletiye etiket ekleyebilirsiniz.
Analytics etiketleri ^[a-zA-Z0-9-_.~%]{1,50}$
biçimindeki metin dizeleridir. Etiketler, küçük ve büyük harfleri, sayıları ve aşağıdaki sembolleri içerebilir:
-
-
-
~
-
%
Maksimum uzunluk 50 karakterdir. Günde en fazla 100 benzersiz etiket belirtebilirsiniz; bu sınırı aşan etiketlere sahip iletiler raporlanmaz.
Firebase konsolu mesajlaşma Raporları sekmesinde, mevcut tüm etiketlerin bir listesini arayabilir ve görüntülenen istatistikleri filtrelemek için bunları tek tek veya birlikte uygulayabilirsiniz.
FCM Data API aracılığıyla birleştirilmiş teslimat verileri
Firebase Cloud Messaging Data API, Android uygulamalarını hedefleyen mesaj isteklerinin sonuçlarını anlamanıza yardımcı olabilecek bilgileri almanızı sağlar. API, bir projedeki tüm veri toplama özellikli Android cihazlarda birleştirilmiş veriler sağlar. Bu, gecikmeden iletilen iletilerin yüzdesinin yanı sıra kaç iletinin Android Aktarım Katmanı içinde ertelendiği veya bırakıldığıyla ilgili ayrıntıları içerir. Bu verileri değerlendirmek, mesaj teslimindeki geniş eğilimleri ortaya çıkarabilir ve gönderme isteklerinizin performansını iyileştirmenin etkili yollarını bulmanıza yardımcı olabilir. Raporlardaki tarih aralığı kullanılabilirliği hakkında bilgi için Toplu veri zaman çizelgelerine bakın.
API, belirli bir uygulama için mevcut olan tüm verileri sağlar. API başvuru belgelerine bakın.
Veriler nasıl parçalanır?
Teslim verileri uygulama, tarih ve analiz etiketine göre ayrılır. API'ye yapılan bir çağrı, her tarih, uygulama ve analiz etiketi kombinasyonu için veri döndürür. Örneğin, tek bir androidDeliveryData
JSON nesnesi şuna benzer:
{
"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
}
}
Metrikler Nasıl Yorumlanır?
İletim verileri, aşağıdaki metriklerin her birine uyan mesajların yüzdesini gösterir. Tek bir mesajın birden çok metriğe uyması mümkündür. Verileri nasıl topladığımızdaki sınırlamalar ve ölçümleri topladığımız ayrıntı düzeyi nedeniyle, bazı mesaj sonuçları ölçümlerde hiç temsil edilmez, bu nedenle aşağıdaki yüzdelerin toplamı %100 olmayacaktır.
Kabul Edilen Mesajları Say
Veri kümesine dahil edilen tek sayı, Android cihazlara teslim edilmek üzere FCM tarafından kabul edilen iletilerin sayısıdır. Tüm yüzdeler payda olarak bu değeri kullanır. Bu sayıya, cihazlarında kullanım ve teşhis bilgilerinin toplanmasını devre dışı bırakan kullanıcıları hedefleyen mesajların dahil edilmediğini unutmayın.
Mesaj Sonuç Yüzdeleri
MessageOutcomePercents
nesnesinde bulunan alanlar, mesaj isteklerinin sonuçları hakkında bilgi sağlar. Kategorilerin tümü birbirini dışlar. "Mesajlarım teslim ediliyor mu?" gibi soruları yanıtlayabilir. ve "Mesajların düşmesine neden olan nedir?"
Örneğin, droppedTooManyPendingMessages
alanı için yüksek bir değer, uygulama örneklerinin FCM'nin 100 bekleyen mesaj sınırını aşan , daraltılamaz mesaj hacimleri aldığını gösterebilir. Bunu azaltmak için uygulamanızın onDeletedMessages
çağrılarını işlediğinden emin olun ve katlanabilir mesajlar göndermeyi düşünün. Benzer şekilde, droppedDeviceInactive
için yüksek yüzdeler, sunucunuzdaki kayıt jetonlarını güncellemek, eski jetonları kaldırmak ve konulardan çıkmak için bir sinyal olabilir. Bu alandaki en iyi uygulamalar için bkz . FCM kayıt belirteçlerini yönetme .
Teslimat Performansı Yüzdeleri
DeliveryPerformancePercents
nesnesindeki alanlar, başarıyla teslim edilen iletiler hakkında bilgi sağlar. "Mesajlarım gecikti mi?" gibi sorulara cevap verebiliyor. ve "Mesajlar neden gecikiyor?" Örneğin, delayedMessageThrottled
için yüksek bir değer , cihaz başına maksimum sınırları aştığınızı açıkça gösterir ve mesaj gönderme hızınızı ayarlamanız gerekir.
Mesaj İçgörü Yüzdeleri
Bu nesne, gönderilen tüm mesajlar hakkında ek bilgi sağlar. priorityLowered
alanı, önceliği HIGH
NORMAL
düşürülen kabul edilen mesajların yüzdesini ifade eder. Bu değer yüksekse, daha az yüksek öncelikli mesaj göndermeyi deneyin veya yüksek öncelikli bir mesaj gönderildiğinde her zaman bir bildirim görüntülediğinizden emin olun. Daha fazla bilgi için mesaj önceliğine ilişkin belgelerimize bakın
Bu verilerin BigQuery'ye aktarılan verilerden farkı nedir?
BigQuery dışa aktarma, FCM arka ucu tarafından ileti kabulü ve cihazdaki SDK'da ileti teslimi hakkında ayrı ileti günlükleri sağlar ( FCM Mimarisinin 2. ve 4. Adımları). Bu veriler, bireysel mesajların kabul edildiğinden ve teslim edildiğinden emin olmak için kullanışlıdır. Bir sonraki bölümde BigQuery verilerini dışa aktarma hakkında daha fazla bilgi edinin.
Buna karşılık, Firebase Bulut Mesajlaşma Veri API'si, özellikle Android Aktarım Katmanında (veya FCM Mimarisinin 3. Adımında) neler olduğu hakkında birleştirilmiş ayrıntılar sağlar. Bu veriler özellikle, mesajların FCM arka uçlarından Android SDK'ya teslimi hakkında bilgi sağlar. Bu aktarım sırasında iletilerin neden geciktiğine veya bırakıldığına ilişkin eğilimleri göstermek açısından özellikle kullanışlıdır.
Bazı durumlarda, iki veri setinin aşağıdakilerden dolayı tam olarak eşleşmemesi mümkündür:
- Birleştirilmiş metrikler, tüm mesajların yalnızca bir kısmını örnek alır
- Birleştirilmiş metrikler yuvarlanır
- Bir gizlilik eşiğinin altındaki ölçümleri sunmuyoruz
- Büyük trafik hacmini yönetme şeklimizde yaptığımız optimizasyonlar nedeniyle mesaj sonuçlarının bir kısmı eksik.
API sınırlamaları
Toplu Veri Zaman Çizelgeleri
API, 7 günlük geçmiş verilerini döndürür; ancak, bu API tarafından döndürülen veriler 5 güne kadar gecikecektir. Örneğin, 20 Ocak'ta, 9 Ocak - 15 Ocak arası veriler kullanılabilir, ancak 16 Ocak veya sonrası için kullanılamaz. Ek olarak, veriler en iyi şekilde sağlanır. Bir veri kesintisi durumunda, FCM düzeltmeye devam edecek ve sorun giderildikten sonra verileri tekrar doldurmayacaktır. Daha büyük kesintilerde, veriler bir hafta veya daha uzun süre kullanılamayabilir.
Veri Kapsamı
Firebase Cloud Messaging Data API tarafından sağlanan metrikler, mesaj teslimine ilişkin geniş eğilimler hakkında bilgi sağlamayı amaçlamaktadır. Ancak, tüm mesaj senaryolarının %100 kapsamını sağlamazlar. Aşağıdaki senaryolar, metriklere yansıtılmayan bilinen sonuçlardır.
Daraltılmış Mesajlar
Başka bir mesaj tarafından daraltılan mesajlar, veri kümesinde görünmez.
Aktif olmayan cihazlara mesajlar
Etkin olmayan cihazlara gönderilen mesajlar, kullandıkları veri yoluna bağlı olarak veri kümesinde görünebilir veya görünmeyebilir. Bu, droppedDeviceInactive
ve pending
alanlarda bazı yanlış sayımlara yol açabilir.
Belirli kullanıcı tercihlerine sahip cihazlara mesajlar
Cihazlarında kullanım ve teşhis bilgilerinin toplanmasını devre dışı bırakan kullanıcıların mesajları, tercihlerine uygun olarak sayımımıza dahil edilmeyecektir.
Yuvarlama ve Minimumlar
FCM, hacimlerin yeterince büyük olmadığı sayıları kasıtlı olarak yuvarlar ve hariç tutar.
BigQuery verilerini dışa aktarma
Daha fazla analiz için mesaj verilerinizi BigQuery'ye aktarabilirsiniz. BigQuery, verileri BigQuery SQL kullanarak analiz etmenize, başka bir bulut sağlayıcıya aktarmanıza veya verileri özel makine öğrenimi modelleriniz için kullanmanıza olanak tanır. BigQuery'ye dışa aktarma, mesaj türünden veya mesajın API veya Notifications oluşturucu aracılığıyla gönderilip gönderilmediğinden bağımsız olarak, mesajlar için mevcut tüm verileri içerir.
Aşağıdaki FCM SDK minimum sürümlerine sahip cihazlara gönderilen mesajlar için, uygulamanız için mesaj teslim verilerinin dışa aktarılmasını etkinleştirmek üzere ek seçeneğiniz vardır:
- Android 20.1.0 veya üstü.
- iOS 8.6.0 veya üstü
- Firebase Web SDK 9.0.0 veya üstü
Android ve iOS için veri aktarımını etkinleştirmeyle ilgili ayrıntılar için aşağıya bakın.
Başlamak için projenizi BigQuery'ye bağlayın:
Aşağıdaki seçeneklerden birini seçin:
Bildirim oluşturucuyu açın ve ardından sayfanın altındaki BigQuery'ye Eriş'i tıklayın.
Firebase konsolundaki Entegrasyonlar sayfasından, BigQuery kartında Bağlantı'yı tıklayın.
Bu sayfa, projedeki tüm FCM özellikli uygulamalar için FCM dışa aktarma seçeneklerini görüntüler.
BigQuery'yi etkinleştirmek için ekrandaki talimatları izleyin.
Daha fazla bilgi için Firebase'i BigQuery'ye Bağlama bölümüne bakın.
Cloud Messaging için BigQuery dışa aktarmayı etkinleştirdiğinizde:
Firebase, verilerinizi BigQuery'ye aktarır . Dışa aktarma için verilerin ilk yayılmasının tamamlanmasının 48 saat sürebileceğini unutmayın.
Veri kümesi oluşturulduktan sonra konum değiştirilemez, ancak veri kümesini farklı bir konuma kopyalayabilir veya veri kümesini manuel olarak farklı bir konuma taşıyabilirsiniz (yeniden oluşturabilirsiniz). Daha fazla bilgi edinmek için bkz . Veri kümesi konumunu değiştirme .
Firebase, verilerinizin Firebase projenizden BigQuery'ye düzenli senkronizasyonunu ayarlar. Bu günlük ihracat işlemleri, Pasifik Saati ile sabah 4:00'te başlar ve genellikle 24 saat içinde tamamlanır.
Varsayılan olarak, projenizdeki tüm uygulamalar BigQuery'ye bağlıdır ve daha sonra projeye ekleyeceğiniz tüm uygulamalar otomatik olarak BigQuery'ye bağlanır. Hangi uygulamaların veri göndereceğini yönetebilirsiniz .
BigQuery dışa aktarmayı devre dışı bırakmak için Firebase konsolunda projenizin bağlantısını kaldırın .
Mesaj teslimi verilerini dışa aktarmayı etkinleştir
FCM SDK 8.6.0 veya sonraki sürümüne sahip iOS cihazları, uygulamalarının mesaj teslimi verilerinin dışa aktarılmasını etkinleştirebilir. FCM, hem uyarı hem de arka plan bildirimleri için veri aktarımını destekler. Bu seçenekleri etkinleştirmeden önce, projeniz için BigQuery veri dışa aktarma bölümünde açıklandığı gibi FCM-BiqQuery bağlantısını oluşturmanız gerekir.
Uyarı bildirimleri için teslimat verilerinin dışa aktarılmasını etkinleştir
Yalnızca uyarı bildirimleri, bildirim hizmeti uygulama uzantılarını tetikleyebileceğinden, uygulamanıza bir bildirim hizmeti uzantısı eklemeniz ve görüntülü mesaj izlemeyi etkinleştirmek için bu API'yi bir hizmet uzantısı içinden çağırmanız gerekir. Apple'ın Yeni Teslim Edilen Bildirimlerdeki İçeriği Değiştirme hakkındaki belgelerine bakın.
Alınan her bildirim için aşağıdaki arama yapılmalıdır:
Süratli
// 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)
}
}
Amaç-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
HTTP v1 API'sini kullanarak gönderme istekleri oluşturuyorsanız, yük nesnesinde mutable-content = 1
belirttiğinizden emin olun.
Arka plan bildirimleri için teslimat verilerinin dışa aktarılmasını etkinleştirin
Uygulama ön planda veya arka plandayken alınan arka plan mesajları için, ana uygulamanın veri mesajı işleyicisi içindeki veri dışa aktarma API'sini arayabilirsiniz. Bu çağrı, alınan her bildirim için yapılmalıdır:
Süratli
// 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)
}
Amaç-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
BigQuery'ye hangi veriler aktarılır?
Eski belirteçleri veya etkin olmayan kayıtları hedeflemenin bu istatistiklerin bazılarını şişirebileceğini unutmayın.
Dışa aktarılan tablonun şeması şöyledir:
_PARTITIONTIME | ZAMAN BİLGİSİ | Bu sözde sütun, verilerin yüklendiği günün başlangıcı (UTC'de) için bir zaman damgası içerir. YYYYMMDD bölümü için bu sözde sütun, TIMESTAMP('YYYY-MM-DD') değerini içerir. |
event_timestamp | ZAMAN BİLGİSİ | Sunucu tarafından kaydedildiği şekliyle olay zaman damgası |
Proje numarası | TAM SAYI | Proje numarası, mesajı gönderen projeyi tanımlar. |
Mesaj Kimliği | SİCİM | Mesaj kimliği bir mesajı tanımlar. Uygulama Kimliği ve zaman damgasından oluşturulan mesaj kimliği, bazı durumlarda genel olarak benzersiz olmayabilir. |
örnek_kimliği | SİCİM | Mesajın gönderildiği uygulamanın benzersiz kimliği (varsa). Bir bulut sunucusu kimliği veya bir Firebase kurulum kimliği olabilir. |
mesaj tipi | SİCİM | Mesajın türü. Bildirim mesajı veya Veri mesajı olabilir. Konu, bir konu veya kampanya gönderimi için orijinal mesajı tanımlamak için kullanılır; sonraki mesajlar bir bildirim veya veri mesajıdır. |
sdk_platform | SİCİM | Alıcı uygulamanın platformu |
uygulama ismi | SİCİM | Android uygulamaları için paket adı veya iOS uygulamaları için paket kimliği |
daraltma_anahtarı | SİCİM | Kapatma anahtarı, daraltılabilen bir mesaj grubunu tanımlar. Bir cihaz bağlı olmadığında, nihai teslimat için yalnızca belirli bir kapatma anahtarına sahip son mesaj kuyruğa alınır |
öncelik | TAM SAYI | Mesajın önceliği. Geçerli değerler "normal" ve "yüksek"tir. iOS'ta bunlar APN öncelikleri 5 ve 10'a karşılık gelir |
ttl | TAM SAYI | Bu parametre, cihaz çevrimdışıysa mesajın FCM depolamasında ne kadar süre (saniye cinsinden) tutulması gerektiğini belirtir. |
başlık | SİCİM | İletinin gönderildiği konunun adı (varsa) |
toplu_kimlik | TAM SAYI | Toplu kimlik, belirli bir konuya gönderme gibi bir ilgili mesaj grubunu tanımlar. |
etkinlik | SİCİM | Olayın türü. Olası değerler şunlardır:
|
analytics_label | SİCİM | HTTP v1 API ile, iletiyi analitik amaçlarla işaretlemek için ileti gönderilirken analitik etiketi ayarlanabilir. |
Dışa aktarılan verilerle ne yapabilirsiniz?
Aşağıdaki bölümlerde, dışa aktarılan FCM verilerinize karşı BigQuery'de çalıştırabileceğiniz sorgu örnekleri sunulmaktadır.
Uygulamaya göre gönderilen mesajları sayın
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;
Mesajlar tarafından hedeflenen benzersiz uygulama örneklerini sayın
SELECT COUNT(DISTINCT instance_id) FROM `project ID.firebase_messaging.data` WHERE _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD') AND event = 'MESSAGE_ACCEPTED';
Gönderilen bildirim mesajlarını sayın
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';
Gönderilen veri mesajlarını sayın
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';
Bir konuya veya kampanyaya gönderilen mesajları sayın
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 != '';
Belirli bir konuya gönderilen bir mesajın olaylarını izlemek için, bu sorguyu AND message_id != ''
yerine AND message_id = <your message id>;
.
Belirli bir konu veya kampanya için yayılma süresini hesaplama
Yayılma başlangıç zamanı, orijinal isteğin alındığı zamandır ve bitiş zamanı, tek bir örneği hedefleyen son bireysel mesajın oluşturulduğu zamandır.
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;
Teslim edilen mesajların yüzdesini sayın
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;
Belirli bir mesaj kimliği ve örnek kimliği için tüm etkinlikleri izleyin
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;
Belirli bir mesaj kimliği ve örnek kimliği için hesaplama gecikmesi
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;