هدف ما این است که همیشه هر پیامی را که با استفاده از FCM ارسال میشود، تحویل دهیم. با این حال، گاهی اوقات تحویل هر پیام منجر به یک تجربه کاربری کلی ضعیف میشود. در موارد دیگر، باید مرزهایی را تعیین کنیم تا اطمینان حاصل شود که FCM یک سرویس مقیاسپذیر برای همه فرستندگان ارائه میدهد. انواع محدودیتها و سهمیههای شرح داده شده در این بخش به ما کمک میکند تا این عوامل مهم را متعادل کنیم.
محدود کردن پیامهای دریافتی
API نسخه ۱ HTTP سهمیهبندی به ازای هر پروژه و در هر دقیقه را برای پیامرسانیهای پاییندستی معرفی کرد. سهمیه پیشفرض ۶۰۰ هزار پیام در دقیقه بیش از ۹۹٪ از توسعهدهندگان FCM پوشش میدهد و در عین حال از پایداری سیستم محافظت کرده و تأثیر پروژههای نامنظم را به حداقل میرساند.
الگوهای ترافیکی نامنظم میتوانند منجر به خطاهای مربوط به سهمیه بیش از حد شوند. در سناریوی سهمیه بیش از حد، سیستم کد وضعیت HTTP 429 RESOURCE_EXHAUSTED
("QUOTA_EXCEEDED") را تا زمانی که سهمیه در دقیقه بعد دوباره پر شود، ارائه میدهد. پاسخهای 429 ممکن است در شرایط اضافه بار نیز بازگردانده شوند، بنابراین اکیداً توصیه میشود که 429 ها را طبق توصیههای منتشر شده مدیریت کنید.
به خاطر داشته باشید:
- سهمیه پاییندستی، پیامها را اندازهگیری میکند، نه درخواستها را.
- خطاهای کلاینت (کد وضعیت HTTP 400-499) شمارش میشوند (به استثنای خطاهای 429).
- سهمیهها بر اساس دقیقه هستند، اما این دقایق با ساعت هماهنگ نیستند.
سهمیه نظارت
شما میتوانید سهمیه، میزان استفاده و خطاها را در کنسول گوگل کلود با استفاده از موارد زیر مشاهده کنید:
- به کنسول Google Cloud بروید.
- APIها و سرویسها را انتخاب کنید.
- از لیست جدول، Firebase Cloud Messaging API را انتخاب کنید.
- محدودیتهای سهمیه و سیستم را انتخاب کنید.
درخواست افزایش سهمیه
قبل از درخواست افزایش سهمیه، اطمینان حاصل کنید که:
- میزان مصرف شما به طور منظم و حداقل برای ۵ دقیقه متوالی در روز، ≥ ۸۰٪ سهمیه باشد.
- شما نسبت خطای کلاینت کمتر از ۵٪ دارید، به خصوص در زمان اوج ترافیک.
- شما به بهترین شیوهها برای ارسال پیام در مقیاس بزرگ پایبند هستید.
اگر این معیارها را داشته باشید، میتوانید درخواست افزایش سهمیه تا سقف ۲۵٪+ را ارسال کنید و FCM تمام تلاش خود را برای تحقق این درخواست انجام خواهد داد (هیچ افزایشی تضمین نمیشود).
اگر به دلیل راهاندازی قریبالوقوع یا رویداد موقت، به سهمیه پیامرسانی پایینتری نیاز دارید، حداقل ۱۵ روز قبل درخواست سهمیه خود را ثبت کنید تا زمان کافی برای رسیدگی به درخواست وجود داشته باشد. برای درخواستهای بزرگ (بیش از ۱۸ میلیون پیام در دقیقه)، حداقل ۳۰ روز اطلاعرسانی لازم است. راهاندازیها و درخواستهای رویدادهای ویژه همچنان تابع نسبت خطای مشتری و الزامات بهترین شیوهها هستند.
برای کسب اطلاعات بیشتر، به سهمیههای FCM مراجعه کنید.
محدودیتهای پیامهای موضوعی و تنظیم پهنای باند
برای جزئیات بیشتر به سهمیهها و محدودیتهای پیامرسانی موضوعی مراجعه کنید.
محدود کردن پیامهای جمعشونده
همانطور که در پیامهای تاشو توضیح داده شد، پیامهای تاشو اعلانهای بدون محتوایی هستند که طوری طراحی شدهاند که روی هم جمع شوند. در صورتی که یک توسعهدهنده بیش از حد یک پیام را در یک برنامه تکرار کند، ما پیامها را به تأخیر میاندازیم تا تأثیر آن بر باتری کاربر کاهش یابد.
برای مثال، اگر تعداد زیادی درخواست همگامسازی ایمیل جدید را به یک دستگاه ارسال کنید، ممکن است درخواست همگامسازی ایمیل بعدی را چند دقیقه به تأخیر بیندازیم تا دستگاه بتواند با سرعت متوسط پایینتری همگامسازی شود. این کاهش سرعت به شدت برای محدود کردن تأثیر باتری بر کاربر انجام میشود.
اگر مورد استفاده شما نیاز به الگوهای ارسال پشت سر هم بالا دارد، پیامهای غیرقابل جمع شدن میتوانند انتخاب مناسبی باشند. برای چنین پیامهایی، حتماً محتوا را در چنین پیامهایی بگنجانید تا هزینه باتری کاهش یابد.
ما پیامهای قابل جمع شدن را به ۲۰ پیام پشت سر هم در هر برنامه در هر دستگاه محدود میکنیم و هر ۳ دقیقه ۱ پیام را دوباره پر میکنیم.
حداکثر سرعت ارسال پیام به یک دستگاه
برای اندروید، میتوانید تا ۲۴۰ پیام در دقیقه و ۵۰۰۰ پیام در ساعت به یک دستگاه ارسال کنید. این آستانه بالا برای مواقعی است که کاربران به سرعت در حال تعامل در چت هستند. این محدودیت از خطاهای ارسال منطق که باعث تخلیه ناخواسته باتری دستگاه میشود، جلوگیری میکند.
برای iOS، وقتی نرخ از محدودیتهای APN فراتر میرود، خطا برمیگردانیم.