chrome.alarms

説明

chrome.alarms API を使用すると、コードを定期的に実行したり、将来の指定した時間に実行したりするようにスケジュールできます。

権限

alarms

マニフェスト

chrome.alarms API を使用するには、"alarms" 権限を マニフェスト で宣言します。

{
  "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

プロパティ

  • name

    文字列

    このアラームの名前。

  • periodInMinutes

    数値(省略可)

    null でない場合、アラームは繰り返しアラームとなり、periodInMinutes 分後に再び鳴ります。

  • persistAcrossSessions

    ブール値

    保留中

    アラームをセッション(ブラウザの再起動)をまたいで維持するかどうか。

  • scheduledTime

    数値

    このアラームが鳴るようにスケジュールされた時刻(エポックからの経過時間(ミリ秒))(例: Date.now() + n)。パフォーマンス上の理由から、アラームがこの時刻より遅れることがあります。

AlarmCreateInfo

プロパティ

  • delayInMinutes

    数値(省略可)

    onAlarm イベントが発生するまでの時間(分単位)。

  • periodInMinutes

    数値(省略可)

    設定すると、when または delayInMinutes で指定された最初のイベントから periodInMinutes 分ごとに onAlarm イベントが発生します。設定しない場合、アラームは 1 回だけ鳴ります。

  • persistAcrossSessions

    ブール値(省略可

    保留中

    アラームをセッション(ブラウザの再起動)をまたいで維持するかどうか。Chrome では、過去の動作に合わせてデフォルトで true に設定されていますが、ブラウザ間の互換性を最大限に高めるために、明示的に設定することをおすすめします。

  • いつ

    数値(省略可)

    アラームが鳴る時刻(エポックからの経過時間(ミリ秒))(例: Date.now() + n)。

メソッド

clear()

Promise
chrome.alarms.clear(
  name?: string,
  callback?: function,
)
: Promise<boolean>

指定された名前のアラームを消去します。

パラメータ

  • name

    文字列(省略可)

    消去するアラームの名前。デフォルトは空の文字列です。

  • callback

    関数(省略可

    callback パラメータは次のようになります:

    (wasCleared: boolean) => void

    • wasCleared

      ブール値

戻り値

  • Promise<boolean>

    Chrome 91 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

clearAll()

Promise
chrome.alarms.clearAll(
  callback?: function,
)
: Promise<boolean>

すべてのアラームを消去します。

パラメータ

  • callback

    関数(省略可

    callback パラメータは次のようになります:

    (wasCleared: boolean) => void

    • wasCleared

      ブール値

戻り値

  • Promise<boolean>

    Chrome 91 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

create()

Promise
chrome.alarms.create(
  name?: string,
  alarmInfo: AlarmCreateInfo,
  callback?: function,
)
: Promise<void>

アラームを作成します。alarmInfo で指定された時刻になると、onAlarm イベントが発生します。同じ名前のアラームがすでに存在する場合(名前が指定されていない場合は名前なし)、そのアラームはキャンセルされ、このアラームに置き換えられます。

ユーザーのパソコンへの負荷を軽減するため、Chrome ではアラームは 30 秒に 1 回までしか鳴りませんが、それよりも遅れることがあります。つまり、delayInMinutes または periodInMinutes0.5 未満に設定しても無視され、警告が表示されます。when は「現在」から 30 秒未満に設定しても警告は表示されませんが、アラームが実際に鳴るまでには少なくとも 30 秒かかります。

アプリや拡張機能をデバッグするために、アンパックした状態で読み込んだ場合、アラームが鳴る頻度に制限はありません。

パラメータ

  • name

    文字列(省略可)

    このアラームを識別するための名前(省略可)。デフォルトは空の文字列です。

  • alarmInfo

    アラームが鳴るタイミングを指定します。最初の時刻は、when または delayInMinutes のいずれかで指定する必要があります(両方は不可)。periodInMinutes を設定すると、最初のイベントから periodInMinutes 分ごとにアラームが繰り返されます。繰り返しアラームに whendelayInMinutes も設定されていない場合、periodInMinutesdelayInMinutes のデフォルトとして使用されます。

  • callback

    関数(省略可

    Chrome 111 以降

    callback パラメータは次のようになります:

    () => void

戻り値

  • Promise<void>

    Chrome 111 以降

    アラームが作成されたときに解決される Promise。

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

get()

Promise
chrome.alarms.get(
  name?: string,
  callback?: function,
)
: Promise<Alarm | undefined>

指定されたアラームの詳細を取得します。

パラメータ

  • name

    文字列(省略可)

    取得するアラームの名前。デフォルトは空の文字列です。

  • callback

    関数(省略可

    callback パラメータは次のようになります:

    (alarm?: Alarm) => void

戻り値

  • Promise<Alarm | undefined>

    Chrome 91 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

getAll()

Promise
chrome.alarms.getAll(
  callback?: function,
)
: Promise<Alarm[]>

すべてのアラームの配列を取得します。

パラメータ

  • callback

    関数(省略可

    callback パラメータは次のようになります:

    (alarms: Alarm[]) => void

戻り値

  • Promise<Alarm[]>

    Chrome 91 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

イベント

onAlarm

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

アラームが鳴ったときに発生します。イベントページに便利です。

パラメータ

  • callback

    関数

    callback パラメータは次のようになります:

    (alarm: Alarm) => void