Google Siyah toplulukları için ırksal eşitlik ilerleyen kararlıdır. Nasıl olduğunu gör.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Anlama mesaj teslimi

FCM mesajın teslimi hakkında fikir yardımcı olmak için araçlar sağlar. Firebase konsola entegre edilmiş iletim raporları ve bildirim huni analizine ek olarak, FCM Google BigQuery'ye kapsamlı bir veri ihracat sağlar.

bu sayfada açıklanan raporlama araçları tüm işleve amacıyla Google Analytics gerektirir. Google Analytics proje için etkin değilse, sen bunu ayarlayabilirsiniz entegrasyonlar da Firebase proje ayarlarının sekme.

Bu sayfadaki istatistiklerin birçok raporlanması nedeniyle analitik verilerin harmanlanmasından 24 saat gecikmeleri konuyu olduğunu unutmayın.

İleti iletim raporları

Gönderdiğiniz mesajlar kullanıcılarına ulaşmak ister Sen değerlendirebilir. Gelen Raporlar Firebase konsolunda sekmesi, size Bildirimler besteci ve FCM API'ler üzerinden bu gönderilenle dahil Android veya iOS FCM SDK'larından gönderilen iletiler için aşağıdaki verileri görüntüleyebilir:

  • Gönderir - veri mesajı veya bildirim mesajı teslimatı için kuyruğa edilmiş veya başarılı teslimat için APN gibi bir üçüncü taraf hizmetine geçirildi. Bkz Bir mesajın ömrünü daha fazla bilgi için.
  • (Sadece Android cihazlarda kullanılabilecek) Alındı ​​- veri mesajı veya bildirim mesajı uygulaması tarafından alınmıştır. alıcı Android cihazı FCM SDK 18.0.1 sahiptir ya da daha yüksek yüklü olduğunda bu veriler mevcuttur.
  • (Yalnızca Android cihazlarda bildirim mesajları için kullanılabilir) Gösterimler - Uygulama arka planda açıkken ekran bildirim cihazda gösterilmiştir.
  • Açılış - kullanıcı bildirim mesajı açtı. yalnızca uygulama arka planda olduğunda alınan bildirimler için bildirilmiş.

Bu veriler, bir bildirim yükü ve etiketli tüm mesajlar için kullanılabilir veri mesajlarının . Bkz Etiketler hakkında daha fazla bilgi edinmek için iletilere analitik etiketleri ekleme .

mesajı Raporları görüntülerken veri CSV olarak dışa seçeneğiyle birlikte görüntülenen için, bir tarih aralığı ayarlayabilirsiniz. Ayrıca bu kriterlere göre filtreleme yapabilirsiniz:

  • Platformu (iOS veya Android)
  • Uygulama
  • Özel analitiği etiketler

analitik ekleme iletilere etiketler

mesajları etiketlemek, etiket veya etiket kümeleri tarafından yayınlanma istatistiklerini filtrelemek için izin özel analiz için çok yararlıdır. Sen ayarlayarak HTTP v1 API yoluyla gönderilen herhangi iletiye etiket ekleyebilirsiniz fcmOptions.analyticsLabel alanına mesajı nesne veya platforma özel yer AndroidFcmOptions veya ApnsFcmOptions alanlar.

Analytics etiketleri biçiminde metin dizeleri ^[a-zA-Z0-9-_.~%]{1,50}$ . Etiketler alt ve üst harf, sayı ve aşağıdaki simgeleri içerebilir:

  • -
  • ~
  • %

Maksimum uzunluk 50 karakterdir. Günde 100 benzersiz etiket belirtebilirsiniz; bu sınırın ötesine eklenen etiketlerle mesajlar bildirilmez.

Raporlar sekmesini mesajlaşma Firebase konsolunda, var olan tüm etiketlerin listesini arama ve tek veya istatistik görüntülenen filtrelemek için birlikte uygulayabilirsiniz.

Bildirim huni analizi

Yerleşik bir Bildirimler huni analizi gösterdiği belirli bildirimlere kullanıcıların cevap Firebase konsolundan gönderilen nasıl. Bu görüş bu kategorilerdeki hedeflenen iOS ve Android cihazlar için verileri içerir:

  • Bildirimler gönderilen - mesaj teslimat için kuyruğa edilmiş veya başarılı teslimat için APN gibi bir üçüncü taraf hizmetine geçirildi. bayat jetonları veya etkin olmayan kayıtları hedefleyen bu istatistikleri şişirmek unutmayın.
  • Bildirimler açıldı - açılan bildirim sayısını. yalnızca uygulama arka planda olduğunda alınan bildirimler için bildirilmiş.
  • biri tanımlanması durumunda, bir dönüşüm etkinliği tetikleyen benzersiz kullanıcıların sayısı.

Bildirimler yolu analizi görmek için:

  1. Bildirimler besteci olarak, seçmek Bildirimler sekmesini.
  2. Tamamlanmış bir veya ileti listesinde ilerleme mesajında ​​tıklayın. Bir Huni analizi dahil Genişletilmiş bir görünümü görüntülenir.

Analitik periyodik güncelleme raporları, ancak olay veri konsolunda kullanılabilir bir kullanıcı bildirimi açar ve ne zaman arasında bazı gecikmeler olabilir. Altında bu raporlara ek olarak Bildirimler sekmesine, ayrıca app adımlar dizisi tamamlanması oranını görselleştirmek için Analytics'te özel huniler oluşturabilir.

BigQuery veri ihracat

Sen içine mesaj veri verebilirsiniz BigQuery'e daha fazla analiz için. BigQuery Eğer BigQuery SQL kullanarak verileri analiz başka bir bulut sağlayıcısına dışa veya özel ML modelleri için veri kullanmak için izin verir. BigQuery'ye bir ihracat bakılmaksızın mesaj tipi veya mesaj API veya Bildirimler besteci yoluyla gönderilen olsun, mesajlar için mevcut tüm verileri içerir.

FCM SDK 20.1.2 veya üstü ile Android cihazlara gönderilen mesajlar için uygulamanız için mesaj iletim veri aktarımını mümkün kılmak için ek seçenek var. Bkz Android'de mesaj iletim veri ihracat etkinleştirme Daha fazla bilgi için.

Başlamak için BigQuery'ye projenizi bağlantı:

  1. Aşağıdaki seçeneklerden birini seçin:

    • Bildirimler besteci , ardından sayfanın alt kısmında Erişim BigQuery'yi tıklayın.

    • Gönderen Entegrasyonları Firebase konsolundaki sayfasında, BigQuery kartta Linki tıklayın.

      projedeki tüm FCM özellikli uygulamalara yönelik Bu sayfa görüntüler FCM ihracat seçenekleri.

  2. BigQuery'yi etkinleştirmek için ekrandaki talimatları izleyin.

Bakınız BigQuery'ye Bağlantı Firebase fazla bilgi için.

BigQuery'ye projenizi bağlantı sonra:

  • Firebase verilerinizi ihraç BigQuery'ye. İhracat ilk veri dağıtılmasının 48 saat kadar sürebilir.

  • BigQuery'ye senin Firebase projesinden verilerinizin düzenli senkronizasyon kadar Firebase setleri. Bu günlük ihracat operasyonları 04:00 PDT başlayacak ve tamamlanması için on saate kadar sürebilir.

  • Varsayılan olarak, projedeki tüm uygulamalar BigQuery'ye bağlantılı ve herhangi daha sonra otomatik BigQuery'ye bağlantılıdır projeye eklediğiniz uygulamalar vardır. Sen edebilirsiniz uygulamalar veri göndermek hangi yönetmek .

BigQuery ihracat devre dışı bırakmak için, projenizi bağlantısını kaldırmak Firebase konsolunda.

Android'de mesajın gönderilmesi veri ihracat etkinleştirme

FCM SDK 20.1.0 veya üstü ile Android cihazlara gönderilen mesajlar için uygulamanız için mesaj iletim verilerinin ihracat etkinleştirebilirsiniz. Bu verilerin ihracat uygulama düzeyinde varsayılan olarak devre dışıdır rağmen, size (önerilir); ileti yayınlama verilerini analiz etmek için bu son kullanıcılara izin vermesi seçeneği sunmak izin uygulaması örneği düzeyinde etkinleştirebilirsiniz. Her iki belirlenmediği durumlarda, örnek düzeyi ayarı uygulama düzeyinde ayarını geçersiz kılar.

Açıklandığı gibi bu seçenekleri etkinleştirmeden önce, ilk olarak proje için FCM-BiqQuery bağlantı oluşturmak gerektiğini unutmayın BigQuery veri ihracat .

Uygulamanın örnekleri için yayınlanma verileri ihracat etkinleştirme

Çağrı başına app-örneğine dayanarak mesaj iletim veri aktarımını etkinleştirmek için setDeliveryMetricsExportToBigQuery() metodunu FirebaseMessaging sınıfı ve pas true . Örneğin:

  setDeliveryMetricsExportToBigQuery(true)
 

Kullanıcılara kesinti veya veri ihracat için izin vermesi için seçenek sunmak amacıyla (devre dışı) varsayılan uygulama düzeyinde ayarıyla birlikte bu yöntemi kullanın.

Askıya alma veya verme devre dışı bırakmak için, yöntemini çağırın ve pas false .

Bir uygulama için yayınlanma verileri ihracat etkinleştirme

Çoğu durumda, biz yalnızca uygulama örneği düzeyinde mesaj iletim veri ihraç edilmesini sağlayacak ve uygulama düzeyinde engelli bırakın öneririz. Eğer uygulama düzeyinde ihraç edilmesini sağlayacak tercih ederse, uygulama manifestinde uygulama nesnesine aşağıdaki özelliği ekleyin:

 <application>
  <meta-data android:name="delivery_metrics_exported_to_big_query_enabled"
      android:value="true" />
</application>
 

Manifestte ihraç edilmesini sağlayacak uygulamalar halen kullanıcıların değerine ayarlayarak devre dışı bırakmak için izin verebilir false için setDeliveryMetricsExportToBigQuery() . zamanında bu yöntemin çağrılması uygulama düzeyinde değerini geçersiz kılar.

Hangi veriler BigQuery'ye ihraç edilmektedir?

bayat jetonları veya etkin olmayan kayıtları hedef alan bu istatistiklerin bazılarını şişirmek olabileceğini unutmayın.

ihraç tablonun şeması yer almaktadır:

_PARTITIONTIME TIMESTAMP Bu sözde sütun veri yüklenmiştir ki burada (UTC) Gün başlaması için bir zaman damgası içerir. YYYYMMDD'NIN bölümü için, bu sözde sütun değeri ZAMAN ( 'YYYY-AA-DD) içerir.
event_timestamp TIMESTAMP Sunucu tarafından kaydedildiği şekliyle Olay damgası
Proje numarası INTEGER proje numarası mesajı gönderen projeyi tanımlayan
Mesaj Kimliği STRING Mesaj Kimliği Mesaj tanımlar. App ID ve zaman damgası Elde Edilen, mesaj kimliği, bazı durumlarda, genel olarak benzersiz olmayabilir.
instance_id STRING Uygulamanın örneği kimliği mesajı gönderilir (varsa)
mesaj tipi STRING mesajın türü. Bildirim mesajı veya Veri mesajı olabilir. Konuda bir konu veya kampanya gönderme için orijinal mesajı tanımlamak için kullanılır; takip eden mesajlar, ya bir bildirim veya veri mesajı.
sdk_platform STRING Alıcı uygulamanın platformu
uygulama ismi STRING Android için paket adı uygulamaları veya iOS uygulamaları için paket kimliği
collapse_key STRING çökme anahtar katlanabilir mesajların bir grubu tanımlar. Bir aygıt bağlı değilse, belirli bir kapatma anahtarına sahip sadece son mesajı nihai teslimat için sıraya alındı
öncelik INTEGER İletinin önceliği. Geçerli değerler "normal" ve "yüksek". iOS'ta APN bu karşılık gelir öncelikleri 5 ve 10
ttl INTEGER Cihaz çevrimdışı ise mesaj FCM depolama tutulmalıdır ne kadar (saniye cinsinden) Bu parametre belirtir
konu STRING Bir ileti gönderildiği adrese konunun adı (varsa)
bulk_id INTEGER kütle numarası gibi bir konuya özel bir gönderme gibi ilgili mesajları, bir grubunu tarif etmektedir
Etkinlik STRING Olayın türü. Olası değerler şunlardır:
  • MESSAGE_ACCEPTED: Mesaj FCM sunucusu tarafından alındığı ve istek geçerlidir;
  • MESSAGE_DELIVERED: mesaj cihazda uygulamanın FCM SDK teslim edilmiştir. Varsayılan olarak, bu alan propagrated edilmez. etkinleştirmek için, https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/FirebaseMessaging#public-void-setdeliverymetricsexporttobigquery-boolean ([ `setDeliveryMetricsExportToBigQuery (boolean) '] sağlanan talimatları -etkinleştirme)).
  • MISSING_REGISTRATIONS: istek eksik kayıt nedeniyle reddedildi;
  • UNAUTHORIZED_REGISTRATION: Gönderici kaydına gönderme yetkisi yok çünkü reddedildi;
  • MESSAGE_RECEIVED_INTERNAL_ERROR: ileti isteği işlerken bir belirtilmemiş hata oluştu;
  • MISMATCH_SENDER_ID: bir mesaj göndermek için istek nedeniyle mesaj göndererek gönderici kimliği ve son nokta için ilan biri arasında uyumsuzluğu nedeniyle reddedilmiştir;
  • QUOTA_EXCEEDED: ileti göndermek için istek Yetersiz kota nedeniyle reddedildi;
  • INVALID_REGISTRATION: ileti göndermek için isteği geçersiz kayıt nedeniyle reddedildi;
  • INVALID_PACKAGE_NAME: ileti göndermek için isteği geçersiz paket adına nedeniyle reddedildi;
  • INVALID_APNS_CREDENTIAL: ileti göndermek için isteği geçersiz APNS sertifikası nedeniyle reddedildi;
  • INVALID_PARAMETERS: ileti göndermek için istek nedeniyle geçersiz parametrelere reddedildi;
  • PAYLOAD_TOO_LARGE: ileti göndermek için istek sınırdan daha yüksek bir yük nedeniyle reddedildi;
  • AUTHENTICATION_ERROR: ileti göndermek için istek yüzünden bir kimlik doğrulama hatası (Anahtar mesaj göndermek için kullanılan API çek) reddedildi;
  • INVALID_TTL: ileti göndermek için isteği geçersiz TTL nedeniyle reddedildi.
analytics_label STRING İle HTTP v1 API analiz amaçlı mesaj işaretlemek için, mesaj gönderirken, analitik etiket kümesi olabilir

Dışa verilerle ne yapabilir?

Aşağıdaki bölümlerde aktarılan FCM verilerine karşı BigQuery'de çalışabileceği sorgu örnekleri sunuyoruz.

Uygulama tarafından 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 hedeflediği için 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';

Sayım bildirim mesajları gönderdi

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 konu 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 konu gönderilen bir mesaj için olayları takip etmek için değiştirmek için bu sorguyu değiştirin AND message_id != '' ile AND message_id = <your message id>; .

belirli bir konu ya da kampanya için Compute ikiye bölme süresi

Orijinal istek alındığında ikiye bölme başlangıç ​​zamanı ve bitiş zamanı tek bir örneğini hedefleyen son bireysel mesajı oluşturulur 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;

gelen mesaj yüzdesini 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;

Verilen mesaj kimliği ve örnek kimliği için tüm olayları takip

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;

Verilen mesaj kimliği ve örnek kimliği için gecikme 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;