Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

درک تحویل پیام

FCM سه مجموعه ابزار برای کمک به شما در درک پیام رسانی ارائه می دهد:

  • گزارش های ارسال پیام کنسول Firebase و تجزیه و تحلیل قیف اعلانات
  • معیارهای تحویل SDK جمع آوری شده Android از API داده های پیام رسانی ابر Firebase
  • صادرات جامع داده ها به Google BigQuery

ابزارهای گزارش دهی که در این صفحه شرح داده شده است ، برای عملکرد به Google Analytics نیاز دارد. اگر گوگل آنالیز برای پروژه شما فعال نیست، شما می توانید آن را در مجموعه یکپارچگی تب از تنظیمات پروژه فایربیس خود را.

به خاطر داشته باشید که گزارش بسیاری از آمارهای موجود در این صفحه ، به دلیل تجمع تجزیه و تحلیل داده ها تا 24 ساعت به تاخیر می افتد.

گزارش های ارسال پیام

در گزارش تب در کنسول فایربیس، شما می توانید داده های زیر برای پیام های ارسال شده به Android یا iOS SDK ها FCM، از جمله آنهایی که از طریق آهنگساز اطلاعیه ها و رابط های برنامه کاربردی FCM مشاهده:

  • ارسال می کند-پیام داده یا پیام اعلان برای تحویل قرار داده شده یا با موفقیت به یک سرویس شخص ثالث مانند APN برای تحویل داده شده است. مشاهده طول عمر یک پیام برای اطلاعات بیشتر.
  • دریافت شده (فقط در دستگاه های Android موجود است) - پیام داده یا پیام اعلان توسط برنامه دریافت شده است. این داده ها زمانی موجود است که دستگاه Android دریافت کننده FCM SDK 18.0.1 یا بالاتر نصب شده باشد.
  • نمایش ها (فقط برای پیام های اعلان در دستگاه های Android موجود است) - اعلان صفحه نمایش در حالی که برنامه در پس زمینه است نمایش داده می شود.
  • باز می شود - کاربر پیام اعلان را باز می کند. فقط برای اعلان های دریافت شده هنگامی که برنامه در پس زمینه است گزارش می شود.

این داده ها برای همه پیام با بار اطلاع رسانی و برچسب موجود است پیام داده . برای کسب اطلاعات بیشتر در مورد برچسب، و اضافه کردن تجزیه و تحلیل ترافیک برچسب به پیام .

هنگام مشاهده گزارش های پیام ، می توانید محدوده تاریخ را برای داده های نمایش داده شده ، با گزینه صادرات به CSV تنظیم کنید. همچنین می توانید بر اساس این معیارها فیلتر کنید:

  • پلتفرم (iOS یا Android)
  • برنامه
  • برچسب های تجزیه و تحلیل سفارشی

افزودن برچسب های تجزیه و تحلیل به پیام ها

برچسب زدن پیام ها برای تجزیه و تحلیل سفارشی بسیار مفید است و به شما امکان می دهد آمار تحویل را بر اساس برچسب ها یا مجموعه ای از برچسب ها فیلتر کنید. شما می توانید یک برچسب به هر پیام از طریق HTTP V1 API با تنظیم ارسال اضافه fcmOptions.analyticsLabel زمینه در پیام شیء، و یا در پلت فرم خاص AndroidFcmOptions یا ApnsFcmOptions زمینه.

تجزیه و تحلیل ترافیک برچسب رشته های متنی در قالب هستند ^[a-zA-Z0-9-_.~%]{1,50}$ . برچسب ها می توانند شامل حروف کوچک و بزرگ ، اعداد و نمادهای زیر باشند:

  • -
  • ~
  • %

حداکثر طول 50 کاراکتر است. شما می توانید حداکثر 100 برچسب منحصر به فرد در روز تعیین کنید. پیام هایی با برچسب هایی که بیش از این حد اضافه شده اند گزارش نمی شوند.

در کنسول فایربیس پیام برگه گزارشها، شما می توانید یک لیست از تمام برچسب موجود جستجو و اعمال آنها را به تنهایی و یا در ترکیب برای فیلتر کردن آمار نمایش داده شود.

تجزیه و تحلیل قیف اطلاع رسانی

تجزیه و تحلیل داخلی قیف اعلان ها به شما نشان می دهد که چگونه کاربران شما به اعلان های خاص ارسال شده از کنسول Firebase پاسخ می دهند. این نمای شامل داده های مربوط به دستگاه های هدفمند iOS و Android در این دسته ها است:

  • اعلانات ارسال شده-پیام برای تحویل ارسال شده است یا با موفقیت به یک سرویس شخص ثالث مانند APN ها برای تحویل داده شده است. توجه داشته باشید که هدف قرار دادن نشانه های کهنه یا ثبت نامفعال ممکن است باعث افزایش این آمار شود.
  • اعلان ها باز شده - تعداد اعلان های باز شده. فقط برای اعلان های دریافت شده هنگامی که برنامه در پس زمینه است گزارش می شود.
  • تعداد کاربران منحصر به فرد که باعث ایجاد رویداد تبدیل شده اند ، در صورت تعریف یکی.

برای مشاهده تجزیه و تحلیل قیف Notifications:

  1. در آهنگساز اطلاعیه ها، را انتخاب کنید اطلاعیه های تب.
  2. روی یک پیام تکمیل شده یا در حال پیشرفت در لیست پیام ها کلیک کنید. یک نمای گسترده از جمله تجزیه و تحلیل قیف نمایش داده می شود.

گزارشات تجزیه و تحلیل به صورت دوره ای به روز می شوند ، اما ممکن است بین باز شدن اعلان توسط کاربر و در دسترس بودن داده های رویداد در کنسول تاخیری وجود داشته باشد. علاوه بر این گزارش تحت اطلاعیه تب، شما همچنین می توانید تبدیل سفارشی ساخت در تجزیه و تحلیل ترافیک به تجسم نرخ اتمام دنباله ای از مراحل در برنامه شما.

تجمیع داده های تحویل از طریق FCI Data API

API Firebase Cloud Messaging Data به شما امکان می دهد اطلاعاتی را بازیابی کنید که می تواند به شما در درک نتایج درخواست پیام برای برنامه های Android کمک کند. API داده های تجمیعی را در تمام دستگاه های Android با قابلیت جمع آوری داده در یک پروژه ارائه می دهد. این شامل جزئیات در درصد پیام های تحویل داده بدون تاخیر و همچنین چگونه بسیاری از پیام به تعویق افتاده بود و یا در داخل کاهش یافته لایه حمل و نقل آندروید . ارزیابی این داده ها می تواند روندهای گسترده ای در ارسال پیام نشان دهد و به شما کمک می کند تا راههای موثری برای بهبود عملکرد درخواست های ارسال شده خود پیدا کنید.

API تمام داده های موجود برای یک برنامه معین را ارائه می دهد. را ببینید مستندات API مرجع .

داده ها چگونه تجزیه می شوند؟

اطلاعات تحویل است توسط نرم افزار، تاریخ، و شکسته تجزیه و تحلیل ترافیک برچسب . تماس با API داده های هر ترکیبی از تاریخ ، برنامه و برچسب تجزیه و تحلیل را باز می گرداند. به عنوان مثال، یک androidDeliveryData شی JSON شبیه به این خواهد:

 {
  "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
    }
  }

چگونه معیارها را تفسیر کنیم

داده های تحویل درصد پیام های متناسب با هر یک از معیارهای زیر را مشخص می کند. ممکن است یک پیام واحد متناسب با معیارهای مختلف باشد. با توجه به محدودیت در نحوه جمع آوری داده ها و سطح دانه دانه که در آن ما معیارهای جمع آوری شده، برخی از نتایج پیام در معیارهای در همه نمایندگی نیست، به طوری که درصد زیر نمی خواهد به 100٪ جمع.

تعداد پیام ها پذیرفته شده است

تنها شمارش موجود در مجموعه داده تعداد پیامهایی است که توسط FCM برای تحویل به دستگاه های Android پذیرفته شده است. همه درصدها از این مقدار به عنوان مخرج استفاده می کنند. به خاطر داشته باشید که این شمارش شامل پیام هایی نمی شود که به کاربرانی که مجموعه اطلاعات استفاده و تشخیص را در دستگاه های خود غیرفعال کرده اند ، اختصاص داده شود.

درصد پیام پیام

زمینه های موجود در MessageOutcomePercents اعتراض ارائه اطلاعات در مورد نتایج درخواست پیام. همه دسته ها متقابلاً منحصر به فرد هستند. این می تواند به س questionsالاتی مانند "آیا پیام های من ارسال می شود؟" و "چه چیزی باعث حذف پیام ها می شود؟"

برای مثال، یک ارزش بالا برای droppedTooManyPendingMessages زمینه می تواند به سیگنال که نمونه برنامه های در حال دریافت حجم پیام های غیر تاشو بیش از حد FCM از 100 پیام در انتظار. برای کاستن از این، مطمئن شوید که دسته نرم افزار خود را به تماس های onDeletedMessages ، و در نظر گرفتن ارسال پیام تاشو. به طور مشابه، درصد بالایی برای droppedDeviceInactive می تواند یک سیگنال به نشانه به روز رسانی ثبت نام بر روی سرور خود، از بین بردن نشانه های کهنه و لغو اشتراک آنها را از موضوع است. مشاهده مدیریت FCM نشانه ثبت نام برای بهترین شیوه در این زمینه.

درصد عملکرد تحویل

زمینه در DeliveryPerformancePercents اعتراض ارائه اطلاعات در مورد پیامهایی که با موفقیت تحویل داده شد. این می تواند به س questionsالات مانند "آیا پیام های من به تأخیر افتاد؟" و "چرا پیام ها به تأخیر می افتند؟" برای مثال، یک ارزش بالا برای delayedMessageThrottled به وضوح نشان می دهد که شما بیش از محدودیت به ازای هر دستگاه حداکثر ، و باید میزان که در آن شما در حال ارسال پیام را تنظیم کنید.

پیام بصیرت درصد

این شی اطلاعات بیشتری در مورد همه پیام های ارسال شده ارائه می دهد. priorityLowered درست بیان درصد از پیام های پذیرفته شده است که اولویت را از پایین آورده بود HIGH به NORMAL با توجه به برنامه سطل آماده به کار . اگر این مقدار زیاد است ، سعی کنید کمتر پیام های با اولویت بالا ارسال کنید یا اطمینان حاصل کنید که هنگام ارسال یک پیام با اولویت بالا ، همیشه اعلانی را نمایش می دهید.

تفاوت این داده ها با داده های صادر شده به BigQuery چگونه است؟

صادرات BigQuery مشاهده پیام سیاهههای مربوط فردی مورد پذیرش پیام های باطن FCM و تحویل پیام در SDK بر روی دستگاه (مراحل 2 و 4 از فراهم می کند معماری FCM ). این داده ها برای اطمینان از پذیرش و ارسال پیام های فردی مفید است. اطلاعات بیشتر در مورد BigQuery مشاهده صادرات داده در بخش بعدی.

در مقابل، API فایربیس ابر پیام داده فراهم می کند جزئیات در مورد آنچه به طور خاص در لایه حمل و نقل آندروید (یا مرحله 3 از اتفاق می افتد جمع معماری FCM ). این داده ها به طور خاص بینشی در مورد ارسال پیام ها از پشتیبان های FCM به SDK Android ارائه می دهد. این امر به ویژه برای نشان دادن گرایش هایی در مورد علت تأخیر یا حذف پیام ها در طول این حمل و نقل مفید است.

در برخی موارد ، ممکن است دو مجموعه داده به دلیل موارد زیر دقیقاً با هم مطابقت نداشته باشند:

  • معیارهای جمع آوری شده فقط قسمتی از همه پیام ها را نمونه می گیرند
  • معیارهای جمع شده گرد می شوند
  • ما معیارهای زیر آستانه حفظ حریم خصوصی را ارائه نمی دهیم
  • بخشی از پیامها به دلیل بهینه سازی در نحوه مدیریت حجم زیاد ترافیک وجود ندارد.

محدودیت های API

تاخیر داده ها

داده های بازگردانده شده توسط این API تا 5 روز به تأخیر می افتد. به عنوان مثال ، در 10 ژانویه ، داده های 5 ژانویه در دسترس خواهد بود ، اما نه برای 6 ژانویه یا بعد. علاوه بر این ، داده ها در بهترین تلاش ارائه می شوند. در صورت قطعی داده ها ، FCM برای رفع مشکل کار می کند و پس از برطرف شدن مشکل ، داده ها را دوباره پر نمی کند. در قطع های بزرگتر ، داده ها ممکن است به مدت یک هفته یا بیشتر در دسترس نباشند.

پوشش داده ها

معیارهای ارائه شده توسط Firebase Cloud Messaging Data API به منظور ارائه بینش در مورد روندهای گسترده ارسال پیام است. با این حال ، آنها 100 coverage از همه سناریوهای پیام را پوشش نمی دهند. سناریوهای زیر نتایج شناخته شده ای هستند که در معیارها منعکس نشده اند.

پیام های جمع شده

پیام که سقوط توسط یکی دیگر از پیام ها در مجموعه داده ظاهر نمی شود.

پیام به دستگاه های غیر فعال

بسته به مسیر داده ای که می گیرند ، پیام های ارسال شده به دستگاه های غیرفعال ممکن است در مجموعه داده نمایش داده شوند یا نشوند. این می تواند منجر به تعدادی اشتباه در زمینه های "دستگاه غیرفعال افتاده" و "در انتظار" شود.

پیام به دستگاه هایی با ترجیحات کاربر خاص

کاربرانی که مجموعه استفاده و اطلاعات تشخیصی دستگاه های خود را غیرفعال کرده اند ، پیامهای آنها مطابق با ترجیحات آنها در شمارش ما قرار نمی گیرد.

گرد کردن و حداقل ها

FCM عمدا شمارشهایی را که حجم به اندازه کافی بزرگ نیست گرد می کند و حذف می کند.

صادرات داده BigQuery

شما می توانید داده پیام خود را به صادرات BigQuery مشاهده برای تجزیه و تحلیل بیشتر است. BigQuery به شما امکان می دهد داده ها را با استفاده از BigQuery SQL تجزیه و تحلیل کنید ، آنها را به ارائه دهنده ابری دیگر صادر کنید یا از داده ها برای مدلهای ML سفارشی خود استفاده کنید. صادرات به BigQuery شامل تمام داده های موجود برای پیام ها ، صرف نظر از نوع پیام و یا اینکه پیام از طریق API یا آهنگساز اعلانات ارسال می شود ، می شود.

برای پیام هایی که به دستگاه هایی با حداقل نسخه FCK SDK زیر ارسال می شوند ، می توانید گزینه اضافی را برای فعال کردن صادرات داده های ارسال پیام برای برنامه خود داشته باشید:

  • Android 20.1.0 یا بالاتر
  • iOS 8.6.0 یا بالاتر
  • Firebase Web SDK 9.0.0 یا بالاتر

زیر را برای اطلاعات در مورد فعال کردن صادرات داده برای مشاهده آندروید و سیستم عامل iOS .

برای شروع ، پروژه خود را به BigQuery پیوند دهید:

  1. یکی از گزینه های زیر را انتخاب کنید:

    • باز آهنگساز اطلاعیه ، سپس با کلیک دسترسی BigQuery مشاهده در پایین صفحه استفاده کنید.

    • از یکپارچگی صفحه در فایربیس کنسول، لینک کلیک کنید و در کارت BigQuery مشاهده.

      این صفحه گزینه های صادرات FCM را برای همه برنامه های دارای FCM در پروژه نشان می دهد.

  2. برای فعال کردن BigQuery ، دستورالعمل های روی صفحه را دنبال کنید.

برای اشاره لینک فایربیس به BigQuery مشاهده برای اطلاعات بیشتر.

بعد از اینکه پروژه خود را به BigQuery پیوند دادید:

  • فایربیس صادرات داده های خود را به BigQuery مشاهده. توجه داشته باشید که انتشار اولیه داده ها برای صادرات ممکن است تا 48 ساعت طول بکشد.

  • Firebase همگام سازی منظم داده های شما از پروژه Firebase شما با BigQuery را تنظیم می کند. این عملیات صادرات روزانه از 4:00 صبح PDT شروع می شود و ممکن است تا ده ساعت طول بکشد.

  • به طور پیش فرض ، همه برنامه های پروژه شما به BigQuery و هر برنامه ای که بعداً به پروژه اضافه کنید به طور خودکار به BigQuery پیوند داده می شود. شما می توانید مدیریت که برنامه های ارسال داده .

برای غیرفعال کردن صادرات BigQuery مشاهده، قطع ارتباط پروژه خود را در کنسول فایربیس.

فعال کردن صادرات داده های ارسال پیام

دستگاه های iOS با FCM SDK 8.6.0 یا بالاتر می توانند صادرات داده های ارسال پیام برنامه خود را فعال کنند. FCM از صادرات داده برای اعلان های هشدار و پس زمینه پشتیبانی می کند. قبل از فعال کردن این گزینه، شما باید اول از لینک FCM-BiqQuery برای پروژه خود را ایجاد کنید همان طور که در BigQuery مشاهده صادرات داده .

فعال کردن صادرات داده های تحویل برای اعلان های هشدار

از آنجا که فقط اعلان های هشدار می توانند برنامه های افزودنی سرویس اعلان را فعال کنند ، باید یک برنامه افزودنی سرویس اعلان را به برنامه خود اضافه کنید و با این API در یک برنامه افزودنی سرویس تماس بگیرید تا ردیابی پیام نمایش داده شود. مستندات اپل در مشاهده محتوا اصلاح در تازه تحویل اعلان .

برای هر اعلان دریافتی باید تماس زیر برقرار شود:

سریع

// 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)
  }
}

هدف-ج

// 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، مطمئن شوید که برای مشخص mutable-content = 1 در جسم محموله .

فعال کردن صادرات داده های تحویل برای اعلان های پس زمینه

برای پیام های پس زمینه دریافت که برنامه در پیش زمینه یا پس زمینه است، شما می توانید از API صادرات داده ها در داخل پیام داده کنترل برنامه اصلی را پاسخ UIApplicationDelegate application:didReceiveRemoteNotification:fetchCompletionHandler: . این تماس باید برای هر اعلان دریافتی انجام شود:

سریع

// For background notifications, call the API inside the UIApplicationDelegate method:
  func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
    Messaging.extensionHelper().exportDeliveryMetricsToBigQuery(withMessageInfo:userInfo)
  }

هدف-ج

// For background notifications, call the API inside the UIApplicationDelegate method:
@implementation AppDelegate
- (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo
          fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
  [[FIRMessaging extensionHelper] exportDeliveryMetricsToBigQueryWithMessageInfo:userInfo];
@end

چه داده هایی به BigQuery صادر می شود؟

توجه داشته باشید که هدف قرار دادن نشانه های کهنه یا ثبت نامفعال ممکن است برخی از این آمارها را متورم کند.

طرح جدول صادر شده به شرح زیر است:

_PARTITIONTIME TIMESTAMP این ستون شبه حاوی یک زمان بندی برای شروع روز (در UTC) است که داده ها در آن بارگیری شده است. برای پارتیشن YYYYMMDD ، این ستون شبه حاوی مقدار TIMESTAMP ('YYYY-MM-DD') است.
برچسب رویداد TIMESTAMP زمان بندی رویداد همانطور که توسط سرور ثبت شده است
شماره پروژه INTEGER شماره پروژه مشخص کننده پروژه ای است که پیام را ارسال کرده است
شناسه پیام STRING شناسه پیام یک پیام را مشخص می کند. شناسه پیام که از شناسه برنامه و زمان تولید می شود ، در برخی موارد ممکن است در سطح جهانی منحصر به فرد نباشد.
example_id STRING شناسه نمونه برنامه ای که پیام به آن ارسال می شود (در صورت موجود بودن)
نوع_پیام STRING نوع پیام. می تواند پیام اعلان یا پیام داده باشد. موضوع برای شناسایی پیام اصلی برای موضوع یا ارسال کمپین استفاده می شود. پیامهای بعدی یا اعلان است یا پیام داده.
sdk_platform STRING بستر برنامه گیرنده
نام برنامه STRING نام بسته برای برنامه های Android یا شناسه بسته برای برنامه های iOS
سقوط_کلید STRING کلید سقوط گروهی از پیام های قابل جمع شدن را مشخص می کند. هنگامی که یک دستگاه متصل نیست ، تنها آخرین پیام با یک کلید جمع آوری داده شده در صف تحویل قرار می گیرد
اولویت INTEGER اولویت پیام مقادیر معتبر "عادی" و "زیاد" هستند. در iOS ، این موارد با اولویت های APN 5 و 10 مطابقت دارد
ttl INTEGER این پارامتر مشخص می کند که در صورت آفلاین بودن دستگاه ، پیام چه مدت (در ثانیه) باید در ذخیره سازی FCM نگهداری شود
موضوع STRING نام موضوعی که پیام به آن ارسال شده است (در صورت وجود)
bulk_id INTEGER شناسه انبوه گروهی از پیام های مرتبط را مشخص می کند ، مانند ارسال خاصی به یک موضوع
رویداد STRING نوع رویداد. مقادیر احتمالی عبارتند از:
  • MESSAGE_ACCEPTED: پیام توسط سرور FCM دریافت شد و درخواست معتبر است.
  • MESSAGE_DELIVERED: پیام به دستگاه FCM SDK برنامه ارسال شده است. به طور پیش فرض ، این فیلد منتشر نمی شود. برای فعال کردن، دستورالعملهای ارائه شده در دنبال setDeliveryMetricsExportToBigQuery(boolean) .
  • MISSING_REGISTRATIONS: درخواست به دلیل عدم ثبت نام رد شد.
  • UNAUTHORIZED_REGISTRATION: پیام رد شد زیرا فرستنده مجاز به ارسال به ثبت نام نیست.
  • MESSAGE_RECEIVED_INTERNAL_ERROR: هنگام پردازش درخواست پیام یک خطای نامشخص رخ داد.
  • MISMATCH_SENDER_ID: درخواست ارسال پیام به دلیل عدم تطابق بین شناسه فرستنده پیام و درخواست اعلام شده برای نقطه پایانی رد شد.
  • QUOTA_EXCEEDED: درخواست ارسال پیام به دلیل سهمیه ناکافی رد شد.
  • INVALID_REGISTRATION: درخواست ارسال پیام به دلیل ثبت نامعتبر رد شد.
  • INVALID_PACKAGE_NAME: درخواست ارسال پیام به دلیل نامعتبر بودن نام بسته رد شد.
  • INVALID_APNS_CREDENTIAL: درخواست ارسال پیام به دلیل گواهی نامعتبر APNS رد شد.
  • INVALID_PARAMETERS: درخواست ارسال پیام به دلیل پارامترهای نامعتبر رد شد.
  • PAYLOAD_TOO_LARGE: درخواست ارسال پیام به دلیل بار بیشتر از حد مجاز رد شد.
  • AUTHENTICATION_ERROR: درخواست ارسال پیام به دلیل خطای احراز هویت رد شد (کلید API مورد استفاده برای ارسال پیام را بررسی کنید) ؛
  • INVALID_TTL: درخواست ارسال پیام به دلیل نامعتبر بودن TTL رد شد.
برچسب_تحلیلی STRING با HTTP V1 API ، برچسب تجزیه و تحلیل می تواند مجموعه ای به هنگام ارسال پیام، به منظور علامت پیام برای تجزیه و تحلیل اهداف

با داده های صادر شده چه کاری می توانید انجام دهید؟

بخشهای زیر نمونه هایی از پرس و جوهایی را ارائه می دهند که می توانید در BigQuery در برابر داده های FCM صادر شده خود اجرا کنید.

تعداد پیام های ارسال شده توسط برنامه را بشمارید

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;

تعداد برنامه های منحصر به فرد مورد هدف پیام ها را شمارش کنید

SELECT COUNT(DISTINCT instance_id)
FROM `project ID.firebase_messaging.data`
WHERE
  _PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
  AND event = 'MESSAGE_ACCEPTED';

شمارش پیام های اعلان ارسال شده

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';

شمارش پیام های ارسال شده

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';

پیام های ارسال شده به موضوع یا کمپین را بشمارید

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 != '';

برای پیگیری حوادث برای یک پیام فرستاده شده به موضوع خاص، تغییر این پرس و جو به جای AND message_id != '' با AND message_id = <your message id>; به

مدت زمان fanout را برای یک موضوع یا کمپین مشخص کنید

زمان شروع fanout زمانی است که درخواست اصلی دریافت می شود و زمان پایان زمانی است که آخرین پیام فردی که یک نمونه را هدف قرار می دهد ایجاد می شود.

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;

درصد شمارش پیام های ارسال شده

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;

همه رویدادها را برای شناسه پیام مشخص شده و شناسه نمونه پیگیری کنید

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;

تاخیر را برای شناسه پیام مشخص شده و شناسه نمونه محاسبه کنید

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;