chrome.alarms

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 veya delayInMinutes tarafından belirtilen ilk etkinlikten sonra her periodInMinutes 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()

Söz 'nı inceleyin.
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()

Söz 'nı inceleyin.
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()

Söz 'nı inceleyin.
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 veya delayInMinutes (ikisi birden değil) ile belirtilmelidir. periodInMinutes ayarlandıysa alarm ilk etkinlikten sonra her periodInMinutes dakikada bir tekrarlanır. Tekrarlanan alarm için when veya delayInMinutes ayarlanmadıysa delayInMinutes için varsayılan olarak periodInMinutes 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()

Söz 'nı inceleyin.
chrome.alarms.get(
  name?: string,
  callback?: function,
)

Belirtilen alarmla ilgili ayrıntıları alır.

Parametreler

  • ad

    dize isteğe bağlı

    Alınacak 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:

    (alarm?: Alarm) => void

    • alarm

      Alarm isteğe bağlı

İadeler

  • Promise&lt;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()

Söz 'nı inceleyin.
chrome.alarms.getAll(
  callback?: function,
)

Tüm alarmların bir dizisini alır.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (alarms: Alarm[]) => void

İ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.

Etkinlikler

onAlarm

chrome.alarms.onAlarm.addListener(
  callback: function,
)

Alarm süresi dolduğunda tetiklenir. Etkinlik sayfaları için kullanışlıdır.

Parametreler

  • geri çağırma

    işlev

    callback parametresi şu şekilde görünür:

    (alarm: Alarm) => void