Mô tả
Sử dụng API chrome.alarms
để lên lịch chạy mã định kỳ hoặc vào một thời điểm cụ thể trong tương lai.
Quyền
alarms
Tệp kê khai
Để sử dụng API chrome.alarms
, hãy khai báo quyền "alarms"
trong tệp kê khai:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
Ví dụ
Các ví dụ sau đây minh hoạ cách sử dụng và phản hồi một chuông báo. Để dùng thử API này, hãy cài đặt ví dụ về Alarm API trong kho lưu trữ chrome-extension-samples.
Đặt chuông báo
Ví dụ sau đây đặt một báo thức trong trình chạy dịch vụ khi tiện ích được cài đặt:
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
});
});
Phản hồi tín hiệu báo động
Ví dụ sau đây đặt biểu tượng thanh công cụ thao tác dựa trên tên của chuông báo đã đổ chuông.
service-worker.js:
chrome.alarms.onAlarm.addListener((alarm) => {
chrome.action.setIcon({
path: getIconPath(alarm.name),
});
});
Loại
Alarm
Thuộc tính
-
tên
chuỗi
Tên của chuông báo này.
-
periodInMinutes
number không bắt buộc
Nếu không phải là giá trị rỗng, thì chuông báo là chuông báo lặp lại và sẽ đổ chuông lại sau
periodInMinutes
phút. -
scheduledTime
số
Thời gian mà chuông báo này được lên lịch kích hoạt, tính bằng mili giây kể từ thời điểm bắt đầu (ví dụ:
Date.now() + n
). Vì lý do hiệu suất, chuông báo có thể bị trì hoãn một khoảng thời gian tuỳ ý ngoài khoảng thời gian này.
AlarmCreateInfo
Thuộc tính
-
delayInMinutes
number không bắt buộc
Khoảng thời gian (tính bằng phút) sau đó sự kiện
onAlarm
sẽ kích hoạt. -
periodInMinutes
number không bắt buộc
Nếu được đặt, sự kiện onAlarm sẽ kích hoạt sau mỗi
periodInMinutes
phút kể từ sự kiện ban đầu dowhen
hoặcdelayInMinutes
chỉ định. Nếu bạn không đặt, chuông báo sẽ chỉ đổ một lần. -
khi
number không bắt buộc
Thời gian mà chuông báo sẽ đổ chuông, tính bằng mili giây kể từ thời gian bắt đầu của hệ thống (ví dụ:
Date.now() + n
).
Phương thức
clear()
chrome.alarms.clear(
name?: string,
callback?: function,
): Promise<boolean>
Xoá chuông báo có tên đã cho.
Thông số
-
tên
chuỗi không bắt buộc
Tên của chuông báo cần xoá. Giá trị mặc định là chuỗi trống.
-
callback
hàm không bắt buộc
Tham số
callback
có dạng như sau:(wasCleared: boolean) => void
-
wasCleared
boolean
-
Giá trị trả về
-
Promise<boolean>
Chrome 91 trở lênCác promise chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
clearAll()
chrome.alarms.clearAll(
callback?: function,
): Promise<boolean>
Xoá tất cả chuông báo.
Thông số
-
callback
hàm không bắt buộc
Tham số
callback
có dạng như sau:(wasCleared: boolean) => void
-
wasCleared
boolean
-
Giá trị trả về
-
Promise<boolean>
Chrome 91 trở lênCác promise chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
callback?: function,
): Promise<void>
Tạo chuông báo. Gần đến(các) thời điểm do alarmInfo
chỉ định, sự kiện onAlarm
sẽ được kích hoạt. Nếu có một chuông báo khác có cùng tên (hoặc không có tên nếu bạn không chỉ định), thì chuông báo đó sẽ bị huỷ và thay thế bằng chuông báo này.
Để giảm tải cho máy của người dùng, Chrome giới hạn số lượng chuông báo ở mức tối đa là 1 lần mỗi 30 giây nhưng có thể trì hoãn thêm một khoảng thời gian tuỳ ý. Tức là việc đặt delayInMinutes
hoặc periodInMinutes
thành giá trị nhỏ hơn 0.5
sẽ không được chấp nhận và sẽ gây ra cảnh báo. when
có thể được đặt thành dưới 30 giây sau "bây giờ" mà không có cảnh báo nhưng thực tế sẽ không khiến chuông báo đổ chuông trong ít nhất 30 giây.
Để giúp bạn gỡ lỗi ứng dụng hoặc tiện ích, khi bạn đã tải ứng dụng hoặc tiện ích đó ở trạng thái chưa đóng gói, không có giới hạn về tần suất kích hoạt chuông báo.
Thông số
-
tên
chuỗi không bắt buộc
Tên không bắt buộc để xác định chuông báo này. Giá trị mặc định là chuỗi trống.
-
alarmInfo
Mô tả thời điểm chuông báo sẽ đổ chuông. Bạn phải chỉ định thời gian ban đầu bằng
when
hoặcdelayInMinutes
(chỉ 1 trong 2 cột này). Nếu bạn đặtperiodInMinutes
, thì chuông báo sẽ lặp lại sau mỗiperiodInMinutes
phút kể từ sự kiện ban đầu. Nếu bạn không đặtwhen
hoặcdelayInMinutes
cho chuông báo thức lặp lại, thìperiodInMinutes
sẽ được dùng làm giá trị mặc định chodelayInMinutes
. -
callback
hàm không bắt buộc
Chrome 111 trở lênTham số
callback
có dạng như sau:() => void
Giá trị trả về
-
Promise<void>
Chrome 111 trở lênCác promise chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
get()
chrome.alarms.get(
name?: string,
callback?: function,
): Promise<Alarm | undefined>
Truy xuất thông tin chi tiết về chuông báo đã chỉ định.
Thông số
-
tên
chuỗi không bắt buộc
Tên của chuông báo cần lấy. Giá trị mặc định là chuỗi trống.
-
callback
hàm không bắt buộc
Tham số
callback
có dạng như sau:(alarm?: Alarm) => void
-
chuông báo
Chuông báo không bắt buộc
-
Giá trị trả về
-
Promise<Alarm | undefined>
Chrome 91 trở lênCác promise chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
getAll()
chrome.alarms.getAll(
callback?: function,
): Promise<Alarm[]>
Lấy một mảng gồm tất cả chuông báo.
Thông số
-
callback
hàm không bắt buộc
Tham số
callback
có dạng như sau:(alarms: Alarm[]) => void
-
các báo thức
-
Giá trị trả về
-
Promise<Alarm[]>
Chrome 91 trở lênCác promise chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.
Sự kiện
onAlarm
chrome.alarms.onAlarm.addListener(
callback: function,
)
Được kích hoạt khi chuông báo đã hết thời gian. Hữu ích cho các trang sự kiện.
Thông số
-
callback
hàm
Tham số
callback
có dạng như sau:(alarm: Alarm) => void
-
chuông báo
-