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