منتشر شده: ۲۴ اکتبر ۲۰۱۹
محرکهای اعلان (Notification Triggers) چه هستند؟
توسعهدهندگان وب میتوانند با استفاده از API اعلانهای وب، اعلانها را نمایش دهند. این ویژگی اغلب با API Push برای اطلاعرسانی به کاربر در مورد اطلاعات حساس به زمان، مانند رویدادهای خبری فوری یا پیامهای دریافتی، استفاده میشود. اعلانها با اجرای جاوا اسکریپت در دستگاه کاربر نمایش داده میشوند.
مشکل API Push این است که برای فعال کردن اعلانهایی که باید در صورت برآورده شدن یک شرط خاص، مانند زمان یا مکان، نشان داده شوند، قابل اعتماد نیست. نمونهای از شرط مبتنی بر زمان، اعلان تقویم است که جلسه مهم با رئیستان را در ساعت ۲ بعد از ظهر به شما یادآوری میکند. نمونهای از شرط مبتنی بر مکان، اعلانی است که هنگام ورود به نزدیکی فروشگاه مواد غذایی، خرید شیر را به شما یادآوری میکند. اتصال به شبکه یا ویژگیهای حفظ باتری مانند حالت چرت زدن میتواند تحویل اعلانهای مبتنی بر فشار را به تأخیر بیندازد.
فعالکنندههای اعلان این مشکل را با فراهم کردن امکان زمانبندی اعلانها با توجه به شرایط فعالسازی آنها از قبل حل میکنند، به طوری که سیستم عامل حتی اگر اتصال به شبکه وجود نداشته باشد یا دستگاه در حالت صرفهجویی در باتری باشد، اعلان را در زمان مناسب ارسال میکند.
موارد استفاده
برنامههای تقویم میتوانند از اعلانهای مبتنی بر زمان برای یادآوری جلسات آینده به کاربر استفاده کنند. طرح اعلان پیشفرض برای یک برنامه تقویم میتواند به این صورت باشد که یک اعلان هشدار اولیه یک ساعت قبل از جلسه و سپس یک اعلان فوری دیگر پنج دقیقه قبل از آن نمایش داده شود.
یک شبکه تلویزیونی ممکن است به کاربران یادآوری کند که برنامه تلویزیونی مورد علاقهشان در حال شروع است یا پخش زنده یک کنفرانس در حال شروع است.
سایتهای تبدیل منطقه زمانی میتوانند از اعلانهای مبتنی بر زمان استفاده کنند تا به کاربران خود اجازه دهند زنگ هشدار را برای کنفرانسهای تلفنی یا تماسهای ویدیویی برنامهریزی کنند.
وضعیت فعلی
| قدم | وضعیت |
|---|---|
| ۱. توضیحدهنده ایجاد کنید | کامل |
| ۲. پیشنویس اولیه مشخصات را ایجاد کنید | شروع نشده |
| ۳. بازخوردها را جمعآوری کنید و روی طراحی تکرار کنید. | در حال انجام |
| ۴. آزمایش مبدا | کامل |
| ۵. راهاندازی | شروع نشده |
از محرکهای اعلان استفاده کنید
برای آزمایش API مربوط به Notification Triggers به صورت محلی، بدون توکن آزمایشی اصلی، پرچم #enable-experimental-web-platform-features را در about://flags فعال کنید.
تشخیص ویژگی
شما میتوانید با بررسی وجود ویژگی showTrigger متوجه شوید که آیا مرورگر از Notification Triggers پشتیبانی میکند یا خیر:
if ('showTrigger' in Notification.prototype) {
/* Notification Triggers supported */
}
زمانبندی اعلان
زمانبندی یک اعلان مشابه نمایش یک اعلان فشار معمولی است، با این تفاوت که باید یک ویژگی شرط showTrigger را به همراه یک شیء TimestampTrigger به عنوان مقدار به شیء options اعلان ارسال کنید.
const createScheduledNotification = async (tag, title, timestamp) => {
const registration = await navigator.serviceWorker.getRegistration();
registration.showNotification(title, {
tag: tag,
body: 'This notification was scheduled 30 seconds ago',
showTrigger: new TimestampTrigger(timestamp + 30 * 1000),
});
};
لغو اعلان زمانبندیشده
برای لغو اعلانهای زمانبندیشده، ابتدا از طریق ServiceWorkerRegistration.getNotifications() لیستی از تمام اعلانهایی که با یک تگ خاص مطابقت دارند را درخواست کنید. توجه داشته باشید که برای قرار گرفتن اعلانهای زمانبندیشده در لیست، باید پرچم includeTriggered را ارسال کنید:
const cancelScheduledNotification = async (tag) => {
const registration = await navigator.serviceWorker.getRegistration();
const notifications = await registration.getNotifications({
tag: tag,
includeTriggered: true,
});
notifications.forEach((notification) => notification.close());
};
اشکالزدایی
میتوانید از پنل اعلانهای Chrome DevTools برای اشکالزدایی اعلانها استفاده کنید. برای شروع اشکالزدایی، روی « شروع ضبط رویدادها» کلیک کنید.
یا Control + E ( Command + E در مک). Chrome DevTools تمام رویدادهای اعلان، از جمله اعلانهای برنامهریزیشده، نمایش دادهشده و بستهشده را به مدت سه روز، حتی زمانی که DevTools بسته است، ثبت میکند.


نسخه آزمایشی
شما میتوانستید Notification Triggers را در عمل در یک دمو مشاهده کنید، که به شما امکان میداد اعلانها را زمانبندی کنید، اعلانهای برنامهریزیشده را فهرست کنید و آنها را لغو کنید.

امنیت و مجوزها
تیم کروم، API مربوط به Notification Triggers را با استفاده از اصول اصلی تعریف شده در Controlling Access to Powerful Web Platform Features ، از جمله کنترل کاربر، شفافیت و ارگونومی، طراحی و پیادهسازی کرده است. از آنجا که این API به service workerها نیاز دارد، به یک زمینه امن نیز نیاز دارد. استفاده از API به همان مجوز اعلانهای معمولی نیاز دارد.
کنترل کاربر
این API فقط در زمینه ServiceWorkerRegistration در دسترس است. این بدان معناست که تمام دادههای مورد نیاز در همان زمینه ذخیره میشوند و هنگامی که service worker حذف میشود یا کاربر تمام دادههای سایت را برای مبدا حذف میکند، به طور خودکار حذف میشوند. مسدود کردن کوکیها همچنین از نصب service workerها در Chrome و در نتیجه از استفاده از این API جلوگیری میکند. کاربر همیشه میتواند اعلانها را برای سایت در تنظیمات سایت غیرفعال کند.
شفافیت
برخلاف Push API، این API به شبکه وابسته نیست، که به این معنی است که اعلانهای زمانبندیشده از قبل به تمام دادههای مورد نیاز، از جمله منابع تصویری که توسط badge ، icon و ویژگیهای image ارجاع داده میشوند، نیاز دارند. این بدان معناست که نمایش یک اعلان زمانبندیشده توسط توسعهدهنده قابل مشاهده نیست و شامل بیدار کردن سرویس ورکر تا زمانی که کاربر با اعلان تعامل نداشته باشد، نمیشود.
تا تاریخ انتشار این مقاله، هیچ راه شناختهشدهای وجود ندارد که توسعهدهنده بتواند از طریق رویکردهای بالقوه نقض حریم خصوصی مانند جستجوی موقعیت مکانی آدرس IP، اطلاعاتی در مورد کاربر به دست آورد. این طراحی همچنین به این ویژگی اجازه میدهد تا به صورت اختیاری از مکانیسمهای زمانبندی ارائه شده توسط سیستم عامل مانند AlarmManager اندروید استفاده کند که به حفظ باتری کمک میکند.
بازخورد
تیم کروم میخواهد از تجربیات شما در مورد Notification Triggers مطلع شود.
در مورد طراحی API به ما بگویید
آیا چیزی در مورد API وجود دارد که آنطور که انتظار داشتید کار نمیکند؟ یا متدها یا ویژگیهایی وجود ندارند که برای پیادهسازی ایده خود به آنها نیاز دارید؟ در مورد مدل امنیتی سؤال یا نظری دارید؟ یک مشکل مشخصات را در مخزن گیتهاب Notification Triggers ثبت کنید، یا نظرات خود را به یک مشکل موجود اضافه کنید.
مشکل در اجرا؟
آیا در پیادهسازی کروم اشکالی پیدا کردید؟ یا پیادهسازی با مشخصات متفاوت است؟ یک اشکال را در new.crbug.com ثبت کنید. حتماً تا حد امکان جزئیات، دستورالعملهای بازتولید و تنظیمات کامپوننتها را روی UI>Notifications تنظیم کنید.
قصد استفاده از API را دارید؟
آیا قصد دارید از Notification Triggers در سایت خود استفاده کنید؟ حمایت عمومی شما به ما کمک میکند تا ویژگیها را اولویتبندی کنیم و به سایر فروشندگان مرورگر نشان میدهد که پشتیبانی از آنها چقدر مهم است. با استفاده از هشتگ #NotificationTriggers یک توییت به @ChromiumDev ارسال کنید و به ما اطلاع دهید که کجا و چگونه از آن استفاده میکنید.
لینکهای مفید
- توضیح دهنده عمومی
- اشکال ردیابی
- ورودی ChromeStatus.com
- کامپوننت چشمک زن:
UI>Notifications
تقدیرنامهها
«راهاندازهای اعلان» توسط ریچارد نول پیادهسازی شده و توضیحدهنده آن توسط پیتر بورلو نوشته شده است، با مشارکت ریچارد. افراد زیر این مقاله را بررسی کردهاند: جو مدلی ، پیت لپیج ، و همچنین ریچارد و پیتر.