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