پیام This site has been updated in the background در وب پوش چیست؟!
گاهی اوقات ممکنه در گوگل کروم یک پیام پیشفرض ببینید که میگه:
«This site has been updated in the background»
این پیام یعنی یک وبسایت یک پیام پوش فرستاده، اما به دلایلی برای شما نوتیفیکیشن واقعی نمایش داده نشده است.
🔹 دلیلش اینه که هر پیام پوش باعث میشه سایت در پسزمینه فعال بشه. این موضوع ممکنه نگرانی امنیتی یا مصرف انرژی برای شما ایجاد کنه. برای همین مرورگر گوگل کروم قوانینی رو برای پوش نوتیفیکیشن های وب وضع کرده و میگه: اگر سایتی پوش میفرسته، باید حتماً یک چیزی به کاربر نشون بده (مثل یک نوتیفیکیشن). اگر سایت چیزی نشون نده، خود کروم بهطور پیشفرض این پیام رو نمایش میده تا کاربر بدونه پشتصحنه اتفاقی افتاده است. به بیان دیگر گاها ممکنه سایتی عمدتا پیامی رو به کاربر نشون نده ولی یک سری پردازش ها در پس زمینه روی مرورگر کاربر انجام بده و یا اینکه بصورت سهوی به علت وجود خطا در سرویس پوش نوتیفیکیشن راه اندازی شده نتونه پیامی رو به کاربر نشون بده در هر دو حالت چنین پیامی به کاربر بصورت پیش فرض نمایش داده میشه تا کاربر از وجود یک سری پردازش پشت صحنه مطلع بشه.
دلایل رایج نمایش اعلان پیشفرض در گوگل کروم:
نصب نشدن صحیح Service Worker
اجرای کد پوش بدون نمایش اعلان
وجود خطا در کد قبل از نمایش نوتیفیکیشن
وابستگی به درخواست HTTP برای دریافت داده نوتیفیکیشن (که ممکن است هنگام پردازش پوش در دسترس نباشد)
اگر شما یک کاربر هستید:
نگران نباشید، مشکلی برای شما ایجاد نمیکند.
اگر دوست ندارید، میتوانید نوتیفیکیشنهای آن سایت را غیرفعال کنید.
مطمئن شوید مرورگر شما به آخرین نسخه آپدیت شده باشد.
میتوانید مشکل را به صاحب سایت گزارش دهید.
راهحل برای توسعهدهنده (صاحب سایت)
اگر سایت شما این پیام رو به کاربران نشون میده:
بدونید که ارسال Silent Push در مروگر گوگل کروم فعلا مجاز نیست.
یعنی شما باید هر بار که پوش میفرستید، حتماً یک نوتیفیکیشن واقعی نمایش دهید.
❌ اشتباه: فقط کار در پسزمینه بدون نمایش نوتیفیکیشن
self.addEventListener('push', function(event) { // فقط اجرای پسزمینه، بدون نمایش نوتیفیکیشن });
❌ اشتباه: نمایش نوتیفیکیشن بدون استفاده از waitUntil
self.addEventListener('push', function(event) { var notification = event.data.json(); self.registration.showNotification(notification.title, notification.options); });
✅ درست: استفاده از waitUntil
self.addEventListener('push', function(event) { var notification = event.data.json(); event.waitUntil( self.registration.showNotification(notification.title, notification.options) ); });
نکته: waitUntil باعث میشه رویداد پوش تا وقتی که نوتیفیکیشن نشون داده بشه، کامل نشه.
اگر مشتری سرویس ارسال پوش نوتیفیکیشن ایرانی پوشفا هستید
اگر از Pushfa SDK برای ارسال پوش نوتیفیکیشن سایت خودتون استفاده کنید، به طور پیشفرض همه این موارد رعایت شده و چنین پیام پیشفرضی نمایش داده نمیشه.
مطمئن بشید Service Worker به درستی نصب شده باشه.
اگر باز هم مشکلی بود، میتونید بخش پشتیبانی پوشفا رو مطلع کنید تا بررسی های لازم رو انجام بدهند.
اگر فقط بعضی کاربران مشکل دارند، احتمالاً دلیلش اینه که از نسخه قدیمی مرورگر استفاده میکنند؛ بهتره به اونها پیشنهاد بدید مرورگرشون رو آپدیت کنند.