FCM, mesaj teslimiyle ilgili bilgi edinmenize yardımcı olacak üç araç seti sunar:
- Firebase konsolu mesaj teslimi raporları
- Firebase Cloud Messaging Data API'den toplu Android SDK yayınlama metrikleri
- Google BigQuery'ye kapsamlı veri aktarımı
Bu sayfada açıklanan raporlama araçlarının tümünün çalışabilmesi için Google Analytics'e ihtiyaç vardır. Projenizde Google Analytics etkinleştirilmemişse Firebase proje ayarlarınızın entegrasyonlar sekmesinden Google Analytics'i kurabilirsiniz.
Analiz verilerinin toplu olarak işlenmesi nedeniyle, bu sayfadaki istatistiklerin birçoğunun raporlanmasında 24 saate varan gecikmeler olabileceğini unutmayın.
İleti teslimi raporları
Firebase konsolundaki Raporlar sekmesinde, Notifications oluşturucu ve FCM API'leri aracılığıyla gönderilenler de dahil olmak üzere Android veya Apple platformu FCM SDK'larına gönderilen mesajlar için aşağıdaki verileri görüntüleyebilirsiniz:
- Göndermeler: Veri mesajı veya bildirim mesajı teslim edilmek üzere sıraya alınmıştır veya teslim edilmek üzere APN'ler gibi bir üçüncü taraf hizmetine başarıyla iletir. Daha fazla bilgi için bir mesajın ömrü bölümü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 cihazda FCM SDK 18.0.1 veya sonraki bir sürüm yüklü olduğunda kullanılabilir.
- Gösterimler (yalnızca Android cihazlarda bildirim mesajları için kullanılabilir): Uygulama arka plandayken cihazda görüntü bildirimi gösterilmiştir.
- Aç - Kullanıcı, bildirim mesajını açmıştır. Yalnızca uygulama arka plandayken alınan bildirimler için raporlanır.
Bu veriler, bildirim yükü olan tüm mesajlar ve etiketli veri mesajları için kullanılabilir. Etiketler hakkında daha fazla bilgi edinmek için İletilere analiz etiketleri ekleme bölümüne bakın.
Mesaj raporlarını görüntülerken, CSV'ye aktarma seçeneğiyle, görüntülenen veriler için bir tarih aralığı belirleyebilirsiniz. Şu ölçütlere göre de filtreleme yapabilirsiniz:
- Platform (iOS veya Android)
- Uygulamaya
- Özel analiz etiketleri
İletilere Analytics etiketleri ekleme
İletileri etiketlemek, özel analiz için çok kullanışlıdır. Bu sayede, gönderme istatistiklerini etiketlere veya etiket gruplarına göre filtreleyebilirsiniz. message nesnesinde fcmOptions.analyticsLabel
alanını ayarlayarak veya platforma özgü AndroidFcmOptions
ya da ApnsFcmOptions
alanlarını ayarlayarak HTTP v1 API aracılığıyla gönderilen tüm mesajlara etiket ekleyebilirsiniz.
Analytics etiketleri, ^[a-zA-Z0-9-_.~%]{1,50}$
biçimindeki metin dizeleridir.
Etiketler küçük ve büyük harfler, sayılar ve aşağıdaki simgeleri 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 konsolunun mesajlaşma Raporlar sekmesinde, mevcut tüm etiketlerin bulunduğu bir listede arama yapabilir ve gösterilen istatistikleri filtrelemek için etiketleri tek tek veya kombinasyon halinde uygulayabilirsiniz.
FCM Data API aracılığıyla toplu teslim verileri
Firebase Cloud Messaging Data API, Android uygulamalarına hedeflenen mesaj isteklerinin sonuçlarını anlamanıza yardımcı olabilecek bilgileri almanızı sağlar. API, bir projede veri toplama özelliğinin etkin olduğu tüm Android cihazlardan birleştirilmiş veriler sağlar. Bu bilgiler arasında, gecikme olmadan teslim edilen mesajların yüzdesi ve Android Taşıma Katmanı'nda geciken veya bırakılan mesaj sayısı yer alır. Bu verilerin değerlendirilmesi, mesaj teslimindeki geniş trendleri 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 çizelgeleri konusuna bakın.
API, belirli bir uygulama için mevcut tüm verileri sağlar. API referans belgelerini inceleyin.
Verilerin dökümü nasıl?
Yayınlanma 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 şu şekilde görünür:
{
"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
}
}
Metrikleri Yorumlama
Teslim verileri, aşağıdaki metriklerin her birine uyan mesajların yüzdesini gösterir. Tek bir mesaj birden çok metriğe sığabilir. Verileri toplama şeklimizle ilgili sınırlamalar ve metrikleri topladığımız ayrıntı düzeyi nedeniyle bazı mesaj sonuçları metriklerde hiç temsil edilmez. Bu nedenle aşağıdaki yüzdelerin toplamı %100 olmaz.
Kabul Edilen İletilerin Sayısı
Veri kümesine dahil edilen tek sayı, FCM tarafından Android cihazlara teslim edilmek üzere kabul edilen mesajların sayısıdır. Tüm yüzdeler bu değeri payda olarak kullanır. Bu sayıya, cihazlarında kullanım ve teşhis bilgilerinin toplanmasını devre dışı bırakan kullanıcıları hedefleyen mesajları içermez.
Mesaj Sonucu Yüzdeleri
MessageOutcomePercents
nesnesinin içerdiği alanlar, mesaj isteklerinin sonuçları hakkında bilgi sağlar. Bu kategorilerin tümü birlikte kullanılamaz. "İletilerim teslim ediliyor mu?" ve "İletilerimin kaybolmasının nedeni ne?" gibi soruları yanıtlayabilir.
Örneğin, droppedTooManyPendingMessages
alanı için yüksek bir değer, uygulama örneklerinin daraltılamayan mesaj hacminin, FCM'nin bekleyen 100 mesaj sınırını aştığına dair sinyal alabilir.
Bu sorunu azaltmak için uygulamanızın onDeletedMessages
'e yapılan çağrıları işlediğinden emin olun ve daraltılabilir mesajlar gönderin. Benzer şekilde, droppedDeviceInactive
için yüksek yüzdeler, sunucunuzdaki kayıt jetonlarını güncellemeye, eski jetonları kaldırmaya ve konulardaki e-posta aboneliklerini iptal etmeye yönelik bir sinyal olabilir. Bu alandaki en iyi uygulamalar için FCM kayıt jetonlarını yönetme bölümüne bakın.
Yayın Performansı Yüzdeleri
DeliveryPerformancePercents
nesnesindeki alanlar, başarıyla teslim edilen iletiler hakkında bilgi sağlar. "İletilerim gecikti mi?" ve "İletiler neden gecikiyor?" gibi soruları yanıtlayabilir. Örneğin, delayedMessageThrottled
için yüksek bir değer, cihaz başına maksimum sınırları aştığınızı açıkça belirtir ve mesaj gönderme hızınızı ayarlamanız gerekir.
Mesaj Analizi Yüzdeleri
Bu nesne, tüm ileti gönderme işlemleri hakkında ek bilgiler sağlar. priorityLowered
alanı, HIGH
olan önceliği NORMAL
değerine düşürülmüş, kabul edilmiş mesajların yüzdesini ifade eder. Bu değer yüksekse daha az sayıda yüksek öncelikli mesaj göndermeyi deneyin veya yüksek öncelikli bir mesaj gönderildiğinde her zaman bildirim gösterildiğinden emin olun. Daha fazla bilgi için mesaj önceliğiyle ilgili dokümanlarımıza göz atın
Bu verilerin BigQuery'ye aktarılan verilerden farkı nedir?
BigQuery Export, FCM arka ucu tarafından mesaj kabulü ve cihazdaki SDK'da mesaj teslimi hakkında bağımsız mesaj günlükleri sunar (FCM Mimarisinin 2. ve 4. adımları). Bu veriler, tek tek mesajların kabul edilip teslim edilmesini sağlamak için yararlıdır. Bir sonraki bölümde BigQuery verilerini dışa aktarma hakkında daha fazla bilgi edinebilirsiniz.
Buna karşılık Firebase Cloud Messaging Data API, özellikle Android Taşıma Katmanı'nda (veya FCM Mimarisi'nin 3. Adımında) neler olduğuyla ilgili toplu ayrıntılar sağlar. Bu veriler, özellikle mesajların FCM arka uçlarından Android SDK'ya teslim edilmesiyle ilgili analizler sağlar. Özellikle iletilerin bu aktarım sırasında neden geciktiği veya atıldığıyla ilgili trendleri göstermek açısından kullanışlıdır.
Bazı durumlarda, aşağıdaki nedenlerle iki veri kümesi tam olarak eşleşmeyebilir:
- Toplu metrikler tüm mesajların yalnızca bir kısmını örnek olarak alır
- Toplu metrikler yuvarlanır
- Gizlilik eşiğinin altındaki metrikleri sunmayız
- Yüksek hacimli trafiği yönetme biçimimize yönelik optimizasyonlar nedeniyle mesaj sonuçlarının bir kısmı eksik.
API'nin sınırlamaları
Toplu Veri Zaman Çizelgeleri
API 7 günlük geçmiş verileri döndürür; ancak bu API tarafından döndürülen veriler 5 güne kadar gecikir. Örneğin, 20 Ocak'ta, 9 Ocak-15 Ocak arasındaki veriler kullanılabilir olacaktır. Ancak 16 Ocak veya sonrası için geçerli değildir. Ayrıca, veriler en iyi şekilde sağlanmıştır. Veri kesintisi durumunda FCM, sorunu düzeltmek için çalışır ve sorun çözüldükten sonra verileri doldurmaz. 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 metriklerin amacı, geniş mesaj teslimi trendleri hakkında bilgi sağlamaktır. Ancak, tüm mesaj senaryolarını% 100 kapsamaz. Aşağıdaki senaryolarda, metriklere yansıtılmayan bilinen sonuçlar yer alır.
Süresi dolan iletiler
Geçerlilik Süresi (TTL), belirtilen günlük tarihinin bitiminden sonra sona ererse mesaj, bu tarihte droppedTtlExpired
olarak sayılmaz.
Etkin 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 durum, droppedDeviceInactive
ve pending
alanlarında yanlış sayıma 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, tercihlerine uygun olması için mesajları sayıma dahil edilmez.
Yuvarlama ve Minimum Değerler
FCM, hacimlerin yeterince yüksek olmadığı durumlarda 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 özel ML modellerinizde kullanmak istediğiniz verileri kullanmanıza olanak tanır. BigQuery'ye aktarma işlemi, mesaj türüne veya mesajın API ya da Notifications oluşturucu aracılığıyla gönderilmesine bakılmaksızın, mesajlar için mevcut tüm verileri içerir.
Aşağıdaki FCM SDK minimum sürümlerine sahip cihazlara gönderilen mesajlarda, uygulamanız için mesaj teslimi verilerinin dışa aktarılmasını etkinleştirebilirsiniz:
- Android 20.1.0 veya sonraki sürümler.
- iOS 8.6.0 veya sonraki sürümler
- Firebase Web SDK 9.0.0 veya sonraki sürümler
Android ve iOS için veri dışa aktarmayı etkinleştirme hakkında ayrıntılı bilgiyi aşağıda bulabilirsiniz.
Başlamak için projenizi BigQuery'ye bağlayın:
Aşağıdaki seçeneklerden birini belirleyin:
Bildirim oluşturucuyu açın, ardından sayfanın alt kısmında BigQuery'ye Erişin'i tıklayın.
Firebase konsolundaki Entegrasyonlar sayfasında, BigQuery kartında Bağla'yı tıklayın.
Bu sayfada, projedeki FCM özellikli tüm uygulamalar için FCM dışa aktarma seçenekleri gösterilir.
BigQuery'yi etkinleştirmek için ekrandaki talimatları uygulayın.
Daha fazla bilgi için Firebase'i BigQuery'ye bağlama başlıklı makaleyi inceleyin.
Cloud Messaging için BigQuery verilerini dışa aktarmayı etkinleştirdiğinizde:
Firebase, verilerinizi BigQuery'ye aktarır. Dışa aktarma işlemi için verilerin ilk yayılmasının 48 saat kadar sürebileceğini unutmayın.
- Son 30 gün için veri doldurma işlemlerini manuel olarak planlayabilirsiniz.
Veri kümesi oluşturulduktan sonra konumu değiştirilemez ancak veri kümesini farklı bir konuma kopyalayabilir veya veri kümesini farklı bir konuma manuel olarak taşıyabilirsiniz (yeniden oluşturabilirsiniz). Daha fazla bilgi için Veri kümesi konumunu değiştirme bölümüne bakın.
Firebase, Firebase projenizdeki verilerinizi BigQuery'ye düzenli olarak senkronize eder. Bu günlük dışa aktarma işlemleri Pasifik Saati ile 04:00'te başlar ve genellikle 24 saat içinde biter.
Varsayılan olarak, projenizdeki tüm uygulamalar BigQuery'ye, daha sonra projeye eklediğiniz tüm uygulamalar ise otomatik olarak BigQuery'ye bağlanır. Hangi uygulamaların veri göndereceğini yönetebilirsiniz.
BigQuery Export'u 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 bir sürüme sahip iOS cihazlar, uygulamalarının mesaj gönderme verilerini dışa aktarma özelliğini etkinleştirebilir. FCM, hem uyarı hem de arka plan bildirimleri için verileri dışa aktarmayı destekler. Bu seçenekleri etkinleştirmeden önce, BigQuery veri 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 teslim verilerini dışa aktarmayı etkinleştir
Bildirim hizmeti uygulama uzantılarını yalnızca uyarı bildirimleri tetikleyebildiğinden, görüntülü mesaj izlemeyi etkinleştirmek için uygulamanıza bir bildirim hizmeti uzantısı eklemeniz ve bu API'yi bir hizmet uzantısında çağırmanız gerekir. Apple'ın Yeni Yayınlanan Bildirimlerde İçeriği Değiştirme ile ilgili dokümanlarına bakın.
Aşağıdaki çağrı, alınan her bildirim için yapılmalıdır:
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
Gönderme isteklerini HTTP v1 API kullanarak oluşturuyorsanız yük nesnesinde mutable-content = 1
değerini belirttiğinizden emin olun.
Arka plan bildirimleri için iletim verilerini dışa aktarmayı etkinleştir
Uygulama ön veya arka plandayken alınan arka plan mesajları için ana uygulamanın veri mesajı işleyicisinin içindeki Data Export API'yi çağırabilirsiniz. Bu arama, alınan her bildirim için yapılmalıdır:
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
BigQuery'ye hangi veriler aktarılır?
Eski jetonların veya etkin olmayan kayıtların hedeflenmesinin bu istatistiklerin bazılarını şişirebileceğini unutmayın.
Dışa aktarılan tablonun şeması şöyledir:
_BÖLÜM SÜRESİ | ZAMAN DAMGASI | Bu yapay sütun, verilerin yüklendiği günün başlangıcı için bir zaman damgası (UTC) içerir. YYYYAAGG bölümü için bu sözde sütun TIMESTAMP('YYYY-AA-GG') değerini içerir. |
event_timestamp | ZAMAN DAMGASI | Sunucu tarafından kaydedilen etkinlik zaman damgası |
proje_numarası | TAM SAYI | Proje numarası, mesajı gönderen projeyi tanımlar |
message_id | DİZE | İleti kimliği bir iletiyi tanımlar. Uygulama kimliği ve zaman damgasından oluşturulan mesaj kimliği, bazı durumlarda genel olarak benzersiz olmayabilir. |
ornek_kimliği | DİZE | Mesajın gönderildiği uygulamanın benzersiz kimliği (varsa). Bu değer, örnek kimliği veya Firebase kurulum kimliği olabilir. |
mesaj_türü | DİZE | Mesajın türü. Bildirim mesajı veya Veri mesajı olabilir. Konu, bir konunun veya kampanyanın gönderdiği orijinal mesajı tanımlamak için kullanılır. Sonraki mesajlar ise bir bildirim veya veri mesajıdır. |
sdk_platformu | DİZE | Alıcı uygulamanın platformu |
uygulama_adı | DİZE | Android uygulamaları için paket adı veya iOS uygulamaları için paket kimliği |
daraltma_anahtarı | DİZE | Daraltma anahtarı, daraltılabilen bir ileti grubunu tanımlar. Bir cihaz bağlanmadığında, yalnızca belirli bir daraltma anahtarına sahip son mesaj nihai teslim için sıraya alınır |
öncelik | TAM SAYI | Mesajın önceliği. Geçerli değerler "normal" ve "yüksek"tir. iOS'te bunlar, APN 5 ve 10 |
ttl | TAM SAYI | Bu parametre, cihaz çevrimdışıysa mesajın FCM depolama alanında ne kadar süreyle (saniye cinsinden) saklanması gerektiğini belirtir |
konu | DİZE | Mesajın gönderildiği konunun adı (varsa) |
toplu_kimlik | TAM SAYI | Toplu kimlik, bir konuya gönderilen belirli bir mesaj gibi, alakalı mesajlardan oluşan bir grubu tanımlar |
etkinlik | DİZE | Etkinliğin türü.
Olası değerler:
|
analytics_label | DİZE | HTTP v1 API ile analiz amacıyla mesajı işaretlemek için analiz etiketi, mesajı gönderirken ayarlanabilir. |
Dışa aktarılan verilerle ne yapabilirsiniz?
Aşağıdaki bölümlerde, dışa aktarılan FCM verilerinizle BigQuery'de çalıştırabileceğiniz sorgulara örnekler verilmiştir.
Gönderilen mesajları uygulamaya göre 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ı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ın sayısını öğrenin
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 iletilerinin sayısı
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ı sayma
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 mesajın etkinliklerini izlemek için bu sorguyu AND message_id != ''
yerine AND message_id = <your message id>;
ile değiştirin.
Belirli bir konu veya kampanya için dağılma süresini hesaplama
Çıkış zamanı, orijinal isteğin alındığı zamandır. Bitiş zamanı ise tek bir örneği hedefleyen son bağımsız 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 iletilerin sayısı
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 izleme
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;