این راهنما نحوه تنظیم Firebase Cloud Messaging را در برنامههای موبایل و کلاینت وب شما شرح میدهد تا بتوانید پیامها را به طور قابل اعتمادی دریافت کنید.
برای دریافت پیامهای پاییندستی، هر برنامهی کلاینت باید متدهای موجود در API firebase::messaging::Listener
پیادهسازی کند.
مقداردهی اولیه 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"
خواهد بود. پیامها ممکن است به دلایل زیر حذف شوند:
تعداد پیامهای ذخیره شده در سرور FCM بسیار زیاد است.
این میتواند زمانی رخ دهد که سرورهای یک برنامه، در حالی که دستگاه آفلاین است، دستهای از پیامهای غیرقابلجمع را به سرورهای FCM ارسال کنند.
دستگاه مدت زیادی است که متصل نشده و سرور برنامه اخیراً (طی ۴ هفته گذشته) پیامی به برنامه روی آن دستگاه ارسال کرده است.
توصیه میشود که برنامه پس از دریافت این تماس، همگامسازی کامل را با سرور برنامه انجام دهد.