皆さんはスケジュールの管理をどのように行っているでしょうか。おそらく多くの方が、スマートフォンのアプリを使ってスケジュール管理をしていると思います。
スケジュール機能をアプリに組み込む場合は独自にカレンダーを実装しても良いのですが、ネイティブカレンダーと連動していれば予定が一元管理できるため、より利便性の高いアプリになるでしょう。
今回ご紹介する PhoneGap Calendar plugin は、ネイティブカレンダーの操作機能を提供するCordovaプラグインです。

PhoneGap Calendar pluginのインストール

PhoneGap Calendar pluginの最新バージョン(v5.0.0)は、現在MonacaがサポートしているCordova6.5とは対象プラットフォームのバージョンが異なり、プロジェクトに組み込むことができません。こちらからv4.6.0のzipファイルをダウンロードし、Monaca IDEの[Cordovaプラグインの管理]画面でインポートしてください。

ネイティブカレンダーにアクセスする場合、プライバシーの問題で初回アクセス時にユーザーの許可を得る必要があります。
その時に表示されるメッセージを指定するには、プラグインの[設定]ボタンを押して、CALENDAR_USAGE_DESCRIPTION を入力します。

カレンダーを作る

新しくカレンダーを作るには createCalendar() を使います。オプションにカレンダーの名前や色の指定をします。

予定を作る

予定の登録は calendarcreateEventInteractivelyWithOptions() で行います。タイトル、場所、メモ、詳細、日付、リマインド、繰り返し、URLなどの様々なオプションを指定できます。

実行すると、入力フォームが表示されます。各項目には指定したデフォルト値が入力された状態になっています。

ユーザーによって登録が実行されると、ネイティブカレンダーに予定が追加されます。

入力フォームを表示せず、プログラムから即登録を実行する場合は createEventInteractivelyWithOptions() のかわりに createEventWithOptions() を使います。

カレンダーの予定を取得

すでに登録されている予定を取得するには findEvent() を使います。取得の際には予定のタイトル、場所、メモ、日付の範囲などの検索条件を指定できます。結果は配列で返ってきます。

ここでは結果をテキストエリアに出力しています。

カレンダーを開く

openCalendar() で日付を指定してネイティブのカレンダーアプリを開くことができます。以下は3日後の予定を開く例です。日付はミリセカンドで指定します。


PhoneGap Calendar pluginではこの他にも予定の編集や削除などを行うことができます。Androidでは予定の編集ができないなど、一部機能差があるようなので注意してください。

アプリ内に入力された情報を元にネイティブカレンダーへ予定を登録したり、カレンダーから情報を読み取ってアプリの中に表示するなど、様々な使い方が考えられるでしょう。

今回のサンプルコードはこちらにアップロードしてあります。実装時の参考にしてください。

今回ご紹介したCordovaプラグインは、サードパーティ製であるためストア版のMonacaデバッガーでは動作しません。動作検証の際にはカスタムビルドデバッガーをご利用ください。