中津川篤司BluetoothやNFCなどのネイティブ機能を利用したMonacaアプリを開発する場合、まずはじめに確認しなければならないのが、端末側が対象の機能をサポートしているかどうかです。開発中はつい自分の環境がデファクトだと思ってしまいがちですが、端末によってはネイティブ機能そのものが利用できないといったこともありえます。した際にエラーハンドリングを行うためには、まずその機能が存在しているのか、使えるのかと言った診断を行われなければなりません。インポートしてください。今回の検証環境は以下の通りです。11.4.1)上記の検証環境以外では、本記事に掲載されている通りに動作しない可能性があります。診断できる機能は以下の通りです。位置情報BluetoothWiFiカメラ通知マイクアドレス帳カレンダーリマインダー(iOSのみ)モーション(iOSのみ)NFC(Androidのみ)外部ストレージ(Androidのみ)ただし機能によってはiOSでサポートされていないものもあります。対象の機能が有効かどうかを調べるときは、ほとんどの場合以下のような名前のメソッドを使います。is{機能名}Enabled()位置情報の場合は次のようになります。"+error);});また、機能が有効であってもパーミッション設定でアプリに対して対象機能へのアクセスが許可されていない場合もあります。いったときは以下のような名前のメソッドで利用可能かどうかを調べます。is{機能名}Available()位置情報の場合は次のようになります。"+error);});一つ目の引数が成功時のコールバック、二つ目が失敗時のコールバックになります。有効かどうか、利用可能かどうかをチェックする程度であればどの機能でもメソッドの使い方はほぼ同じです。BluetoothiOSの場合、Bluetoothに関する診断には多くの制限があります。Bluetoothのステータス(有効/無効)はiOSでも取得できます。cordova.plugins.diagnostic.bluetoothStateBluetoothとBLEがそれぞれサポートされているかどうかを診断するメソッドはAndroidでしか使えません。LTEがサポートされているかどうかcordova.plugins.diagnostic.hasBluetoothLESupport基本的には診断をするのみなのですが、一部の機能については設定もできます。cordova.plugins.diagnostic.requestBluetoothAuthorizationiOSの場合、Bluetoothを使う前に確認ダイアログを出します。OKすれば、ステータス変更を受け取れるようになります。}});WiFiWiFiの診断方法もBluetoothとほとんど同じです。Androidであれば設定を変更できます。iOSでは状態を取得することのみ可能で、状態変更時の通知機能も利用できません。Androidのみカメラカメラの場合は、端末に搭載されているかどうかをチェックする機能があります。"+error);});その他のメソッドの種類はBluetoothと変わりません。iOSの場合はカメラロールにアクセスするための権限を別途指定できます。通知に関するメソッドはほぼiOS向けのものになります。iOSのみマイク/アドレス帳/カレンダーマイク/アドレス帳/カレンダーはiOS/Androidで共通です。アクセス許可されているかどうかの診断、ステータスの取得、そしてアクセス許可を求めるという用途の3つのメソッドが用意されています。マイクcordova.plugins.diagnostic.isMicrophoneAuthorizedcordova.plugins.diagnostic.getMicrophoneAuthorizationStatuscordova.plugins.diagnostic.requestMicrophoneAuthorizationアドレス帳cordova.plugins.diagnostic.isContactsAuthorizedcordova.plugins.diagnostic.getContactsAuthorizationStatuscordova.plugins.diagnostic.requestContactsAuthorizationカレンダーcordova.plugins.diagnostic.isCalendarAuthorizedcordova.plugins.diagnostic.getCalendarAuthorizationStatuscordova.plugins.diagnostic.requestCalendarAuthorizationリマインダーリマインダーはiOS向けのみ提供されています。cordova.plugins.diagnostic.isRemindersAuthorizedcordova.plugins.diagnostic.getRemindersAuthorizationStatuscordova.plugins.diagnostic.requestRemindersAuthorizationモーション徒歩などのモーションデータを診断します。これもiOSのみです。他の機能に比べると若干使い方が複雑です。cordova.plugins.diagnostic.motionStatuscordova.plugins.diagnostic.isMotionAvailablecordova.plugins.diagnostic.isMotionRequestOutcomeAvailablecordova.plugins.diagnostic.requestMotionAuthorizationcordova.plugins.diagnostic.getMotionAuthorizationStatusNFCNFCはAndroidでのみ使える機能になります。NFCもBluetoothのようにステータスの変更を受け取れるようになっています。cordova.plugins.diagnostic.NFCStatecordova.plugins.diagnostic.isNFCPresentcordova.plugins.diagnostic.isNFCEnabledcordova.plugins.diagnostic.isNFCAvailablecordova.plugins.diagnostic.registerNFCStateChangeHandlercordova.plugins.diagnostic.switchToNFCSettings外部ストレージ外部ストレージもAndroidでのみ使える機能になります。S6ではステータスは取得できましたが、ストレージの詳細は取得できませんでした。pluginは、対象デバイスでどの機能が使えるのかを診断するときに便利です。診断をするだけで実際にデータを取得できる訳ではありませんが、デバイスの状態に応じた細やかな制御を行う場合に役立つでしょう。インタフェースがほぼ共通というのも使い勝手が良いです。