با استفاده از Firebase Cloud Messaging پیام ها را دریافت کنید

این راهنما نحوه راه‌اندازی Firebase Cloud Messaging در برنامه‌های موبایل و کلاینت وب خود توضیح می‌دهد تا بتوانید پیام‌ها را به‌طور مطمئن دریافت کنید.

برای دریافت پیام‌های پایین‌دست، هر برنامه مشتری باید متدها را در firebase::messaging::Listener API پیاده‌سازی کند.

FCM را راه اندازی کنید

قبل از اینکه بتوانید از FCM برای دسترسی به رمز ثبت نام خود یا دریافت پیام استفاده کنید، باید مقداردهی اولیه شود.

برای مقداردهی اولیه FCM ، ::firebase::messaging::Initialize کنید و آن را با شی ::firebase::App خود و همچنین پیاده سازی کلاس ::firebase::messaging::Listener به آن عرضه کنید.

MyListener my_listener_implementation;
::firebase::messaging::Initialize(app, &my_listener_implementation);

به رمز ثبت نام دسترسی پیدا کنید

در راه اندازی اولیه برنامه شما، FCM SDK یک نشانه ثبت نام برای نمونه برنامه مشتری ایجاد می کند. اگر می‌خواهید دستگاه‌های تکی را هدف قرار دهید، یا گروه‌های دستگاهی را برای FCM ایجاد کنید، باید به این نشانه دسترسی داشته باشید.

شما می توانید از طریق تابع مجازی ::firebase::messaging::Listener::OnTokenReceived به مقدار توکن دسترسی پیدا کنید.

void OnTokenReceived(const char* token) {
  LogMessage("The registration token is `%s`", token);

  // TODO: If necessary send token to application server.
}

دریافت و مدیریت پیام ها

برای دریافت پیام ها، کلاس Listener شما باید تابع مجازی OnMessage پیاده سازی کند.

لغو OnMessage

با نادیده گرفتن روش ::firebase::messaging::Listener::OnMessage ، می توانید اقداماتی را بر اساس پیام دریافتی انجام دهید و داده پیام را دریافت کنید:

void OnMessage(const ::firebase::messaging::Message& message) {
  LogMessage(TAG, "From: %s", message.from.c_str());
  LogMessage(TAG, "Message ID: %s", message.message_id.c_str());
}

پیام ها می توانند انواع مختلفی از داده های دریافتی را نشان دهند. معمولاً پیام‌ها پس از راه‌اندازی توسط برنامه‌نویس به برنامه ارسال می‌شوند. همچنین پیام‌هایی برای نمایش رویدادهای پیام ارسال شده، رویدادهای خطای ارسال پیام و رویدادهای حذف شده پیام‌ها به برنامه شما ارسال می‌شود. این رویدادهای خاص را می توان با بررسی قسمت Message::message_type متمایز کرد.

پیام ها حذف شد

زمانی که سرور FCM پیام های معلق را حذف می کند به برنامه شما ارسال می شود. Message::message_type "deleted_messages" خواهد بود. ممکن است پیام ها به دلایل زیر حذف شوند:

  1. تعداد زیادی پیام در سرور FCM ذخیره شده است.

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

  2. دستگاه مدت زیادی است که وصل نشده است و سرور برنامه اخیراً (در 4 هفته گذشته) پیامی به برنامه روی آن دستگاه ارسال کرده است.

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