センサー権限不要スマホ推奨判定中...
Vibration API
端末のバイブレーションモーターを振動時間のパターン配列で制御できるAPI。
1対応判定
| ブラウザ | 対応バージョン |
|---|---|
| Chrome | 30+(Android実機のみ動作) |
| Firefox | 11+(Android実機のみ動作) |
| Safari | 未対応 |
備考: デスクトップはAPIが存在しても実際には振動しない
2権限フロー
権限不要このAPI
API呼び出しだけで動く。プロンプトも操作起点の縛りもない
ユーザージェスチャー必須
ボタンクリック等のユーザー操作の中でしか呼べない。プロンプトは出ない
権限プロンプトあり
呼び出すとブラウザが許可/ブロックのプロンプトを表示し、ユーザーが選ぶ
iOS独自requestPermission
iOSではrequestPermission()を操作起点で呼び、明示的に許可を得る
権限プロンプトは無いが、ユーザー操作なしのバックグラウンド振動はブラウザ側で抑制される。
3ライブデモ: 振動パターンのプリセットと自作シーケンサー
4コードスニペット
TypeScript(要約版)
// 単発の振動(ミリ秒)
navigator.vibrate(200);
// パターン: [振動, 休止, 振動, ...] のミリ秒配列
navigator.vibrate([100, 50, 100, 50, 300]);
// シーケンサーで自作パターンを組み立てる
function buildPattern(steps: boolean[], stepMs = 120): number[] {
const pattern: number[] = [];
let run = 0;
let vibrating = steps[0];
if (!vibrating) pattern.push(0); // 先頭が休止なら0ms振動から始める
for (const on of steps) {
if (on === vibrating) {
run += stepMs;
} else {
pattern.push(run);
run = stepMs;
vibrating = on;
}
}
pattern.push(run);
return pattern;
}
// 停止は0または空配列
navigator.vibrate(0);