SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Apache Cordovaで本格スマホアプリに挑戦しよう

基本のプラグインを使ってハイブリッドアプリを作ってみよう

Apache Cordovaで本格スマホアプリに挑戦しよう 第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダイアログを表示する

 ネイティブで表示するダイアログを利用するためのプラグインです。ダイアログなどは、HTMLとJavaScriptを使っても実現できますが、ダイアログを手軽に使いたい場合やデザインをネイティブと合わせたい場合などに利用できます。

インストール方法

 インストールするプラグインは、「cordova-plugin-dialogs」です。インストールはリスト7のように行います。

リスト7 プラグインのインストール
$cordova plugin add cordova-plugin-console

プラグインの使い方

 このプラグインでは、図2のような3種類のダイアログ(alert、confirm、prompt)とBEEP音を鳴らすことができます。

図2 ダイアログプラグインでの実行例
図2 ダイアログプラグインでの実行例

 アラートダイアログを表示するためのメソッドの定義は以下のようになっています。

navigator.notification.alert(message, callback, [title], [buttonLabel]);
表3 alertメソッドの引数
変数名 説明
message ダイアログに表示するメッセージを設定します
callback ボタンが押された時に実行する関数を指定します
title ダイアログのタイトルを指定します。指定しない場合には「Alert」になります
buttonLabel 表示するボタンのラベルです。指定しない場合には、「OK」になります

 確認ダイアログを表示するためのメソッドの定義は以下のようになっています。

navigator.notification.confirm(message, callback, [title], [buttonLabels])
表4 confirmメソッドの引数
変数名 説明
message ダイアログに表示するメッセージを設定します
callback ボタンが押された時に実行する関数を指定します。引数には押されたボタンのインデックスが入ります
title ダイアログのタイトルを指定します。指定しない場合には「Confirm」になります
buttonLabels 表示するボタンのラベルを配列で指定します。指定しない場合には、["OK","Cacel"]と同じになります

 入力ダイアログを表示するためのメソッドの定義は以下のようになっています。

navigator.notification.prompt(message, callback, [title], [buttonLabels], [defaultText])
表5 promptメソッドの引数
変数名 説明
message ダイアログに表示するメッセージを設定します
callback ボタンが押された時に実行する関数を指定します。引数には押されたボタンのインデックスと入力値が入ります
title ダイアログのタイトルを指定します。指定しない場合には「Prompt」になります
buttonLabels 表示するボタンのラベルを配列で指定します。指定しない場合には、["OK","Cacel"]と同じになります
defaultText 入力値にデフォルトで入る文字列を指定します。指定しない場合には、空文字と同じになります

 BEEP音を鳴らすためのメソッドの定義は以下のようになっています。

navigator.notification.beep(times)
表6 beepメソッドの引数
変数名 説明
times BEEP音を鳴らす回数を指定します

 これらのメソッドを使ったときの例がリスト8です。

リスト8 ダイアログプラグインの使い方(www/js/controllers/DailogController.js)
function DialogController($scope) {
    $scope.alert = function () {
        // アラートダイアログを表示
        navigator.notification.alert(
            'ご注意下さい',
            function () {
                console.log("pressed alert");
            },
            'アラート','OK'
        );
    };
    $scope.confirm = function () {
        //  確認ダイアログを表示
        navigator.notification.confirm(
            'ご確認下さい',
            function (buttonIndex) {
                // buttonIndexに押されたボタンのインデックス(1〜)
                console.log("button [" + buttonIndex + "] pressed");
            },
            'ご注意',['OK', 'CANCEL']
        );
    };
    $scope.prompt = function () {
        //  入力ダイアログを表示
        navigator.notification.prompt(
            '入力してください',
            function (results) {
                // buttonIndexに押されたボタンのインデックス(1〜)とinput1に入力値
                console.log("button [" + results.buttonIndex + "] pressed , input value is " + results.input1);
            },
            '郵便番号',['OK', 'CANCEL'],'000-0000'
        );
    }

    $scope.beep = function () {
        // BEEP音を指定回数だけ鳴らす
        navigator.notification.beep(3);
    }
}

ログを表示する

 JavaScript側で出力したconsole.logはChromeでの開発ツールを利用すると確認できますが、ネイティブ側のログ(adb logcatやXcodeでのデバッグ出力等)に出力することもできます。ただし、iOSの場合には、プラグインが必要になっています。そのために導入するプラグインです。

インストール方法

 インストールするプラグインは、「cordova-plugin-console」です。インストールはリストXXのように行います。

リスト9 プラグインのインストール
$cordova plugin add cordova-plugin-console

使い方

 ログを使うには、リスト10のようにJavaScript側からconsole.log()メソッドでログを出力するだけです。Andoridはこのプラグインを利用した出力ではありませんが、iOSと比較するためにも例として示してあります。

リスト10 JavaScript(app/js/controllers/AppController/js抜粋)と実行結果の出力例
// JavaScriptでの記述
console.log("app started",this);

// Androidでの出力例
I/chromium( 6628): [INFO:CONSOLE(4)] "app started", source: file:///android_asset/www/js/controllers/AppController.js (4)
// iOSでの出力例
2016-03-20 23:53:25.792 Cdv4[2211:1443028] app started [object Object]

 このようにどちらも、ブラウザでの開発ツールを利用した出力ほど詳細に確認できるわけではありません。また、ドキュメントではconsole.log以外のメソッドもサポートされていると記述されていますが、iOS側の実装を見る限りではconsole.log以外のメソッドは未実装となっているために、実際には出力されません。

 従って簡単な確認程度で利用し、詳細な確認は、ブラウザ側の開発ツールを利用するなどのようにすることをおすすめします。

最後に

 今回はよく使われていて、また、簡単に利用できるプラグインを紹介しました。プラグインを追加していくことで、いろいろな機能が増えていき、実際のアプリ開発ではそれらのプラグインをどれだけ応用できるかや、また、より便利なプラグインを知っているかで楽しみがどんどん広がって行くことでしょう。

 今回紹介したプラグインよりも、もっと便利なプラグインも探せば見つかることと思います。是非、いろいろなプラグインを探してみてください。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Apache Cordovaで本格スマホアプリに挑戦しよう連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 小林 昌弘(コバヤシ マサヒロ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9412 2016/05/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング