以前の記事で、アプリが位置情報やカメラにアクセスするためのリクエストを行う方法については紹介しましたが、今回は端末自体の設定を取得する方法についてです。
「react-native-settings」ライブラリの GitHub ページはこちら。
GitHub – rmrs/react-native-settings: Allows access to various Android and iOS device settings using React Native
https://github.com/rmrs/react-native-settings
ライブラリのインストールは下記コマンドで行います。
npm install react-native-settings --save // iOS の場合は下記も実行 npx pod-install
上記が完了したらインストールは完了です!
GitHub には react-native link react-native-settings
コマンドも実行するよう記載がありましたが、こちらは実行しなくても大丈夫でした(むしろ実行すると、React Native のバージョンによっては警告が表示される)。
サンプルコードはこちらです。
下記のコードでは、端末の位置情報サービスの ON/OFF を確認しています。
import RNSettings from 'react-native-settings'; RNSettings.getSetting(RNSettings.LOCATION_SETTING).then(result => { if (result === RNSettings.ENABLED) { // 位置情報が有効 console.log('location is enabled'); } else { // 位置情報が無効 console.log('location is disabled'); } });
上記ではログを表示しているだけですが、実際には result
の値によって、位置情報サービスを有効にすることを促すなど、任意の処理を実行してください。
なお、位置情報サービスが無効の場合に openSetting()
を使って、任意の設定を開く処理も追加してみたのですが、こちらは Android と iOS の両方で警告が表示され、正しく実行されませんでした。
サンプルコードによると、openSetting()
は iOS では実行できないみたいだったので、こちらは納得なのですが、Android で動かないのはまだ原因が分かっていません。
エラーメッセージは取得できていますので、こちらをもとに調べてみます。
以上、「react-native-settings」ライブラリを使って、端末の位置情報サービスの ON/OFF を確認する方法についてでした。
もちろん、位置情報サービス以外にも、機内モードの ON/OFF なども確認できるみたいでした。
ご参考になれば幸いです。