Capacitor plugin to open native app settings on iOS and Android
npm install capacitor-app-settings> Capacitor plugin to open native app settings on iOS and Android



Languages: πΊπΈ English | π«π· FranΓ§ais
---
- π iOS: Opens app settings using the official UIApplication.openSettingsURLString API
- π€ Android: Support for 43 system settings (notifications, WiFi, Bluetooth, location, etc.)
- π Store-compliant: Uses only official APIs, validated for App Store & Google Play
- π¦ TypeScript: Full type definitions for better developer experience
- π― Simple: Single method to handle both iOS and Android
``bash`
npm install capacitor-app-settings
npx cap sync
`typescript
import { AppSettings } from "capacitor-app-settings";
// Opens the app settings
// iOS: App-specific settings
// Android: Application details
await AppSettings.openSettings();
`
`typescript
import { AppSettings, AndroidSetting } from "capacitor-app-settings";
// Open notification settings (Android)
await AppSettings.openSettings({
android: AndroidSetting.AppNotification,
});
// Open WiFi settings (Android)
await AppSettings.openSettings({
android: AndroidSetting.Wifi,
});
// Open location settings (Android)
await AppSettings.openSettings({
android: AndroidSetting.Location,
});
`
Opens the native system settings for the app.
Parameters:
`typescript`
interface OpenSettingsOptions {
android?: AndroidSetting; // Android-specific setting (ignored on iOS)
}
Returns: Promise<{ success: boolean }>
The plugin supports 43 types of settings on Android via the AndroidSetting enum:
| Category | Settings |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| App | ApplicationDetails, AppNotification, Application, ApplicationDevelopment |Wifi
| Network | , WifiIp, Bluetooth, Wireless, Apn, DataRoaming, Network |Location
| Location | |Settings
| System | , Display, Sound, Storage, Battery, Date, Locale |Security
| Security | , Privacy, BatteryOptimization |Accessibility
| Accessibility | , Captioning |Account
| Accounts | , Sync |ApplicationDevelopment
| Development | |Cast
| Other | , Dream, Home, Keyboard, KeyboardSubtype, MemoryCard, NfcSettings, NfcPayment, NfcSharing, Print, QuickLaunch, Search, ShowRegulatoryInfo, Usage, UserDictionary, VoiceInput, Vpn, ZenMode, ZenModePriority, ZenModeBlockedEffects |
`typescript
enum AndroidSetting {
// Application settings
ApplicationDetails = "application_details",
AppNotification = "app_notification",
Application = "application",
ApplicationDevelopment = "application_development",
// Network and connectivity
Wifi = "wifi",
WifiIp = "wifi_ip",
Bluetooth = "bluetooth",
Wireless = "wireless",
Apn = "apn",
DataRoaming = "data_roaming",
Network = "network",
// Location
Location = "location",
// System
Settings = "settings",
Display = "display",
Sound = "sound",
Storage = "storage",
Date = "date",
Locale = "locale",
// Security and privacy
Security = "security",
Privacy = "privacy",
BatteryOptimization = "battery_optimization",
// Accessibility
Accessibility = "accessibility",
Captioning = "captioning",
// Accounts
Account = "account",
Sync = "sync",
// Other
Cast = "cast",
Dream = "dream",
Home = "home",
Keyboard = "keyboard",
KeyboardSubtype = "keyboard_subtype",
ManageApplications = "manage_applications",
ManageAllApplications = "manage_all_applications",
MemoryCard = "memory_card",
NfcSettings = "nfc_settings",
NfcPayment = "nfc_payment",
NfcSharing = "nfcsharing",
Print = "print",
QuickLaunch = "quick_launch",
Search = "search",
ShowRegulatoryInfo = "show_regulatory_info",
TextToSpeech = "text_to_speech",
Usage = "usage",
UserDictionary = "user_dictionary",
VoiceInput = "voice_input",
Vpn = "vpn",
ZenMode = "zen_mode",
ZenModePriority = "zen_mode_priority",
ZenModeBlockedEffects = "zen_mode_blocked_effects",
}
`
On iOS, the plugin exclusively uses UIApplication.openSettingsURLString, which always opens your app's specific settings page (notifications, permissions, etc.).
The AndroidSetting options are ignored on iOS.
Note: On iOS Simulator, behavior may be unstable. Always test on a physical device for reliable results.
`typescript
import { LocalNotifications } from "capacitor-local-notifications";
import { AppSettings, AndroidSetting } from "capacitor-app-settings";
async function requestNotifications() {
const permission = await LocalNotifications.checkPermissions();
if (permission.display !== "granted") {
// Request permission
const result = await LocalNotifications.requestPermissions();
if (result.display !== "granted") {
// Redirect to settings if denied
await AppSettings.openSettings({
android: AndroidSetting.AppNotification,
});
}
}
}
`
`typescript
import { LocalNotifications } from "capacitor-local-notifications";
import { AppSettings, AndroidSetting } from "capacitor-app-settings";
const handleNotificationToggle = async () => {
const status = await LocalNotifications.checkPermissions();
if (status.display === "granted") {
// Permission granted -> Open settings
await AppSettings.openSettings({
android: AndroidSetting.AppNotification,
});
} else {
// Permission not granted -> Request it
await LocalNotifications.requestPermissions();
}
};
`
`typescript
import { Geolocation } from "@capacitor/geolocation";
import { AppSettings, AndroidSetting } from "capacitor-app-settings";
async function requestLocation() {
try {
const permission = await Geolocation.checkPermissions();
if (permission.location !== "granted") {
const result = await Geolocation.requestPermissions();
if (result.location !== "granted") {
// Redirect to location settings
await AppSettings.openSettings({
android: AndroidSetting.Location,
});
}
}
} catch (error) {
console.error("Error requesting location:", error);
}
}
`
- Capacitor: 7.0.0+
- iOS: 14.0+
- Android: API 21+ (Android 5.0+)
The plugin uses the official iOS API:
- UIApplication.openSettingsURLString to open app settings
- Compatible with latest iOS versions
- App Store compliant
The plugin maps options to Android Intent actions:
- Settings.ACTION_APPLICATION_DETAILS_SETTINGS (app settings)Settings.ACTION_APP_NOTIFICATION_SETTINGS
- (notifications)
- And 41 other Android system actions
MIT License - see LICENSE file for details.
Contributions are welcome! See CONTRIBUTING.md for more information.
`bashClone the repo
git clone https://github.com/allohouston/capacitor-app-settings.git
cd capacitor-app-settings
If you encounter any issues, please open an issue with:
- Plugin version
- Capacitor version
- Platform (iOS/Android)
- Issue description
- Reproduction code (if possible)
See CHANGELOG.md for version history.
---
Built with β€οΈ for Capacitor by Numeriz