Devam eden mesaj yayınlama hatalarıyla ilgili sorunları gidermek için FCM sorun gidericisini kullanın ve mesajınızı görememenizin farklı nedenlerini anlamak için bu blog yayınını inceleyin. FCM'yi etkileyen devam eden hizmet kesintileri olup olmadığını belirlemek için FCM durum kontrol panelini de ziyaret edebilirsiniz.
FCM, mesajlaşma başarısı ve stratejisinin kapsamlı değerlendirmesi hakkında bilgi edinmenize yardımcı olmak için üç araç seti de sunar:
- Firebase konsol mesajı teslim raporu
- Firebase Cloud Messaging Data API'den alınan toplu Android SDK yayın metrikleri
- Google BigQuery'ye kapsamlı veri aktarımı
Verileri BigQuery'ye aktarma ve Firebase konsolundaki Raporlar sekmesi işlevlerini kullanmak için Google Analytics gerekir. Google Analytics özelliğini Firebase konsolunun
Bu sayfadaki istatistiklerin çoğunun raporlanmasında, analiz verilerinin gruplandırılması nedeniyle 24 saate kadar gecikmeler olabileceğini unutmayın.
İleti teslim raporları
Firebase konsolunda DevOps & Engagement (DevOps ve Etkileşim) > Messaging (Mesajlaşma) > Reports (Raporlar) sekmesine gidin. Bildirim Oluşturucu ve FCM API'leri kullanılarak gönderilenler de dahil olmak üzere Android veya Apple platformu FCM SDK'lerine gönderilen mesajlarla ilgili aşağıdaki verileri görüntüleyebilirsiniz:
- Gönderildi (Sends): Veri mesajı veya bildirim mesajı, teslimat için sıraya alınmış ya da teslimat amacıyla APNs gibi bir üçüncü taraf hizmetine başarıyla iletilmiştir. Gönderim istatistiklerinin birkaç saat gecikebileceğini unutmayın. Daha fazla bilgi için ileti ömrü başlıklı makaleyi inceleyin.
- 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üyse kullanılabilir.
- Gösterim sayısı (yalnızca Android cihazlardaki bildirim mesajları için kullanılabilir): Uygulama arka plandayken cihazda gösterilen bildirimlerin sayısıdır.
- Açma: Kullanıcı bildirim mesajını açtı. Yalnızca uygulama arka plandayken alınan bildirimler için raporlanır.
Bu veriler, bildirim yükü içeren tüm mesajlar ve tüm etiketli veri mesajları için kullanılabilir. Etiketler hakkında daha fazla bilgi edinmek için İletilere Analytics etiketleri ekleme başlıklı makaleyi inceleyin.
Mesaj raporlarını görüntülerken, gösterilen veriler için bir tarih aralığı belirleyebilir ve verileri CSV dosyası olarak dışa aktarabilirsiniz. Ayrıca şu ölçütlere göre de filtreleme yapabilirsiniz:
- Platform (iOS veya Android)
- Uygulama
- Özel analiz etiketleri
İletilere analiz etiketleri ekleme
İletileri etiketlemek, özel analizler için çok kullanışlıdır. Bu sayede, teslimat istatistiklerini etiketlere veya etiket gruplarına göre filtreleyebilirsiniz. HTTP v1 API kullanılarak gönderilen iletilere, message nesnesindeki fcmOptions.analyticsLabel alanını veya platforma özel AndroidFcmOptions ya da ApnsFcmOptions alanlarını ayarlayarak etiket ekleyebilirsiniz.
Analiz etiketleri, ^[a-zA-Z0-9-_.~%]{1,50}$ biçimindeki metin dizeleridir.
Etiketler küçük ve büyük harf, sayı ve şu simgeleri içerebilir:
-~%
Maksimum uzunluk 50 karakterdir. Günde en fazla 100 benzersiz etiket belirtebilirsiniz. Bu sınırın ötesinde eklenen etiketlere sahip iletiler raporlanmaz.
FirebaseKonsol mesajlaşma Raporları sekmesinde, mevcut tüm etiketlerin listesinde arama yapabilir ve görüntülenen istatistikleri filtrelemek için etiketleri tek tek veya birlikte uygulayabilirsiniz.
FCM Veri API'si kullanılarak birleştirilmiş yayın verileri
Firebase Cloud Messaging Veri API'si, Android uygulamalarını hedefleyen mesaj isteklerinin sonuçlarını anlamanıza yardımcı olabilecek bilgileri almanıza olanak tanır. API, bir projedeki veri toplama özelliğinin etkinleştirildiği tüm Android cihazlardan birleştirilmiş veriler sağlar. Bu bilgiler arasında, iletilerin gecikmeden teslim edilme yüzdesinin yanı sıra Android Aktarım Katmanı'nda kaç iletinin geciktiği veya bırakıldığıyla ilgili ayrıntılar yer alır. Bu verileri değerlendirmek, ileti teslimiyle ilgili genel trendleri ortaya çıkarabilir ve gönderme isteklerinizin performansını artırmanın etkili yollarını bulmanıza yardımcı olabilir. Raporlardaki tarih aralığı kullanılabilirliği hakkında bilgi için Birleştirilmiş veri zaman çizelgeleri başlıklı makaleyi inceleyin.
API, belirli bir uygulama için kullanılabilen tüm verileri sağlar. API referans belgelerine göz atın.
Veriler nasıl ayrıştırılır?
Yayın verileri uygulamaya, tarihe ve analiz etiketine göre ayrılır.
API'ye yapılan bir çağrı; tarih, uygulama ve analiz etiketinin her 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
Teslimat verileri, aşağıdaki metriklerin her birine uyan mesajların yüzdesini gösterir. Tek bir mesaj birden fazla metriğe uyabilir. Verileri toplama şeklimizdeki sınırlamalar ve metrikleri topladığımız ayrıntı düzeyi nedeniyle bazı mesaj sonuçları metriklerde hiç gösterilmez. Bu nedenle, aşağıdaki yüzdelerin toplamı %100 olmaz.
Kabul Edilen Mesaj Sayısı
Veri kümesine dahil edilen tek sayı, Android cihazlara teslim için FCM tarafından kabul edilen mesajların sayısıdır. Tüm yüzdelerde bu değer payda olarak kullanılır. Bu sayının, cihazlarında kullanım ve teşhis bilgilerinin toplanmasını devre dışı bırakan kullanıcılara yönelik mesajları içermeyeceğini unutmayın.
Mesaj Sonucu Yüzdeleri
MessageOutcomePercents
nesnesine dahil edilen alanlar, mesaj isteklerinin sonuçlarıyla ilgili bilgi sağlar. Kategorilerin tümü birbirini hariç tutar. "İletilerim teslim ediliyor mu?" ve "İletilerin bırakılmasına ne sebep oluyor?" gibi soruları yanıtlayabilir.
Örneğin, droppedTooManyPendingMessages alanının yüksek bir değere sahip olması, uygulama örneklerinin FCM tarafından belirlenen 100 bekleyen mesaj sınırını aşan miktarda daraltılamayan mesaj aldığını gösterebilir.
Bunu önlemek için uygulamanızın onDeletedMessages aramalarını işlediğinden emin olun ve daraltılabilir mesajlar göndermeyi düşünün. Benzer şekilde, droppedDeviceInactive için yüksek yüzdeler, sunucunuzdaki kayıt jetonlarını güncellemeniz, eski jetonları kaldırmanız ve konulara aboneliklerini iptal etmeniz gerektiğinin bir işareti olabilir. Bu alandaki en iyi uygulamalar için
FCM kayıt jetonlarını yönetme başlıklı makaleyi inceleyin.
Yayınlama performansı yüzdeleri
DeliveryPerformancePercents nesnesindeki alanlar, başarıyla teslim edilen mesajlar hakkında bilgi sağlar. "Mesajlarım gecikti mi?" ve "Mesajlar 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 gösterir ve mesaj gönderme sıklığını ayarlamanız gerekir.
Mesaj Analizi Yüzdeleri
Bu nesne, tüm ileti gönderimleri hakkında ek bilgiler sağlar. priorityLowered alanı, önceliği HIGH değerinden NORMAL değerine 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 bildirim gösterdiğinizden emin olun. İleti önceliğiyle ilgili dokümanımızı inceleyerek daha fazla bilgi edinin.
Bu verilerin BigQuery'ye aktarılan verilerden farkı nedir?
BigQuery Export, FCM arka ucu tarafından mesaj kabulü ve cihazdaki SDK'da mesaj teslimi ile ilgili ayrı mesaj günlükleri sağlar (FCM Mimarisi'nin 2. ve 4. adımları). Bu veriler, her bir iletinin kabul edildiğinden ve teslim edildiğinden emin olmak için yararlıdır. BigQuery verilerini dışa aktarma hakkında daha fazla bilgiyi sonraki bölümde bulabilirsiniz.
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ğu hakkında toplu ayrıntılar sağlar. Bu veriler, özellikle FCM arka uçlarından Android SDK'sına mesaj teslimi hakkında bilgi sağlar. Bu özellik, iletilerin bu aktarım sırasında neden geciktiği veya bırakıldığıyla ilgili trendleri göstermek için özellikle yararlıdır.
Bazı durumlarda, aşağıdaki nedenlerden dolayı iki veri kümesi tam olarak eşleşmeyebilir:
- Toplu metrikler, tüm mesajların yalnızca bir kısmını örnekler.
- Toplanan metrikler yuvarlanır.
- Gizlilik eşiğinin altındaki metrikleri göstermeyiz.
- Yoğun trafiği yönetme şeklimizdeki optimizasyonlar nedeniyle ileti sonuçlarının bir kısmı eksik.
API'nin sınırlamaları
Birleştirilmiş 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 gecikebilir. Örneğin, 20 Ocak'ta 9 Ocak-15 Ocak arasındaki veriler kullanılabilir ancak 16 Ocak veya sonrasına ait veriler kullanılamaz. Ayrıca, veriler en iyi sonuç hedeflenerek sağlanır. Veri kesintisi durumunda FCM, sorunu düzeltmek için çalışır ve sorun düzeltildikten 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 metrikler, mesaj teslimatındaki genel eğilimler hakkında bilgi vermeyi amaçlar. Ancak tüm mesaj senaryolarında% 100 kapsam sağlamazlar. Aşağıdaki senaryolar, metriklerde yansıtılmayan bilinen sonuçlardır.
Süresi dolmuş mesajlar
Geçerlilik Süresi (TTL), belirtilen günlük tarihinin bitiminden sonra sona ererse ileti bu tarihte droppedTtlExpired olarak sayılmaz.
Etkin olmayan cihazlara gönderilen mesajlar
Etkin olmayan cihazlara gönderilen mesajlar, izledikleri veri yoluna bağlı olarak veri kümesinde görünebilir veya görünmeyebilir. Bu durum, 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ı, tercihlerine uygun olarak sayımımıza dahil edilmez.
Yuvarlama ve Minimum Değerler
FCM, hacimlerin yeterince büyük olmadığı sayıları bilinçli olarak yuvarlar ve hariç tutar.
BigQuery veri dışa aktarma
Daha ayrıntılı analiz için mesaj verilerinizi BigQuery'ye aktarabilirsiniz. BigQuery, BigQuery SQL'i kullanarak verileri analiz etmenize, başka bir bulut sağlayıcıya aktarmanıza veya özel ML modelleriniz için kullanmanıza olanak tanır. BigQuery'ye yapılan dışa aktarma işleminde, mesaj türü veya mesajın API ya da Bildirim Oluşturucu kullanılarak gönderilip gönderilmediğine bakılmaksızın mesajlarla ilgili tüm veriler yer alır.
Aşağıdaki FCM SDK minimum sürümlerine sahip cihazlara gönderilen mesajlar için uygulamanızın mesaj teslim verilerinin dışa aktarılmasını etkinleştirme seçeneğiniz de vardır:
- Android 20.1.0 veya sonraki sürümler.
- iOS 8.6.0 veya sonraki sürümler
- Firebase Web SDK'sı 12.14.0 veya sonraki bir sürüm
Başlamak için Firebase konsolunu kullanarak projenizi BigQuery hizmetine bağlayın:
Aşağıdaki seçeneklerden birini belirleyin:
DevOps ve Etkileşim > Mesajlaşma > Bildirim Oluşturucu'ya gidin ve sayfanın alt kısmındaki BigQuery'ye eriş'i tıklayın.
Ayarlar > Entegrasyonlar sekmesine gidin. Ardından BigQuery bölümünde Bağla'yı tıklayın.Bu sayfada, projedeki FCM etkin tüm uygulamalar için FCM dışa aktarma seçenekleri gösterilir.
BigQuery özelliğini 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 dışa aktarma işlemini etkinleştirdiğinizde:
Firebase, verilerinizi BigQuery'e aktarır. Dışa aktarılacak verilerin ilk yayılma işleminin tamamlanması 48 saati bulabilir.
- Son 30 güne ait verileri manuel olarak yeniden doldurmayı 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şturma). Daha fazla bilgi için Veri kümesi konumunu değiştirme başlıklı makaleyi inceleyin.
Firebase, Firebase projenizdeki verilerinizin BigQuery ile düzenli olarak senkronize edilmesini sağlar. Bu günlük dışa aktarma işlemleri Pasifik Saati ile 04:00'te başlar ve genellikle 24 saat içinde tamamlanır.
Varsayılan olarak, projenizdeki tüm uygulamalar BigQuery'ya bağlanır ve projeye daha sonra eklediğiniz tüm uygulamalar otomatik olarak BigQuery'ya bağlanır. Hangi uygulamaların veri göndereceğini yönetebilirsiniz.
BigQuery dışa aktarma işlemini devre dışı bırakmak için Firebase konsolunda projenizin bağlantısını kaldırın.
İleti teslimi verilerini dışa aktarmayı etkinleştirme
iOS+
FCM SDK 8.6.0 veya sonraki sürümlerin yüklü olduğu iOS cihazlarda, uygulamaların mesaj teslimi verileri dışa aktarılabilir. FCM, hem uyarı hem de arka plan bildirimleri için veri dışa aktarmayı destekler. Veri dışa aktarma, uygulama düzeyinde varsayılan olarak devre dışıdır. Uygulama örneği düzeyinde programatik olarak etkinleştirmek, son kullanıcılardan mesaj teslim verilerini analiz etmek için izin istemenize olanak tanır (önerilir). Her ikisi de ayarlandığında uygulama örneği düzeyindeki değer, uygulama düzeyindeki değeri geçersiz kılar.
Bu seçenekleri etkinleştirmeden önce BigQuery veri dışa aktarma bölümünde açıklandığı gibi projeniz için FCM-BigQuery bağlantısını oluşturmanız gerekir.
Uyarı bildirimleri için teslimat verilerini dışa aktarmayı etkinleştirme
Yalnızca uyarı bildirimleri, bildirim hizmeti uygulama uzantılarını tetikleyebildiğinden, uygulamanıza bir bildirim hizmeti uzantısı eklemeniz ve görüntüleme mesajı izlemeyi etkinleştirmek için bu API'yi bir hizmet uzantısı içinde çağırmanız gerekir. Apple'ın Modifying Content in Newly Delivered Notifications (Yeni Gönderilen Bildirimlerde İçeriği Değiştirme) başlıklı belgesini inceleyin.
Alınan her bildirim için aşağıdaki arama 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.serviceExtension().exportDeliveryMetrics(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
HTTP v1 API'yi kullanarak gönderme istekleri oluşturuyorsanız yük nesnesinde `mutable-content = 1` değerini belirttiğinizden emin olun.
Arka plan bildirimleri için teslim verilerini dışa aktarmayı etkinleştirme
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:
Swift
// For background notifications, call the API inside the // UIApplicationDelegate or NSApplicationDelegate method: func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { Messaging.serviceExtension().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
Android
FCM SDK'sı 20.1.0 veya sonraki sürümlere sahip Android cihazlar, uygulamalarının mesaj teslim verilerini dışa aktarma özelliğini etkinleştirebilir. Veri dışa aktarma özelliği varsayılan olarak uygulama düzeyinde devre dışıdır. Uygulama örneği düzeyinde programatik olarak etkinleştirildiğinde son kullanıcılardan mesaj teslimi verilerini analiz etme izni isteyebilirsiniz (önerilir). Her ikisi de ayarlandığında uygulama örneği düzeyindeki değer, uygulama düzeyindeki değeri geçersiz kılar.
Bu seçenekleri etkinleştirmeden önce projeniz için BigQuery bağlantısını BigQuery veri dışa aktarma bölümünde açıklandığı şekilde oluşturmanız gerekir.FCM
Uygulama örnekleri için yayın verilerini dışa aktarmayı etkinleştirme
Çoğu durumda, mesaj teslimi verilerini dışa aktarma özelliğini yalnızca uygulama örneği düzeyinde etkinleştirmenizi ve uygulama düzeyinde devre dışı bırakmanızı öneririz.
FirebaseMessaging.getInstance().setDeliveryMetricsExportToBigQuery(true);
Bir uygulama için yayın verilerini dışa aktarmayı etkinleştirme
Dışa aktarmayı uygulama düzeyinde etkinleştirmeyi tercih ederseniz setDeliveryMetricsExportToBigQuery yöntemini çağırmadığınızdan emin olun ve uygulama manifestinizdeki uygulama nesnesine aşağıdaki özelliği ekleyin:
<application> <meta-data android:name="delivery_metrics_exported_to_big_query_enabled" android:value="true" /> </application>
Web
Web için FCM SDK'sı 12.14.0 veya sonraki sürümler, yayın verilerinin dışa aktarılmasına olanak tanır. Veri dışa aktarma, uygulama düzeyinde varsayılan olarak devre dışıdır. Uygulama örneği düzeyinde programatik olarak etkinleştirmek, son kullanıcılardan mesaj teslimat verilerini analiz etmek için izin istemenize olanak tanır (önerilir). Her ikisi de ayarlandığında uygulama örneği düzeyindeki değer, uygulama düzeyindeki değeri geçersiz kılar. Son kullanıcı veri toplamaya izin verdiğinde veya veri toplamayı reddettiğinde uygulama, her uygulama örneği için deneysel etkinleştirme veya devre dışı bırakma işaretini aşağıdaki gibi ayarlamalıdır:
// userConsent holds the decision of the user to give big query export consent. const userConsent = ...; const messaging = getMessagingInSw(app); experimentalSetDeliveryMetricsExportedToBigQueryEnabled(messaging, userConsent);
BigQuery'ye hangi veriler aktarılır?
Eski jetonları veya etkin olmayan kayıtları hedeflemenin bu istatistiklerden bazılarını şişirebileceğini unutmayın.
Dışa aktarılan tablonun şeması şu şekildedir:
| _PARTITIONTIME | ZAMAN DAMGASI | Bu sözde sütun, verilerin yüklendiği günün başlangıcı için UTC cinsinden 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 etkinlik zaman damgası |
| project_number | TAM SAYI | Proje numarası, mesajı gönderen projeyi tanımlar. |
| message_id | DİZE | İleti kimliği, bir iletiyi tanımlar. Uygulama kimliğinden ve zaman damgasından oluşturulan mesaj kimliği, bazı durumlarda genel olarak benzersiz olmayabilir. |
| instance_id | DİZE | Mesajın gönderildiği uygulamanın benzersiz kimliği (varsa). Örnek kimliği veya Firebase yükleme kimliği olabilir. |
| message_type | DİZE | Mesajın türü. Bildirim mesajı veya veri mesajı olabilir. Konu, bir konu veya kampanya gönderimi için orijinal mesajı tanımlamak amacıyla kullanılır. Sonraki mesajlar bildirim veya veri mesajıdır. |
| sdk_platform | DİZE | Alıcı uygulamanın platformu |
| app_name | DİZE | Android uygulamaları için paket adı veya iOS uygulamaları için paket kimliği |
| collapse_key | DİZE | Daraltma anahtarı, daraltılabilecek bir mesaj grubunu tanımlar. Bir cihaz bağlı değilken, yalnızca belirli bir collapse_key'e sahip son mesaj, nihai teslimat için sıraya alınır. |
| öncelik | TAM SAYI | İletinin önceliği. 5 "normal" öncelik, 10 ise "yüksek" önceliktir. |
| ttl | TAM SAYI | Bu parametre, cihaz çevrimdışıysa iletinin FCM depolama alanında ne kadar süreyle (saniye cinsinden) saklanacağını belirtir. |
| konu | DİZE | Mesajın gönderildiği konunun adı (varsa) |
| bulk_id | TAM SAYI | Toplu kimlik, belirli bir konuya gönderilen mesajlar gibi bir grup ilgili mesajı tanımlar. |
| etkinlik | DİZE | Etkinliğin türü.
Olası değerler:
|
| analytics_label | DİZE | HTTP v1 API ile, mesajı analiz amacıyla işaretlemek için mesaj gönderilirken analiz etiketi ayarlanabilir. |
Dışa aktarılan verilerle neler yapabilirsiniz?
Aşağıdaki bölümlerde, dışa aktarılan FCM verileriniz için BigQuery'de çalıştırabileceğiniz sorgu örnekleri verilmiştir.
Uygulamaya göre gönderilen ileti sayısı
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 sayma
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ı
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ın 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 iletilerle ilgili etkinlikleri izlemek için bu sorguyu AND message_id != '' yerine AND message_id = <your message id>; koyacak şekilde değiştirin.
Belirli bir konu veya kampanya için fanout süresini hesaplama
Yayın başlangıç zamanı, orijinal isteğin alındığı zamandır. Bitiş zamanı ise 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 iletilerin yüzdesini hesaplama
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 ileti kimliği ve örnek kimliği için gecikmeyi hesaplama
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;