دریافت پیام در یک برنامه مشتری ++C

برای دریافت پیام‌های پایین‌دستی ساده، هر برنامه مشتری باید متدها را در 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 هفته گذشته) پیامی به برنامه روی آن دستگاه ارسال کرده است.

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