FCM, mesaj teslimine ilişkin bilgi edinmenize yardımcı olacak üç araç seti sağlar:
- Firebase konsolu mesaj teslim raporları
- Firebase Cloud Messaging Data API'den toplu Android SDK dağıtım ölçümleri
- Google BigQuery'ye kapsamlı veri aktarımı
Bu sayfada açıklanan raporlama araçlarının tamamının çalışabilmesi için Google Analytics gerekir. Projeniz için Google Analytics etkinleştirilmemişse bunu Firebase proje ayarlarınızın entegrasyonlar sekmesinden yapabilirsiniz.
Bu sayfadaki birçok istatistiğin raporlanmasının, analitik verilerinin toplu hale getirilmesi nedeniyle 24 saate kadar gecikmelere tabi olabileceğini unutmayın.
Mesaj teslim raporları
Firebase konsolundaki Raporlar sekmesinde, Bildirimler oluşturucusu ve FCM API'leri aracılığıyla gönderilenler de 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 aktarıldı. Daha fazla bilgi için bir mesajın kullanım ömrüne 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 üzeri yüklü olduğunda kullanılabilir.
- Gösterimler (yalnızca Android cihazlarda bildirim mesajları için kullanılabilir) — Uygulama arka plandayken cihazda ekran bildirimi görüntülendi.
- Açılır — 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 bkz. İletilere analiz etiketleri ekleme .
Mesaj raporlarını görüntülerken, CSV'ye aktarma seçeneğiyle birlikte görüntülenen veriler için bir tarih aralığı belirleyebilirsiniz. Ayrıca şu kriterlere göre de filtreleyebilirsiniz:
- Platform (iOS veya Android)
- Uygulama
- Özel analiz etiketleri
Mesajlara analiz etiketleri ekleme
İletileri etiketlemek, özel analiz için çok kullanışlıdır; dağıtım istatistiklerini etiketlere veya etiket kümelerine göre filtrelemenize olanak tanır. Mesaj nesnesindeki fcmOptions.analyticsLabel
alanını veya platforma özel AndroidFcmOptions
ya da ApnsFcmOptions
alanlarını ayarlayarak HTTP v1 API aracılığıyla gönderilen herhangi bir mesaja etiket ekleyebilirsiniz.
Analytics etiketleri ^[a-zA-Z0-9-_.~%]{1,50}$
biçimindeki metin dizeleridir. Etiketlerde küçük ve büyük harfler, sayılar ve aşağıdaki simgeler bulunabilir:
-
-
-
~
-
%
Maksimum uzunluk 50 karakterdir. Günde en fazla 100 benzersiz etiket belirtebilirsiniz; Bu sınırın ötesinde etiket eklenmiş iletiler raporlanmaz.
Firebase konsolu mesajlaşma Raporları sekmesinde, mevcut tüm etiketlerin bulunduğu bir listede arama yapabilir ve görüntülenen istatistikleri filtrelemek için bunları tek tek veya birlikte uygulayabilirsiniz.
FCM Data API aracılığıyla toplu teslimat verileri
Firebase Cloud Messaging Data API, Android uygulamalarını hedef alan 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 toplu veriler sağlar. Bu, gecikmeden teslim edilen mesajların yüzdesinin yanı sıra Android Aktarım Katmanı'nda kaç mesajın geciktiği veya bırakıldığıyla ilgili ayrıntıları içerir. Bu verileri değerlendirmek, mesaj dağıtımındaki genel eğilimleri ortaya çıkarabilir ve gönderme isteklerinizin performansını artırmanın etkili yollarını bulmanıza yardımcı olabilir. Raporlarda tarih aralığının kullanılabilirliği hakkında bilgi için Toplu veri zaman çizelgelerine bakın.
API, belirli bir uygulama için mevcut tüm verileri sağlar. API referans belgelerine bakın.
Veriler nasıl parçalanıyor?
Yayınlanma verileri uygulamaya, tarihe ve analiz etiketine göre bölünmüştür. API'ye yapılan bir çağrı, her tarih, uygulama ve analiz etiketi kombinasyonuna ilişkin verileri döndürecektir. Ö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?
Teslim verileri, aşağıdaki ölçümlerin her birine uyan mesajların yüzdesini özetlemektedir. Tek bir mesajın birden fazla ölçüme uyması mümkündür. Verileri toplama şeklimizdeki sınırlamalar ve metrikleri bir araya getirdiğimiz ayrıntı düzeyi nedeniyle, bazı mesaj sonuçları metriklerde hiç temsil edilmiyor, dolayısıyla aşağıdaki yüzdelerin toplamı %100 olmayacaktır.
Kabul Edilen Mesajları Say
Veri kümesinde yer alan tek sayı, FCM tarafından Android cihazlara teslim edilmek üzere kabul edilen mesajların sayısıdır. Tüm yüzdelerde payda olarak bu değer kullanılır. Bu sayının, cihazlarında kullanım ve teşhis bilgilerinin toplanmasını devre dışı bırakmış kullanıcıları hedefleyen mesajları içermeyeceğini unutmayın.
Mesaj Sonuç Yüzdeleri
MessageOutcomePercents
nesnesinin içerdiği alanlar, mesaj isteklerinin sonuçları hakkında bilgi sağlar. Kategorilerin tümü birbirini dışlar. "Mesajlarım iletiliyor mu?" gibi sorulara yanıt verebiliyor. ve "İletilerin atlanmasına ne sebep oluyor?"
Örneğin, droppedTooManyPendingMessages
alanı için yüksek bir değer, uygulama örneklerinin FCM'nin 100 bekleyen mesaj sınırını aşan hacimlerde daraltılamayan mesaj aldığının sinyalini verebilir. Bunu azaltmak için uygulamanızın onDeletedMessages
çağrılarını yönettiğinden emin olun ve daraltılabilir mesajlar göndermeyi düşünün. Benzer şekilde, droppedDeviceInactive
yüksek yüzdeleri, sunucunuzdaki kayıt belirteçlerini güncellemek, eski belirteçleri kaldırmak ve konulardaki aboneliğinizi iptal etmek için bir sinyal olabilir. Bu alandaki en iyi uygulamalar için FCM kayıt belirteçlerini yönetme konusuna bakın.
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 tüm mesaj gönderimleri hakkında ek bilgi sağlar. priorityLowered
alanı, önceliği HIGH
NORMAL
düşürülmüş 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 aktarımı, mesajların FCM arka ucu tarafından kabulü ve cihazdaki SDK'da mesaj teslimi hakkında ayrı mesaj günlükleri sağlar ( FCM Mimarisinin 2. ve 4. Adımları). Bu veriler, bireysel mesajların kabul edilmesini ve iletilmesini sağlamak için kullanışlıdır. Sonraki bölümde BigQuery verilerini dışa aktarma hakkında daha fazla bilgi edinin.
Buna karşılık, Firebase Cloud Messaging Data API, özellikle Android Aktarım Katmanında (veya FCM Mimarisinin 3. Adımında) olup bitenler hakkında toplu ayrıntılar sağlar. Bu veriler özellikle mesajların FCM arka uçlarından Android SDK'ya iletilmesine ilişkin bilgi sağlar. Bu aktarım sırasında iletilerin neden geciktiğine veya atlandığına ilişkin eğilimleri göstermek açısından özellikle yararlıdır.
Bazı durumlarda, aşağıdaki nedenlerden dolayı iki veri kümesinin tam olarak eşleşmemesi mümkündür:
- Toplanan metrikler tüm mesajların yalnızca bir kısmını örnekliyor
- Toplanan metrikler yuvarlanır
- Gizlilik eşiğinin altındaki ölçümleri sunmuyoruz
- Büyük miktarda trafiği yönetme şeklimizdeki optimizasyonlar nedeniyle mesaj sonuçlarının bir kısmı eksik.
API sınırlamaları
Veri Zaman Çizelgelerini Toplulaştırın
API, 7 günlük geçmiş verilerini döndürecektir; 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ındaki veriler mevcut olacak, ancak 16 Ocak veya sonrası için mevcut olmayacak. Ayrıca veriler en iyi şekilde sağlanmaktadır. Veri kesintisi durumunda FCM, sorunu düzeltmek için çalışacak ve sorun çözüldükten sonra verileri geri 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 ölçümlerin amacı, mesaj teslimindeki geniş eğilimlere ilişkin öngörü sağlamaktır. Ancak tüm mesaj senaryolarını %100 kapsamamaktadırlar. 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.
Etkin olmayan cihazlara gönderilen 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
alanlarında bazı yanlış sayımlara yol açabilir.
Belirli kullanıcı tercihlerine sahip cihazlara gönderilen mesajlar
Cihazlarında kullanım ve teşhis bilgilerinin toplanmasını devre dışı bırakan kullanıcıların mesajları, tercihleri doğrultusunda sayımımıza dahil edilmeyecektir.
Yuvarlama ve Minimumlar
FCM, hacimlerin yeterince büyük olmadığı durumlarda sayıları kasıtlı olarak yuvarlar ve hariç tutar.
BigQuery verilerini dışa aktarma
Daha ayrıntılı 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 aktarma, mesaj türüne veya mesajın API ya da Bildirimler oluşturucu aracılığıyla gönderilip gönderilmediğine bakılmaksızın mesajlara ilişkin tüm mevcut verileri içerir.
Aşağıdaki minimum FCM SDK sürümlerine sahip cihazlara gönderilen mesajlar için, uygulamanız için mesaj teslim verilerinin dışa aktarılmasını etkinleştirme yönünde ek seçeneğiniz vardır:
- Android 20.1.0 veya üzeri.
- iOS 8.6.0 veya üzeri
- Firebase Web SDK 9.0.0 veya üzeri
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:
Bildirimler oluşturucusunu açın ve ardından sayfanın altındaki BigQuery'ye Eriş'i tıklayın.
Firebase konsolundaki Entegrasyonlar sayfasında BigQuery kartındaki 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 konusuna bakın.
Cloud Messaging için BigQuery Export'u etkinleştirdiğinizde:
Firebase, verilerinizi BigQuery'ye aktarır . Verilerin dışa aktarım için ilk yayılımının tamamlanmasının 48 saate kadar 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şıyabilir (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 Saatiyle 04: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 eklediğ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 .
İleti teslimi verilerini dışa aktarmayı etkinleştir
FCM SDK 8.6.0 veya üzeri sürüme sahip iOS cihazları, uygulamalarının mesaj teslimi verilerinin dışa aktarımını etkinleştirebilir. FCM, hem uyarı hem de arka plan bildirimleri için veri aktarımını destekler. Bu seçenekleri etkinleştirmeden önce, BigQuery verilerini dışa aktarma bölümünde açıklandığı gibi projeniz için FCM-BiqQuery bağlantısını oluşturmanız gerekir.
Uyarı bildirimleri için teslimat verilerinin dışa aktarılmasını etkinleştirin
Bildirim hizmeti uygulama uzantılarını yalnızca uyarı bildirimleri tetikleyebildiğ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çinde çağırmanız gerekir. Yeni Teslim Edilen Bildirimlerdeki İçeriği Değiştirme hakkındaki Apple belgelerine bakın.
Alınan her bildirim için aşağıdaki çağrının yapılması gerekmektedir:
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 payload 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şleyicisindeki veri dışa aktarma API'sini çağırabilirsiniz. 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 DAMGASI | Bu sözde sütun, verilerin yüklendiği günün başlangıcına (UTC cinsinden) ilişkin 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 DAMGASI | Sunucu tarafından kaydedilen 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ğinden 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). Bu bir örnek kimliği veya 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önderimine ilişkin orijinal mesajı tanımlamak için kullanılır; sonraki mesajlar ya bir bildirim ya da veri mesajıdır. |
sdk_platform | SİCİM | Alıcı uygulamasının platformu |
uygulama ismi | SİCİM | Android uygulamaları için paket adı veya iOS uygulamaları için paket kimliği |
çöküş_anahtarı | SİCİM | Daraltma anahtarı, daraltılabilecek bir grup mesajı tanımlar. Bir cihaz bağlı olmadığında, nihai teslim için yalnızca belirli bir daraltma 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ın çevrimdışı olması durumunda mesajın FCM deposunda ne kadar süre (saniye olarak) saklanması gerektiğini belirtir |
başlık | SİCİM | Mesajın gönderildiği konunun adı (varsa) |
toplu_id | TAM SAYI | Toplu kimlik, bir konuya belirli bir gönderim gibi bir grup ilgili mesajı tanımlar |
etkinlik | SİCİM | Olayın türü. Olası değerler şunlardır:
|
analiz_etiketi | SİCİM | HTTP v1 API ile, mesajı analiz amacıyla işaretlemek için analiz etiketi, mesaj gönderilirken ayarlanabilir. |
Dışa aktarılan verilerle ne yapabilirsiniz?
Aşağıdaki bölümlerde BigQuery'de dışa aktarılan FCM verilerinize karşı çalıştırabileceğiniz sorgu örnekleri sunulmaktadır.
Uygulamaya göre gönderilen mesajları say
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ın hedeflediği 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
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
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 iletiye ilişkin etkinlikleri izlemek için, bu sorguyu değiştirerek AND message_id != ''
AND message_id = <your message id>;
ile değiştirin. .
Belirli bir konu veya kampanya için yayılma süresini hesaplayın
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 gecikmeyi hesaplayın
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;