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

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

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