คำอธิบาย
ใช้ chrome.alarms API เพื่อกำหนดเวลาให้โค้ดทำงานเป็นระยะๆ หรือตามเวลาที่ระบุในอนาคต
สิทธิ์
alarmsไฟล์ Manifest
หากต้องการใช้ chrome.alarms API ให้ประกาศสิทธิ์ "alarms" ในไฟล์ Manifest ดังนี้
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีใช้และตอบสนองต่อการตั้งปลุก หากต้องการลองใช้ API นี้ ให้ติดตั้งตัวอย่าง Alarm API จากที่เก็บ chrome-extension-samples
ตั้งปลุก
ตัวอย่างต่อไปนี้จะตั้งปลุกใน Service Worker เมื่อมีการติดตั้งส่วนขยาย
service-worker.js:
chrome.runtime.onInstalled.addListener(async ({ reason }) => {
if (reason !== 'install') {
return;
}
// Create an alarm so we have something to look at in the demo
await chrome.alarms.create('demo-default-alarm', {
delayInMinutes: 1,
periodInMinutes: 1
});
});
ตอบสนองต่อการตั้งปลุก
ตัวอย่างต่อไปนี้จะตั้งค่าไอคอนแถบเครื่องมือการดำเนินการตามชื่อการตั้งปลุกที่ดังขึ้น
service-worker.js:
chrome.alarms.onAlarm.addListener((alarm) => {
chrome.action.setIcon({
path: getIconPath(alarm.name),
});
});
ประเภท
Alarm
พร็อพเพอร์ตี้
-
ชื่อ
สตริง
ชื่อการตั้งปลุกนี้
-
periodInMinutes
ตัวเลข ไม่บังคับ
หากไม่ใช่ค่า Null การตั้งปลุกนี้จะเป็นการตั้งปลุกแบบซ้ำและจะดังขึ้นอีกครั้งใน
periodInMinutesนาที -
persistAcrossSessions
บูลีน
รอดำเนินการระบุว่าการตั้งปลุกควรคงอยู่ข้ามเซสชัน (การรีสตาร์ทเบราว์เซอร์) หรือไม่
-
scheduledTime
ตัวเลข
เวลาที่กำหนดให้สัญญาณปลุกนี้เริ่มทำงานในรูปแบบมิลลิวินาทีที่ผ่านไปนับตั้งแต่ Epoch (เช่น
Date.now() + n) ระบบอาจเลื่อนสัญญาณปลุกออกไปอีกระยะหนึ่งด้วยเหตุผลด้านประสิทธิภาพ
AlarmCreateInfo
พร็อพเพอร์ตี้
-
delayInMinutes
ตัวเลข ไม่บังคับ
ระยะเวลาเป็นนาทีหลังจากนั้นเหตุการณ์
onAlarmควรเริ่มทำงาน -
periodInMinutes
ตัวเลข ไม่บังคับ
หากตั้งค่าไว้ เหตุการณ์ onAlarm ควรเริ่มทำงานทุกๆ
periodInMinutesนาทีหลังจากเหตุการณ์เริ่มต้นที่ระบุโดยwhenหรือdelayInMinutesหากไม่ได้ตั้งค่าไว้ การตั้งปลุกจะดังขึ้นเพียงครั้งเดียว -
persistAcrossSessions
บูลีน ไม่บังคับ
รอดำเนินการระบุว่าการตั้งปลุกควรคงอยู่ข้ามเซสชัน (การรีสตาร์ทเบราว์เซอร์) หรือไม่ ใน Chrome ค่าเริ่มต้นจะเป็น "จริง" เพื่อให้ตรงกับลักษณะการทำงานในอดีต แต่คุณควรตั้งค่านี้อย่างชัดเจนเพื่อเพิ่มความเข้ากันได้สูงสุดในเบราว์เซอร์ต่างๆ
-
เมื่อใด
ตัวเลข ไม่บังคับ
เวลาที่การตั้งปลุกควรดังขึ้นในรูปแบบมิลลิวินาทีที่ผ่านไปนับตั้งแต่ Epoch (เช่น
Date.now() + n)
เมธอด
clear()
chrome.alarms.clear(
name?: string,
callback?: function,
): Promise<boolean>
ล้างการตั้งปลุกที่มีชื่อที่ระบุ
พารามิเตอร์
-
ชื่อ
สตริง ไม่บังคับ
ชื่อการตั้งปลุกที่จะล้าง ค่าเริ่มต้นจะเป็นสตริงว่าง
-
callback
ฟังก์ชัน (ไม่บังคับ)
พารามิเตอร์
callbackมีลักษณะดังนี้:(wasCleared: boolean) => void
-
wasCleared
บูลีน
-
การคืนสินค้า
-
Promise<boolean>
Chrome 91 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
clearAll()
chrome.alarms.clearAll(
callback?: function,
): Promise<boolean>
ล้างการตั้งปลุกทั้งหมด
พารามิเตอร์
-
callback
ฟังก์ชัน (ไม่บังคับ)
พารามิเตอร์
callbackมีลักษณะดังนี้:(wasCleared: boolean) => void
-
wasCleared
บูลีน
-
การคืนสินค้า
-
Promise<boolean>
Chrome 91 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
callback?: function,
): Promise<void>
สร้างการตั้งปลุก ระบบจะเริ่มทำงานเหตุการณ์ onAlarm ใกล้กับเวลาที่ระบุโดย alarmInfo หากมีการตั้งปลุกอื่นที่มีชื่อเดียวกัน (หรือไม่มีชื่อหากไม่ได้ระบุ) ระบบจะยกเลิกและแทนที่ด้วยการตั้งปลุกนี้
Chrome จำกัดการตั้งปลุกไว้ที่อย่างน้อยทุกๆ 30 วินาที แต่ระบบอาจเลื่อนการตั้งปลุกออกไปอีกระยะหนึ่งเพื่อลดภาระงานในเครื่องของผู้ใช้ นั่นคือ การตั้งค่า delayInMinutes หรือ periodInMinutes ให้น้อยกว่า 0.5 จะไม่ได้รับการยอมรับและจะทำให้เกิดคำเตือน คุณตั้งค่า when ให้น้อยกว่า 30 วินาทีหลังจาก "ตอนนี้" ได้โดยไม่มีคำเตือน แต่สัญญาณปลุกจะไม่เริ่มทำงานอย่างน้อย 30 วินาที
เมื่อคุณโหลดแอปหรือส่วนขยายแบบคลายการแพคข้อมูลไว้ ระบบจะไม่มีการจำกัดความถี่ที่สัญญาณปลุกจะเริ่มทำงาน เพื่อช่วยคุณในการแก้ไขข้อบกพร่องของแอปหรือส่วนขยาย
พารามิเตอร์
-
ชื่อ
สตริง ไม่บังคับ
ชื่อที่ไม่บังคับเพื่อระบุการตั้งปลุกนี้ ค่าเริ่มต้นจะเป็นสตริงว่าง
-
alarmInfo
อธิบายเวลาที่การตั้งปลุกควรดังขึ้น คุณต้องระบุเวลาเริ่มต้นด้วย
whenหรือdelayInMinutesอย่างใดอย่างหนึ่ง (แต่ไม่ใช่ทั้ง 2 อย่าง) หากตั้งค่าperiodInMinutesไว้ การตั้งปลุกจะดังซ้ำทุกๆperiodInMinutesนาทีหลังจากเหตุการณ์เริ่มต้น หากไม่ได้ตั้งค่าwhenหรือdelayInMinutesสำหรับการตั้งปลุกแบบซ้ำ ระบบจะใช้periodInMinutesเป็นค่าเริ่มต้นสำหรับdelayInMinutes -
callback
ฟังก์ชัน (ไม่บังคับ)
Chrome 111 ขึ้นไปพารามิเตอร์
callbackมีลักษณะดังนี้:() => void
การคืนสินค้า
-
Promise<void>
Chrome 111 ขึ้นไปPromise ที่แสดงผลเมื่อมีการสร้างการตั้งปลุก
ระบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
get()
chrome.alarms.get(
name?: string,
callback?: function,
): Promise<Alarm | undefined>
ดึงข้อมูลรายละเอียดเกี่ยวกับการตั้งปลุกที่ระบุ
พารามิเตอร์
-
ชื่อ
สตริง ไม่บังคับ
ชื่อการตั้งปลุกที่จะดึงข้อมูล ค่าเริ่มต้นจะเป็นสตริงว่าง
-
callback
ฟังก์ชัน (ไม่บังคับ)
พารามิเตอร์
callbackมีลักษณะดังนี้:(alarm?: Alarm) => void
-
การตั้งปลุก
การตั้งปลุก (ไม่บังคับ)
-
การคืนสินค้า
-
Promise<Alarm | undefined>
Chrome 91 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
getAll()
chrome.alarms.getAll(
callback?: function,
): Promise<Alarm[]>
รับอาร์เรย์ของการตั้งปลุกทั้งหมด
พารามิเตอร์
การคืนสินค้า
-
Promise<Alarm[]>
Chrome 91 ขึ้นไประบบรองรับ Promise สำหรับ Manifest V3 ขึ้นไปเท่านั้น แพลตฟอร์มอื่นๆ ต้องใช้ Callback
กิจกรรม
onAlarm
chrome.alarms.onAlarm.addListener(
callback: function,
)
เริ่มทำงานเมื่อการตั้งปลุกดังขึ้น มีประโยชน์สำหรับหน้ากิจกรรม
พารามิเตอร์
-
callback
ฟังก์ชัน
พารามิเตอร์
callbackมีลักษณะดังนี้:(alarm: Alarm) => void
-
การตั้งปลุก
-