Açıklama
Kodu düzenli aralıklarla veya gelecekte belirli bir zamanda çalışacak şekilde planlamak için chrome.alarms
API'yi kullanın.
İzinler
alarms
chrome.alarms
API'yi kullanmak için manifest dosyasında "alarms"
iznini beyan edin:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
Kavramlar ve kullanım
Güvenilir bir davranış sağlamak için API'nin nasıl davrandığını anlamak faydalıdır.
Cihaz uyku modu
Cihaz uyku modundayken alarmlar çalışmaya devam eder. Ancak alarmlar cihazı uyandırabilirim. Cihaz uyandığında, cevapsız alarmlar çalar. Tekrarlanan alarmlar en fazla bir kez etkinleşir ve ardından cihazın uyanmasından itibaren belirtilen süre alarmın asıl olarak çalışmaya ayarlanmasından bu yana geçen süre.
Kalıcı
Alarmlar genellikle bir uzantı güncellenene kadar devam eder. Ancak bu garanti edilmez ve alarmlar tarayıcı yeniden başlatıldığında temizlenebilir. Sonuç olarak, depolama alanı değerini oluşturulduğundan emin olun ve Service Worker'ınız her başlatıldığında mevcut olduğundan emin olun. Örneğin:
const STORAGE_KEY = "user-preference-alarm-enabled";
async function checkAlarmState() {
const { alarmEnabled } = await chrome.storage.get(STORAGE_KEY);
if (alarmEnabled) {
const alarm = await chrome.alarms.get("my-alarm");
if (!alarm) {
await chrome.alarms.create({ periodInMinutes: 1 });
}
}
}
checkAlarmState();
Örnekler
Aşağıdaki örneklerde bir alarmın nasıl kullanılacağı ve alarma nasıl yanıt verileceği gösterilmektedir. Bu API'yi denemek için chrome-extension-samples bölümünden Alarm API örneğini yükleyin. depodur.
Alarm kur
Aşağıdaki örnekte, uzantı yüklendiğinde Service Worker'da bir alarm ayarlanmaktadır:
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
});
});
Alarmlara yanıt verme
Aşağıdaki örnekte, çalan alarmın adına göre işlem araç çubuğu simgesi ayarlanmaktadır.
service-worker.js:
chrome.alarms.onAlarm.addListener((alarm) => {
chrome.action.setIcon({
path: getIconPath(alarm.name),
});
});
Türler
Alarm
Özellikler
-
ad
dize
Bu alarmın adı.
-
periodInMinutes
sayı isteğe bağlı
Değer boş değilse alarm tekrar eden bir alarmdır ve
periodInMinutes
dakika içinde tekrar çalacaktır. -
scheduledTime
sayı
Bu alarmın çalmak için programlandığı zaman (sıfır zamandan sonra, milisaniye cinsinden) (ör.
Date.now() + n
). Performans nedeniyle, alarm bunun dışında isteğe bağlı bir miktarda gecikmiş olabilir.
AlarmCreateInfo
Özellikler
-
delayInMinutes
sayı isteğe bağlı
onAlarm
etkinliğinin, dakika cinsinden etkinleşmesi gereken süre. -
periodInMinutes
sayı isteğe bağlı
Ayarlanırsa onAlarm etkinliği,
when
veyadelayInMinutes
tarafından belirtilen ilk etkinlikten sonra herperiodInMinutes
dakikada bir etkinleşmelidir. Ayarlanmazsa alarm yalnızca bir kez çalar. -
ne zaman
sayı isteğe bağlı
Alarmın çalması gereken zaman (sıfır zamandan sonra milisaniye olarak). (ör.
Date.now() + n
).
Yöntemler
clear()
chrome.alarms.clear(
name?: string,
callback?: function,
)
Verilen ada sahip alarmı temizler.
Parametreler
-
ad
dize isteğe bağlı
Silinecek alarmın adı. Varsayılan olarak boş dize kullanılır.
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(wasCleared: boolean) => void
-
wasCleared
boolean
-
İadeler
-
Promise<boolean>
Chrome 91 ve sonraki sürümler 'nı inceleyin.Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
clearAll()
chrome.alarms.clearAll(
callback?: function,
)
Tüm alarmları temizler.
Parametreler
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(wasCleared: boolean) => void
-
wasCleared
boolean
-
İadeler
-
Promise<boolean>
Chrome 91 ve sonraki sürümler 'nı inceleyin.Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
callback?: function,
)
Alarm oluşturur. alarmInfo
tarafından belirtilen zamanlara yakın zamanlarda onAlarm
etkinliği tetiklenir. Aynı ada sahip (veya başka bir alarm belirtilmemişse adı belirtilmezse) başka bir alarm varsa bu alarm iptal edilir ve bu alarmla değiştirilir.
Chrome, kullanıcının makinesindeki yükü azaltmak için alarmları en fazla 30 saniyede bir olacak şekilde sınırlandırır, ancak alarmları isteğe bağlı bir şekilde daha fazla geciktirebilir. Yani delayInMinutes
veya periodInMinutes
değerinin 0.5
değerinden düşük bir değere ayarlanması dikkate alınmaz ve uyarı verilir. when
, "şimdi" ifadesinden sonra 30 saniyeden kısa bir süreye ayarlanabilir uyarı olmadan, ancak alarmın en az 30 saniye boyunca tetiklenmesine neden olmaz.
Uygulama veya uzantınızı paketlenmemiş olarak yüklediğinizde hata ayıklamanıza yardımcı olması için alarmın ne sıklıkta tetiklenebileceğiyle ilgili bir sınır yoktur.
Parametreler
-
ad
dize isteğe bağlı
Bu alarmı tanımlamak için isteğe bağlı ad. Varsayılan olarak boş dize kullanılır.
-
alarmInfo
Alarmın ne zaman çalması gerektiğini tanımlar. İlk zaman
when
veyadelayInMinutes
(ikisi birden değil) ile belirtilmelidir.periodInMinutes
ayarlandıysa alarm ilk etkinlikten sonra herperiodInMinutes
dakikada bir tekrarlanır. Tekrarlanan alarm içinwhen
veyadelayInMinutes
ayarlanmadıysadelayInMinutes
için varsayılan olarakperiodInMinutes
kullanılır. -
geri çağırma
işlev isteğe bağlı
Chrome 111 ve sonraki sürümler 'nı inceleyin.callback
parametresi şu şekilde görünür:() => void
İadeler
-
Taahhüt<void>
Chrome 111 ve sonraki sürümler 'nı inceleyin.Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
get()
chrome.alarms.get(
name?: string,
callback?: function,
)
Belirtilen alarmla ilgili ayrıntıları alır.
Parametreler
İadeler
-
Promise<Alarm | tanımlanmadı>
Chrome 91 ve sonraki sürümler 'nı inceleyin.Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
getAll()
chrome.alarms.getAll(
callback?: function,
)
Tüm alarmların bir dizisini alır.
Parametreler
İadeler
-
Söz ver<Alarm[]>
Chrome 91 ve sonraki sürümler 'nı inceleyin.Manifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.