npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

capacitor-native-settings-extended

v7.4.0

Published

Capacitor plugin to open native settings screens for android and iOS

Readme

Capacitor Native Settings

Capacitor plugin to open native settings screens for Android and iOS.

Plugin versions

| Capacitor version | Plugin version | | ---------- | ----------------------------------------- | | v7 | >= v7.0.1 | | v6 | >= v6.0.0 | | v5 | >= v5.0.0 | | v4 | >= v4.0.0 | | v3 | <= v2.0.1 |

Install

npm install capacitor-native-settings-extended
npx cap sync

Example

import { NativeSettings, AndroidSettings, IOSSettings } from 'capacitor-native-settings-extended';

/**
 * Note that the only supported option by Apple is "App".
 * Using other options might break in future iOS versions
 * or have your app rejected from the App Store.
 */
NativeSettings.open({
  optionAndroid: AndroidSettings.ApplicationDetails, 
  optionIOS: IOSSettings.App
})

NativeSettings.openAndroid({
  option: AndroidSettings.ApplicationDetails,
});

/**
 * Note that the only supported option by Apple is "App".
 * Using other options might break in future iOS versions
 * or have your app rejected from the App Store.
 */
NativeSettings.openIOS({
  option: IOSSettings.App,
});

Reading a vendor setting, and offering its screen

Some device features are exposed only as an undocumented row in a vendor's own settings table — no public API, no constant, and a name that differs between OEMs. getDeviceSetting() reads one by name, and the answer is three-state:

import { NativeSettings } from 'capacitor-native-settings-extended';

const wake = await NativeSettings.getDeviceSetting({
  key: 'double_tab_to_wake_up',   // vendor-specific; spelling varies by OEM
  scope: 'system',                // 'system' (default) | 'secure' | 'global'
});

if (!wake.present) {
  // The key does not exist: this build has no such feature. No settings screen
  // will ever create it, so do not offer one -- an un-actionable prompt trains
  // people to ignore every prompt.
} else if (wake.value === '1') {
  // Present and on.
} else {
  // Present and OFF -- the actionable case, and the one a boolean API loses.
  // This is where offering the settings screen is worth doing.
}

Reading needs no permission. Writing is deliberately not offered: these keys belong to the user, and an app changing them behind their back is the behaviour this plugin exists to avoid.

Where the feature exists but is off, you can try to send the user straight to it. Vendor screens are addressed by intent action or by explicit component, and neither is stable across builds — so the caller supplies the candidates and the plugin just tries them in order:

const candidates = [
  // Most specific FIRST -- see the ordering caution below.
  { package: 'com.android.settings', activity: 'com.android.settings.Settings$SomeMotionActivity' },
  { action: 'com.example.vendor.MOTION_SETTINGS' },
];

// Decide whether to render the button at all.
const probe = await NativeSettings.canOpenVendorSetting({ candidates });

// ...and let the tap be the final word.
if (probe.available) {
  const opened = await NativeSettings.openVendorSetting({ candidates });
  if (!opened.opened) {
    // Nothing accepted it after all -- fall back to the general settings screen
    // and written instructions.
  }
}

🔴 Order the candidates most-specific first, and here is why. An intent that resolves is not an intent that lands where you meant. A broad vendor action can be claimed by the Settings app as a whole and drop the user on the Settings home page: it resolves, it starts, it reports success -- and it goes somewhere else. An explicit component for the same screen lands exactly right. Since the first candidate that starts wins, an action listed ahead of a component means the component is never tried.

🔴 opened: true means the launch did not throw. It does not mean the correct screen is showing. Nothing available to this plugin can tell the difference: startActivity() reports that something handled the intent, and startActivityForResult() does not name the activity that was landed on. Task and usage APIs are delayed, permission-gated, or both. Only a person looking at the screen can confirm the landing -- so treat opened as "we handed off", and pair the hand-off with written instructions for the case where it goes astray. For the same reason available: true means only "something claims this intent", never "the screen you want exists".

⚠️ canOpenVendorSetting() can be a false negative. Since Android 11, package visibility can hide an activity that genuinely exists, so a false may mean "not visible to this app" rather than "not there". If you render a button off this probe, you must declare the candidates in a <queries> element of your manifest -- otherwise the probe is not merely imprecise, it is unreliable in the one direction that matters: it hides a button for a screen that is really there. Declare an <intent> child per action and a <package> entry per explicit component:

<queries>
    <intent>
        <action android:name="com.example.vendor.MOTION_SETTINGS" />
    </intent>
    <package android:name="com.android.settings" />
</queries>

openVendorSetting() does not trust the probe: it launches each candidate for real and catches the refusal, so a hidden-but-present screen still opens. Use the probe to decide whether to show a button; use the open to find out.

⚠️ Two failures are caught, and the second surprises people: ActivityNotFoundException when nothing handles the intent, and SecurityException when the activity exists but is not exported — common for vendor settings screens, and something resolveActivity() gives no warning about.

KnownVendorSettingTargets — observed screens, as data

Rediscovering a vendor's strings — and rediscovering the ordering trap above the hard way — is worse than shipping the few that are known, so they are exported as an ordinary value you can pass, spread, edit, or ignore:

import { NativeSettings, KnownVendorSettingTargets } from 'capacitor-native-settings-extended';

await NativeSettings.openVendorSetting({
  candidates: KnownVendorSettingTargets.motionAndGestureSettings,
});

The names are typed off the constant itself (KnownVendorSettingName = keyof typeof KnownVendorSettingTargets), so the list and its type cannot drift, and each entry is checked against VendorSettingTarget where it is written — a component missing its activity fails to compile rather than being skipped on a device.

⚠️ This is data, not a stable API. Every entry was seen working on one device, on one firmware build, on the date in its doc comment. OEM screens move between builds, so treat a miss as expected and pass your own candidates when you know better. A changed string here is a minor version bump, never a patch — pin accordingly if you depend on a specific value.

API

open(...)

open(option: PlatformOptions) => Promise<{ status: boolean; }>

Opens the specified options on android & ios. Note that the only supported option by Apple is "App". Using other options might break in future iOS versions or have your app rejected in the App Store.

| Param | Type | Description | | ------------ | ----------------------------------------------------------- | ---------------------------------------------- | | option | PlatformOptions | PlatformOptions |

Returns: Promise<{ status: boolean; }>


openAndroid(...)

openAndroid(option: AndroidOptions) => Promise<{ status: boolean; }>

Opens the specified option in android. Only use this if you have made sure the user is on android. This can be done by checking the platform before hand.

| Param | Type | Description | | ------------ | --------------------------------------------------------- | -------------------------------------------- | | option | AndroidOptions | AndroidOptions |

Returns: Promise<{ status: boolean; }>


openIOS(...)

openIOS(option: IOSOptions) => Promise<{ status: boolean; }>

Opens the specified option on iOS. Only use this if you have made sure the user is on iOS. This can be done by checking the platform before hand.

Note that the only supported option by Apple is "App". Using other options might break in future iOS versions or have your app rejected in the App Store.

| Param | Type | Description | | ------------ | ------------------------------------------------- | ------------------------------------ | | option | IOSOptions | IOSOptions |

Returns: Promise<{ status: boolean; }>


getDeviceSetting(...)

getDeviceSetting(options: DeviceSettingOptions) => Promise<DeviceSettingResult>

Reads ONE device setting by name and reports its raw value. Android only — on iOS and web it resolves present: false, value: null.

🔑 The value is returned as a RAW STRING, deliberately, because the useful answer here is three-state and a boolean would destroy it:

  • "1" — the setting exists and is on
  • "0" — the setting exists and is OFF (the user can turn it on)
  • null — the key is not present: this build has no such feature at all, and no trip to any settings screen will ever create it

The middle state is the actionable one and the one a boolean API loses. A caller that only wants "is it on" can compare to "1"; a caller deciding whether to OFFER a settings shortcut needs to tell "0" from null.

Reading needs NO permission and does no I/O worth caching around. Writing would need WRITE_SETTINGS and is deliberately NOT offered: these keys are the user's, and a kiosk silently changing them is the behaviour this plugin exists to avoid.

⚠️ Vendor keys are not API. Names differ between OEMs, appear and disappear between builds of the same brand, and are not documented anywhere. null is therefore an ordinary answer, not an error — see {@link NativeSettingsPlugin.canOpenVendorSetting} for the matching caution about opening one.

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | DeviceSettingOptions |

Returns: Promise<DeviceSettingResult>


canOpenVendorSetting(...)

canOpenVendorSetting(options: VendorSettingOptions) => Promise<VendorSettingProbeResult>

Reports whether any of the supplied targets can be opened on this device, WITHOUT opening anything. Android only.

Candidates are tried in order and the first that resolves is reported, so a caller can pass its best guess first and fall back to a broader screen.

🔴 A false here is weaker evidence than it looks, and callers must treat it as "probably not" rather than "definitely not". Since Android 11 package visibility can hide an activity that genuinely exists, this probe can be a FALSE NEGATIVE unless the app declares the relevant intents in a &lt;queries&gt; element of its manifest. {@link NativeSettingsPlugin.openVendorSetting} therefore attempts each candidate for real rather than trusting this — use this method to decide whether to show a button, and let the open attempt be the final word.

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | VendorSettingOptions |

Returns: Promise<VendorSettingProbeResult>


openVendorSetting(...)

openVendorSetting(options: VendorSettingOptions) => Promise<VendorSettingOpenResult>

Opens the first of the supplied targets that this device will accept. Android only.

🔑 This does NOT pre-filter on {@link NativeSettingsPlugin.canOpenVendorSetting}. Each candidate is launched for real and a refusal is caught, so a target hidden from the resolver by package visibility still opens. The trade is that a genuinely absent target costs one caught exception per candidate, which is cheap and happens once, in response to a tap.

⚠️ This method holds no vendor knowledge. It launches whatever the caller supplies, exactly as {@link NativeSettingsPlugin.getDeviceSetting} reads whatever key the caller names — OEM screens move between builds, and baking component names into the native path would mean republishing the plugin every time one moved.

The package does ship {@link KnownVendorSettingTargets}: an optional, separately exported list of screens that have been observed to open. It is data a caller may pass, not behaviour this method applies, and it is explicitly not a stable API — see its own caution. Nothing here consults it, and a caller that ignores it loses nothing.

🔑 A candidate carrying both an action and a component is ONE intent, not a fallback pair: the action is set, then the explicit component, and the component wins resolution. Trying one form and then another is what the candidates LIST does — order it most-specific first.

🔑 This survives an armed kiosk, and the reason is the TASK. The activity is started from the host Activity's context with no FLAG_ACTIVITY_NEW_TASK, so the settings screen joins the app's OWN task rather than starting its own. A kiosk that re-front's itself on pause is then a no-op: the task it pulls forward is already the frontmost one, and the settings screen is on top of it. Verified 2026-09-08 on a contained device — isInKioskMode true, the screen opened and stayed for the whole observation rather than being pulled back.

🔴 Do not add FLAG_ACTIVITY_NEW_TASK here. It looks like tidying and would give the settings screen its own task, which is exactly the shape a containment re-front can pull back under. If a caller genuinely needs a separate task, it should drop containment first, the way an app-permission trip does.

| Param | Type | | ------------- | --------------------------------------------------------------------- | | options | VendorSettingOptions |

Returns: Promise<VendorSettingOpenResult>


getDebugState()

getDebugState() => Promise<DeviceDebugState>

Returns: Promise<DeviceDebugState>


checkMicrophonePermission()

checkMicrophonePermission() => Promise<MicrophonePermissionState>

Reports the current state of the microphone (RECORD_AUDIO) permission WITHOUT ever showing a dialog. Safe to call on every screen.

The point of this method is the distinction the platform APIs do not give you directly: "never asked" versus "asked and permanently refused". A customer-facing kiosk needs it, because a single diner who taps Deny turns the voice agent off for every diner after them, and only a trip to the OS settings screen can undo it.

Returns: Promise<MicrophonePermissionState>


requestMicrophonePermission()

requestMicrophonePermission() => Promise<MicrophonePermissionState>

Requests the microphone permission, showing the OS dialog when the OS is still willing to show it, and resolves with the state that resulted.

This always goes to the OS, even when a previous {@link NativeSettingsPlugin.checkMicrophonePermission} reported blocked: true. Android silently resets permissions for unused apps, so a cached "blocked" belief can be stale; a genuinely blocked permission simply resolves denied with no dialog, which costs nothing.

🔴 iOS: the app's Info.plist MUST carry NSMicrophoneUsageDescription. Requesting without it terminates the app — that is an iOS rule, not a plugin behaviour.

To send the user to the screen where a blocked permission can be restored, call {@link NativeSettingsPlugin.open} with { optionAndroid: <a href="#androidsettings">AndroidSettings.ApplicationDetails</a>, optionIOS: <a href="#iossettings">IOSSettings.App</a> }. There is deliberately no separate method for it — that is the same screen.

Returns: Promise<MicrophonePermissionState>


Interfaces

PlatformOptions

| Prop | Type | | ------------------- | ----------------------------------------------------------- | | optionAndroid | AndroidSettings | | optionIOS | IOSSettings |

AndroidOptions

| Prop | Type | | ------------ | ----------------------------------------------------------- | | option | AndroidSettings |

IOSOptions

| Prop | Type | | ------------ | --------------------------------------------------- | | option | IOSSettings |

DeviceSettingResult

| Prop | Type | Description | | ------------- | ----------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | key | string | Echoed back, so a caller batching reads can tell answers apart. | | scope | DeviceSettingScope | Echoed back — the scope actually read, with the default applied. | | value | string | null | The raw stored value, or null when the key is not present. See {@link NativeSettingsPlugin.getDeviceSetting} for why this is a string. | | present | boolean | false means the key does not exist on this build — the feature is absent, not merely switched off. Equivalent to value === null, named so the distinction is hard to skim past. |

DeviceSettingOptions

| Prop | Type | Description | | ----------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | key | string | The setting name, exactly as the vendor spells it. Case-sensitive, and not validated: an unknown name is answered present: false, which is indistinguishable from a device that lacks the feature. Prefer a constant in your own code over a literal at the call site. | | scope | DeviceSettingScope | Defaults to system. |

VendorSettingProbeResult

| Prop | Type | Description | | --------------- | --------------------------------------------------------------------------- | --------------------------------------------------------- | | available | boolean | See the false-negative caution on canOpenVendorSetting. | | matched | VendorSettingTarget | null | The candidate that resolved, or null. |

VendorSettingOptions

| Prop | Type | Description | | ---------------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | candidates | readonly VendorSettingTarget[] | Tried in order; the first that works wins. An empty list is an error. readonly so a list declared as const -- including the exported KnownVendorSettingTargets -- can be passed straight in without being copied. Nothing here mutates it. |

VendorSettingOpenResult

| Prop | Type | Description | | ------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------- | | opened | boolean | | | matched | VendorSettingTarget | null | The candidate that actually opened, or null when none would. |

DeviceDebugState

| Prop | Type | Description | | ----------------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | developerOptionsEnabled | boolean | True when Developer Options is enabled in the device settings (Settings.Global.DEVELOPMENT_SETTINGS_ENABLED on Android). | | adbEnabled | boolean | True when USB debugging / ADB is enabled (Settings.Global.ADB_ENABLED on Android). | | appDebuggable | boolean | True when the running app itself is a debuggable build (ApplicationInfo.FLAG_DEBUGGABLE on Android — i.e. android:debuggable="true" in the manifest, as produced by a debug build type). This is independent of the device Developer Options / ADB settings: Stripe Terminal v5 also refuses production Tap to Pay from a debuggable app ("Debuggable applications are not supported when using the production version of the Tap to Pay reader"), which no device toggle can clear — only installing a release build. | | anyDebugEnabled | boolean | Convenience OR of the individual flags — true when any debug option is on. |

MicrophonePermissionState

| Prop | Type | Description | | ---------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | status | MicrophonePermissionStatus | The coarse state. | | canRequest | boolean | True when calling {@link NativeSettingsPlugin.requestMicrophonePermission} can still produce an OS dialog. This is the flag to gate an "Enable the microphone" button on. On Android this is true both before the first ask and after a plain Deny (Android allows one more attempt); it goes false once the user has chosen "Don't allow" twice. On iOS it is true only before the first ask — iOS never shows the dialog a second time. | | blocked | boolean | True when the permission is refused AND the OS will no longer offer a dialog, so the only remaining route is the app's settings screen. blocked is what a kiosk should surface as an operator-actionable error; status === 'denied' && canRequest is a diner-recoverable state and should NOT be escalated to the operator. |

Type Aliases

DeviceSettingScope

Which of Android's three settings tables to read.

system is where per-device user preferences live and is where vendor feature toggles are usually found, so it is the default. secure and global are readable too; many of their keys are documented platform constants rather than vendor extras.

(typeof DEVICE_SETTING_SCOPES)[number]

VendorSettingTarget

One way to address a vendor settings screen: an intent action, or an explicit component (package and activity together).

🔑 A union rather than three optional fields, deliberately. A half-specified component -- { package } with no activity -- cannot be launched, so the native side skips it. As an interface with everything optional it would compile cleanly and then do nothing at all, which is the most expensive kind of mistake here: silent. The union makes it a compile error instead, and leaves the runtime skip as a backstop for values built dynamically.

Both forms may carry the other's fields, so a candidate can name an action and a component.

⚠️ That is one intent, not a fallback pair. The native side sets the action and then the explicit component, and the component wins resolution -- it does not try the action first and fall back. Trying one form and then another is what the candidates LIST does; a single entry naming both is a single launch.

{ /** Intent action, e.g. a vendor's own ...MOTION_SETTINGS string. / action: string; /* Package for an explicit component, e.g. com.android.settings. / package?: string; /* * Fully-qualified activity for an explicit component. Inner-class * activities use $, e.g. com.android.settings.Settings$SomeActivity. / activity?: string; } | { /* Intent action, e.g. a vendor's own ...MOTION_SETTINGS string. / action?: string; /* Package for an explicit component, e.g. com.android.settings. / package: string; /* * Fully-qualified activity for an explicit component. Inner-class * activities use $, e.g. com.android.settings.Settings$SomeActivity. */ activity: string; }

MicrophonePermissionStatus

granted — the app may capture audio right now. prompt — never asked on this install; a request will show the dialog. denied — refused. Check canRequest to learn whether asking again would still put a dialog on screen. unsupported — the platform has no such permission (web), or the permission is not declared in the app's manifest at all, in which case no amount of requesting will ever grant it.

'granted' | 'prompt' | 'denied' | 'unsupported'

Enums

AndroidSettings

| Members | Value | Description | | -------------------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Accessibility | 'accessibility' | Show settings for accessibility modules | | Account | 'account' | Show add account screen for creating a new account | | AirplaneMode | 'airplane_mode' | Show settings to allow entering/exiting airplane mode | | Apn | 'apn' | Show settings to allow configuration of APNs | | ApplicationDetails | 'application_details' | Show screen of details about a particular application | | ApplicationDevelopment | 'application_development' | Show settings to allow configuration of application development-related settings | | Application | 'application' | Show settings to allow configuration of application-related settings | | AppNotification | 'app_notification' | Show settings to allow configuration of application-specific notifications | | BatteryOptimization | 'battery_optimization' | Show screen for controlling which apps can ignore battery optimizations | | Bluetooth | 'bluetooth' | Show settings to allow configuration of Bluetooth | | Captioning | 'captioning' | Show settings for video captioning | | Cast | 'cast' | Show settings to allow configuration of cast endpoints | | DataRoaming | 'data_roaming' | Show settings for selection of 2G/3G/4G | | Date | 'date' | Show settings to allow configuration of date and time | | Display | 'display' | Show settings to allow configuration of display | | Dream | 'dream' | Show Daydream settings | | Home | 'home' | Show Home selection settings | | Keyboard | 'keyboard' | Show settings to configure input methods, in particular allowing the user to enable input methods | | KeyboardSubType | 'keyboard_subtype' | Show settings to enable/disable input method subtypes | | Locale | 'locale' | Show settings to allow configuration of locale | | Location | 'location' | Show settings to allow configuration of current location sources | | ManageApplications | 'manage_applications' | Show settings to manage installed applications | | ManageAllApplications | 'manage_all_applications' | Show settings to manage all applications | | MemoryCard | 'memory_card' | Show settings for memory card storage | | Network | 'network' | Show settings for selecting the network operator | | NfcSharing | 'nfcsharing' | Show NFC Sharing settings | | NfcPayment | 'nfc_payment' | Show NFC Tap & Pay settings | | NfcSettings | 'nfc_settings' | Show NFC settings | | Print | 'print' | Show the top level print settings | | Privacy | 'privacy' | Show settings to allow configuration of privacy options | | QuickLaunch | 'quick_launch' | Show settings to allow configuration of quick launch shortcuts | | Search | 'search' | Show settings for global search | | Security | 'security' | Show settings to allow configuration of security and location privacy | | Settings | 'settings' | Show system settings | | ShowRegulatoryInfo | 'show_regulatory_info' | Show the regulatory information screen for the device | | Sound | 'sound' | Show settings to a llow configuration of sound and volume | | Storage | 'storage' | Show settings for internal storage | | Sync | 'sync' | Show settings to allow configuration of sync settings | | TextToSpeech | 'text_to_speech' | Show settings for configuring Text-to-Speech (TTS) output | | Usage | 'usage' | Show settings to control access to usage information | | UserDictionary | 'user_dictionary' | Show settings to manage the user input dictionary | | VoiceInput | 'voice_input' | Show settings to configure input methods, in particular allowing the user to enable input methods | | VPN | 'vpn' | Show settings to allow configuration of VPN | | Wifi | 'wifi' | Show settings to allow configuration of Wi-Fi | | WifiIp | 'wifi_ip' | Show settings to allow configuration of a static IP address for Wi-Fi | | Wireless | 'wireless' | Show settings to allow configuration of wireless controls such as Wi-Fi, Bluetooth and Mobile networks | | ConnectedDeviceDashboardActivity | 'connected_devices' | Show connected devices | | ZenMode | 'zen_mode' | Zen mode settings. | | ZenModePriority | 'zen_mode_priority' | Zen mode priority settings. Note that this may not work on every single device. See: https://github.com/RaphaelWoude/capacitor-native-settings/pull/63 | | ZenModeBlockedEffects | 'zen_mode_blocked_effects' | Zen mode blocked effects settings. Note that this may not work on every single device. See: https://github.com/RaphaelWoude/capacitor-native-settings/pull/63 |

IOSSettings

| Members | Value | Description | | ------------------------------ | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | About | 'about' | Settings > About page | | App | 'app' | Opens your app-specific settings screen. Note that this is the only officially supported settings screen by Apple. | | AppNotification | 'appNotification' | Opens app-specific notification settings screen for iOS 15.4+; opens general app-specific settings for earlier versions." | | AutoLock | 'autoLock' | Used to set if and when the screen should be automatically locked. | | Bluetooth | 'bluetooth' | Bluetooth settings. Allows the users to enable/disable bluetooth and to search for devices. | | LocationCheckPermission | "locationCheckPermission" | Check Location permission. | | BluetoothCheckPermission | "bluetoothCheckPermission" | Check Bluetooth permission. | | BluetoothCheckPowerOn | "bluetoothCheckPowerOn" | Check whether Bluetooth is turned on. | | DateTime | 'dateTime' | Date and time settings. | | FaceTime | 'facetime' | FaceTime settings. | | General | 'general' | Opens iOS general settings screen. | | Keyboard | 'keyboard' | Keyboard settings. | | ICloud | 'iCloud' | iCloud settings. | | ICloudStorageBackup | 'iCloudStorageBackup' | iCloud Storage and Backup settings. | | International | 'international' | Language and region settings. | | LocationServices | 'locationServices' | Show settings to allow configuration of current location sources | | Music | 'music' | Music settings. | | Notes | 'notes' | Notes settings. | | Notifications | 'notifications' | Notifications settings. | | Phone | 'phone' | Phone settings. | | Photos | 'photos' | Photos settings. | | ManagedConfigurationList | 'managedConfigurationList' | Allows the user to manage configuration profiles that are installed on the phone. | | Reset | 'reset' | Screen where the user can reset the phone to factory settings. | | Ringtone | 'ringtone' | Ringtone settings. | | Sounds | 'sounds' | Used to set phone volume, vibration settings, etc. | | SoftwareUpdate | 'softwareUpdate' | Software update screen. | | Store | 'store' | Store settings. | | Tracking | 'tracking' | Tracking settings. | | VPN | 'vpn' | VPN settings. | | Wallpaper | 'wallpaper' | Wallpaper settings. | | WiFi | 'wifi' | WiFi settings. | | Tethering | 'tethering' | Tethering settings (used to create a hotspot with mobile data). | | DoNotDisturb | 'doNotDisturb' | Do Not Disturb settings. | | TouchIdPasscode | 'touchIdPasscode' | Touch id passcode settings. | | GuidedAccess | "guidedAccess" | | | GuidedAccessAutoLockTime | "guidedAccessAutoLockTime" | | | ScreenTime | 'screenTime' | Screen Time settings. | | Accessibility | 'accessibility' | Accessibility settings. |