شما دو گزینه برای اختصاص دادن اولویت تحویل به پیام های پایین دستی در اندروید دارید: عادی و اولویت بالا. تحویل پیام های عادی و با اولویت بالا به این صورت عمل می کند:
اولویت عادی این اولویت پیشفرض برای دادهها و پیامهای اعلان است. پیام های اولویت عادی بلافاصله زمانی که دستگاه در حالت خواب نیست تحویل داده می شود. هنگامی که دستگاه در حالت Doze است، ممکن است تحویل برای صرفه جویی در باتری تا زمانی که دستگاه از حالت Doze خارج شود به تاخیر بیفتد. برای پیامهایی که کمتر به زمان حساس هستند، مانند اعلانهای ایمیل جدید، همگامسازی رابط کاربری خود، یا همگامسازی دادههای برنامه در پسزمینه، اولویت تحویل عادی را انتخاب کنید.
اولویت بالا FCM سعی میکند پیامهای با اولویت بالا را فوراً ارسال کند، و به FCM اجازه میدهد تا در صورت لزوم یک دستگاه خواب را بیدار کند و برخی پردازشهای محدود (از جمله دسترسی بسیار محدود به شبکه) را اجرا کند. پیامهای با اولویت بالا معمولاً باید منجر به تعامل کاربر با برنامه یا اعلانهای آن شود.
تصمیم گیری بین پیام های با اولویت بالا و معمولی
در حالی که پیامهای اولویت عادی برای بهروزرسانیهای عمومی مناسب هستند، زمانی که نیاز به اطمینان از تحویل فوری برای امور یا اقدامات فوری دارید، اولویت بالا را انتخاب کنید. از آنجایی که زمان تحویل پیامهای اولویتدار معمولی میتواند تحت تأثیر حالت Doze قرار گیرد، تنظیم بیشتر اعلانهای قابل مشاهده کاربر روی اولویت بالا تضمین میکند که بهموقع تحویل داده میشوند. به عنوان مثال، اعلانهایی مانند پیامهای چت، مشکلات یک حساب کاربری، یا بهروزرسانیهای تحویل غذا باید روی اولویت بالا تنظیم شوند.
پردازش پیام برای پیام های با اولویت بالا و معمولی
برای اعلانهای با اولویت بالا و معمولی دریافتشده در دستگاه Android، چند ثانیه برای پردازش بار پیام در کنترلکننده onMessageReceived
زمان داده میشود. برای هرگونه اعلانهایی که نیاز به پردازش ناهمزمان بار پیام دارند، توصیه میکنیم از ساختاری مانند WorkManager استفاده کنید، زیرا این زمان ممکن است بیشتر از زمان دادهشده به کنترلکننده onMessageReceived
باشد.
برای پیامهای دارای اولویت بالا، میتوانید با استفاده از Android WorkManager یک کار سریع را برنامهریزی کنید تا مطمئن شوید این اعلانها اولویتبندی شدهاند و تا پایان کامل میشوند.
برای پیامهای اولویت عادی، میتوانید با استفاده از Android WorkManager یک OneTimeWorkRequest معمولی را برنامهریزی کنید. این اطمینان حاصل می کند که کار اضافی مورد نیاز بدون استفاده از پردازش اولویت بندی شده پردازش می شود.
تنظیم اولویت برای پیام ها
میتوانید با استفاده از Admin SDK ، FCM REST API و کنسول Firebase اعلانها را برای کاربران خود ارسال کنید. برای تغییر تنظیمات اولویت خود از Admin SDK و FCM REST API، باید پیام JSON payload را به روز کنید. می توانید از نمونه کد زیر برای مشاهده نحوه تنظیم اولویت روی بالا استفاده کنید. برای اعلانهای ارسال شده از کنسول، تنظیم فیلدهای اعلان مخصوص Android پشتیبانی نمیشود.
{
"message": {
"notification": {
"body": "Purchase exceeding $500 detected",
"title": "Credit card purchase"
},
"data": {
"purchaser": "Your child",
"items": "Gravity Defier Sneakers"
},
"android": {
"priority": "high"
},
"apns": {
"headers": {
"apns-priority": "5"
}
}
}
}
اعلان های با اولویت بالا را در حالت Doze تست کنید
برای اطمینان از اینکه اعلانهای با اولویت بالا در هنگام دریافت توسط کاربر به درستی دریافت و پردازش میشوند، این دستورالعملها را برای آزمایش اعلانهای خود دنبال کنید:
- با استفاده از دستورالعملهای موجود در تست برنامه خود با Doze، دستگاه خود را روی حالت Doze تنظیم کنید.
- از برنامه خود در دستگاه آزمایشی به کد ثبت FCM خود دسترسی پیدا کنید. برای اطلاعات بیشتر در مورد نحوه دسترسی به رمز، به ارسال پیام آزمایشی به برنامه پسزمینه مراجعه کنید.
- پس از دریافت رمز FCM ، اعلان اولویت بالا خود را با استفاده از کد ارسال اعلان FCM یا دستور cURL %3B%0A%7D)-,cURL,-curl%20%2DX) که دارای پارامترهای پیکربندی مطابق با اعلان اولویت بالا شما است، به دستگاه آزمایشی ارسال کنید.
اولویت بندی FCM با اولویت بالا در اندروید
پیامهای با اولویت بالا در Android برای محتوای حساس به زمان و قابل مشاهده توسط کاربر هستند و باید منجر به اعلانهایی برای کاربر شوند. اگر FCM الگویی را تشخیص دهد که در آن پیامها به اعلانهای کاربر منجر نمیشوند، پیامهای شما ممکن است در اولویت عادی قرار نگیرند یا به سرویسهای Google Play واگذار شوند .
FCM از 7 روز رفتار پیام برای تعیین اولویت بندی یا پراکسی پیام ها استفاده می کند. این تعیین را به طور مستقل برای هر نمونه از برنامه شما انجام می دهد. اگر در پاسخ به پیامهای با اولویت بالا، اعلانها به گونهای نمایش داده شوند که برای کاربر قابل مشاهده باشد، پیامهای با اولویت بالا در آینده شما تحت تأثیر قرار نخواهند گرفت.
تفویض اعلان با خدمات Google Play
پیامهای اعلان با اولویت بالا که معیارهای خاصی را دارند، به جای اینکه اولویتبندی شوند، توسط سرویسهای Google Play پروکسی میشوند. این بدان معنی است که اعلان ها توسط سرویس های Google Play از طرف برنامه نمایش داده می شود، بدون نیاز به راه اندازی برنامه. این کار برای ارائه یک تجربه کلی بهتر کاربر در دستگاه های اندرویدی انجام می شود.
توجه داشته باشید که پیامهای اعلان پروکسی تغییراتی را در نحوه گزارش تحلیلهای مربوط به پیامهای دریافتی ایجاد میکنند:
- برای اینکه تجزیه و تحلیل برای اعلانهای پروکسی گزارش شود، برنامه شما باید از FCM SDK نسخه 24.0.0 یا بالاتر استفاده کند.
- ممکن است متوجه تاخیر یا کاهش تعداد پیامهای دریافتی در مقایسه با تعداد قبل از معرفی اعلانهای پروکسی شوید. این به این دلیل است که تجزیه و تحلیل برای اعلانهای پروکسی تنها زمانی گزارش میشود که برنامه شما شروع به کار کند، و اگر اعلان منجر به باز شدن برنامه نشود، ممکن است اصلا گزارش نشود.
پروکسی کردن پیامهای اعلان به این روش، رفتار پیشفرض برنامههایی است که از Android Q+ و خدمات Google Play نسخه 19054000 یا بالاتر استفاده میکنند. پیامهایی که از طریق HTTP v1 API ارسال میشوند، پروکسی هستند، اما پیامهایی که از طریق کنسول Firebase یا APIهای قدیمی ارسال میشوند ، پروکسی نمیشوند . توجه داشته باشید که این ویژگی در حال حاضر در نسخه بتا است و ممکن است تغییر کند.
اگرچه اکیداً توصیه میکنیم که تفویض اختیار را برای مزایای آن برای باتری و حافظه دستگاه فعال کنید، میتوانید به هر یک از روشهای زیر از این رفتار انصراف دهید:
- بر اساس سطح برنامه: در مانیفست برنامه خود، دستورالعمل
<meta-data android:name= "delivery_metrics_exported_to_big_query_enabled" android:value="false"/>
اضافه کنید. - بر اساس نمونه برنامه: برای نمونه برنامه، بسته به مورد استفاده خاص
fun setNotificationDelegationEnabled(disable: Boolean): Task<Void!>
در جریان رابط کاربری برنامه خود تنظیم کنید. - بر اساس هر پیام: کلید
proxy
را در شیءAndroidNotification
برای درخواست ارسال رویDENY
تنظیم کنید.
اندازه گیری اولویت بندی پیام در اندروید
پیام های فردی هنگام تحویل، میتوانید با مقایسه اولویت تحویلشده آن، از getPriority() با اولویت اصلیاش، از getOriginalPriority() تعیین کنید که آیا یک پیام فردی اولویتبندی شده است یا خیر.
همه پیام ها API FCM Aggregate Delivery Data میتواند گزارش دهد که چند درصد از همه پیامهای شما به Android در اولویت قرار دارند. برخی از پیامها ممکن است از گزارشهای دادههای انبوه حذف شوند، اما به طور کلی باید دیدی کلی از نرخهای اولویتبندی پیام ارائه دهند. برای اطلاعات بیشتر و کد نمونه برای پرس و جو از API، به مقاله ما در مورد داده های تحویل انبوه مراجعه کنید. همچنین می توان آن را از کاوشگر API کاوش کرد.
اعلان های پروکسی اعلانهای پروکسی در معیارهای فعلی تحویل FCM یا GA محاسبه نمیشوند، بنابراین ممکن است تا 15 درصد کاهش در معیارهای تحویل اعلان را تجربه کنید. برای گزارش پیامهای پروکسی، از API FCM Aggregate Delivery Data استفاده کنید.
ProxyNotificationInsightPercents
درصد اعلانهای پراکسی شده با موفقیت و همچنین جزئیات پیامهایی را که نمیتوان با موفقیت پروکسی کرد، گزارش میکند.
عیب یابی تاخیرهای اعلان
مطمئن شوید که نمونه برنامه شما اعلانها را فعال کرده باشد. اگر کاربر مجوز اعلان برنامه شما را غیرفعال کرده باشد، هیچ یک از اعلانهای شما پست نمیشود، در نتیجه پیامهای شما از اولویت برخوردار میشوند. قبل از ارسال پیام های با اولویت بالا به یک نمونه برنامه، باید بررسی کنید که اعلان ها فعال هستند .
هنگام پردازش اعلان خود از برقراری تماس های شبکه اضافی خودداری کنید. از آنجایی که بخش کوچکی از جمعیت تلفن همراه اندروید در شبکههای با تأخیر بالا هستند، قبل از نمایش اعلان، از باز کردن اتصال به سرورهای خود اجتناب کنید. تماس مجدد با سرور قبل از پایان زمان پردازش مجاز ممکن است برای کاربران در شبکههای با تأخیر بالا خطرناک باشد.
در عوض، محتوای اعلان را در پیام FCM قرار دهید و بلافاصله آن را نمایش دهید. اگر نیاز به همگامسازی برای محتوای درونبرنامه اضافی در Android دارید، میتوانید با WorkManager یک کار را برای مدیریت آن در پسزمینه برنامهریزی کنید.