openNotificationSettings method

Future<bool> openNotificationSettings()

Opens the system notification settings page for this app.

On mobile platforms (iOS/Android), opens the app's notification settings. On web, returns false since browser settings cannot be opened programmatically. When this returns false, apps should show instructions to the user.

Returns true if settings were opened successfully, false otherwise.

Example:

final opened = await notificationService.openNotificationSettings();
if (!opened) {
  // Show instructions dialog for web users
  showDialog(context: context, builder: (_) => WebSettingsInstructionsDialog());
}

Implementation

Future<bool> openNotificationSettings() async {
  try {
    if (kIsWeb) {
      // Cannot open browser settings programmatically
      // Return false to indicate the app should show instructions instead
      logd('Cannot open browser settings programmatically on web');
      return false;
    }

    // Use permission_handler to open app settings on mobile platforms
    final opened = await ph.openAppSettings();
    if (opened) {
      logi('Opened notification settings');
    } else {
      logw('Failed to open notification settings');
    }
    return opened;
  } catch (e, stackTrace) {
    loge(e, 'Error opening notification settings', stackTrace);
    _onError?.call('Error opening notification settings: $e', stackTrace);
    return false;
  }
}