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