Cordova アプリでダイアログ表示したりビープ音を鳴らしたりして通知できる「cordova-plugin-dialogs」

cordova-plugin-dialogs というプラグインを使うと、ユーザへの通知に関する処理が手軽に実装できる。

今回も iOS 向けのサンプルアプリを作ったので、以下の feat/pluginDialogs ブランチを見てみてもらいたい。

プラグインのインストール

いつもどおり cordova コマンドでプラグインをインストール。

$ cordova plugin add cordova-plugin-dialogs

このプラグインをインストールすることで使えるようになるメソッドは以下の4つ。

順に説明していく。

alert() : アラート表示

JavaScript だと、通常の alert() 関数 (window.alert()) が存在していて、Cordova アプリ上でも window.alert() は使えるのだが、このプラグインの navigator.notification.alert() を使うと、ボタンラベルを変えたりコールバック関数を設定したりなど、よりリッチなアラートが表示できる。

window.navigator.notification.alert(
  'アラートメッセージ',
  function() {
    console.log('「オッケー」ボタン押下後のコールバック関数');
  },
  'アラートタイトル',
  'オッケー'
);

confirm() : 確認ダイアログ表示

こちらも、window.confirm() でも最低限の確認ダイアログを表示させることはできるが、navigator.notification.confirm() はよりカスタマイズしやすい API になっている。

window.navigator.notification.confirm(
  '確認ダイアログメッセージ',
  function(buttonIndex) {
    console.log('押下したボタンの Index (1 から始まるので注意) : ' + buttonIndex);
    if(buttonIndex === 1) {
      console.log('オッケー ボタンが押されました');
    }
    else if(buttonIndex === 2) {
      console.log('ダメー ボタンが押されました');
    }
  },
  '確認ダイアログタイトル',
  ['オッケー', 'ダメー']
);

通常の confirm() だと「OK」と「キャンセル」ボタンのみだが、このプラグインを使うと3つ以上のボタンを用意することができる。それぞれラベルを自分で指定できる他、コールバック関数で押されたボタンを判別できる。ただし、buttonIndex0 からではなく 1 から始まるので注意。

prompt() : プロンプト表示

ユーザに任意の情報を入力させるプロンプトを表示する navigator.notification.prompt()。これも window.prompt() よりリッチなカスタマイズができる。

window.navigator.notification.prompt(
  'プロンプトメッセージ',
  function(results) {
    console.log('押下したボタンの Index : ' + results.buttonIndex);
    console.log('入力内容 : ' + results.input1);
  },
  'プロンプトタイトル',
  ['オッケー', 'ダメー'],
  'デフォルトテキスト'
);

こちらもボタンを3つ以上置いたりできる。押下したボタンの情報と入力値はコールバック関数にオブジェクトにまとめて渡されるので、それぞれ results.buttonIndexresults.input1 で取り出して使える。

beep() : ビープ音再生

このプラグインの本命かもしれない。手軽にビープ音を再生できるのが navigator.notification.beep() メソッド。プラットフォームに合わせて、プラグインがお抱えの音声ファイルを裏で持っているらしく、iOS の場合はピロロロという音が再生される。

// ビープ音を2回繰り返して再生する
window.navigator.notification.beep(2);

引数でリピート回数を指定できる。音色の変更には対応していないが、サクッと通知音を鳴らすにはもってこいだろう。ちなみに Browser プラットフォームでの検証時も、うまくバックグラウンドでそれらしいビープ音を再生してくれる。


以上。ビープ音とともにアラートでユーザの操作を一度奪い、強くユーザにお知らせを出すなど、色々な使い方ができそうなプラグインだ。