はじめに

guyromb/cordova-open-native-settings を使って、Cordova アプリから OS の設定アプリを開く方法。

README には「iOS 8/9/10」と記載されているが、iOS 14.4 でも問題なく動作した。

TL;DR

この記事が参考になった方
ここここからチャージや購入してくれると嬉しいです(ブログ主へのプレゼントではなく、ご自身へのチャージ)
欲しいもの / Wish list

目次

  1. はじめに
  2. TL;DR
  3. 環境・条件
  4. 詳細
    1. セットアップ
    2. 実装
    3. 動作確認結果
  5. まとめ
  6. 参考文献

環境・条件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ sw_vers
ProductName: macOS
ProductVersion: 11.2.2
BuildVersion: 20D80

$ node -v
v12.7.0

$ npm -v
6.14.5

$ cordova -v
10.0.0

$ cordova platform
6.0.0
Installed platforms:
android 9.0.0
ios 6.1.1

$ xcodebuild -version
Xcode 12.4
Build version 12D4e

詳細

セットアップ

cordova plugin add でプラグイン追加

1
$ cordova plugin add cordova-open-native-settings

実装

cordova.plugins.settings.open(setting_constant, success_callback, failure_callback) で設定アプリを開くことができる。

setting_constantSettings Options (Android), Settings Options (iOS) を参照。

例えば通知設定を開きたい場合は iOS, Android ともに notification_id を指定する。

1
2
3
4
5
6
7
8
9
if (typeof cordova === 'undefined' || !cordova?.plugins?.settings) {
return;
}

cordova.plugins.settings.open(
'notification_id',
(data) => { /* Success Callback */ }),
(data) => { /* Failure Callback */ })
);

Android のデフォルト動作だと、同じアプリ内で開く挙動になる。別アプリとして開きたい場合は、第一引数を ['notification_id', true] のような配列(2要素目を true)にすると良い。iOS と Android で処理分岐させる必要はなく、iOS も以下コードで問題なく動作する。

1
2
3
4
5
6
7
8
9
if (typeof cordova === 'undefined' || !cordova?.plugins?.settings) {
return;
}

cordova.plugins.settings.open(
['notification_id', true],
(data) => { /* Success Callback */ }),
(data) => { /* Failure Callback */ })
);

動作確認結果

以下の端末で動作確認、2021/03 時点の新しめの OS でも問題ないっぽい。

デバイス OS 区分
iPhone 11 Pro iOS 14.4 実機
iPhone 8 Plus iOS 14.4 シミュレータ
iPhone 8 Plus iOS 13.5 シミュレータ
iPhone 8 Plus iOS 12.4 シミュレータ
iPhone 8 Plus iOS 11.4 シミュレータ
Huawei nova lite2 Android 9 実機
Pixel 4 Android 11 エミュレータ
Pixel 3a Android 10 エミュレータ
Pixel 3a Android 9 エミュレータ

※iOS シミュレータだと、設定アプリの機能が制限されているので注意。(例: 「通知」の設定画面がない、など)

まとめ

参考文献

関連記事

この記事が参考になった方
ここここからチャージや購入してくれると嬉しいです(ブログ主へのプレゼントではなく、ご自身へのチャージ)
欲しいもの / Wish list