دریافت پیام در برنامه‌های C++‎

انتخاب پلاتفرم: iOS+ Android Web Flutter Unity 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 یک رمز ثبت برای نمونه برنامه کارخواه تولید می‌کند. اگر می‌خواهید دستگاه‌های تکی را هدف‌یابی کنید، یا گروه‌های دستگاه برای 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.
}

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

برای دریافت پیام، کلاس «شنونده» شما باید 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. دستگاه مدت زیادی است که متصل نشده است و سرور برنامه اخیراً (در ۴ هفته گذشته) پیامی به برنامه در آن دستگاه ارسال کرده است.

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