Skip to content

Commit 1219e37

Browse files
feat(ios): add carplay notification permissions option
1 parent d842345 commit 1219e37

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

permission_handler_apple/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## [9.4.8]
2+
3+
* Enhanced notification permission checking to include CarPlay notification settings on iOS 10.0+ devices.
4+
15
## 9.4.7
26

37
* Increases minimum supported Flutter version to 3.3.0, and removes code only

permission_handler_apple/ios/Classes/strategies/NotificationPermissionStrategy.m

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ - (void)requestPermission:(PermissionGroup)permission completionHandler:(Permiss
3636
authorizationOptions += UNAuthorizationOptionSound;
3737
authorizationOptions += UNAuthorizationOptionAlert;
3838
authorizationOptions += UNAuthorizationOptionBadge;
39+
authorizationOptions += UNAuthorizationOptionCarPlay;
3940
[center requestAuthorizationWithOptions:(authorizationOptions) completionHandler:^(BOOL granted, NSError * _Nullable error) {
4041
if (error != nil || !granted) {
4142
completionHandler(PermissionStatusPermanentlyDenied);
@@ -60,6 +61,18 @@ + (PermissionStatus)permissionStatus {
6061
permissionStatus = PermissionStatusPermanentlyDenied;
6162
} else if (settings.authorizationStatus == UNAuthorizationStatusNotDetermined) {
6263
permissionStatus = PermissionStatusDenied;
64+
} else if (settings.authorizationStatus == UNAuthorizationStatusAuthorized) {
65+
if (@available(iOS 10.0, *)) {
66+
if (settings.carPlaySetting == UNNotificationSettingEnabled) {
67+
permissionStatus = PermissionStatusGranted;
68+
} else if (settings.carPlaySetting == UNNotificationSettingDisabled) {
69+
permissionStatus = PermissionStatusGranted;
70+
} else {
71+
permissionStatus = PermissionStatusGranted;
72+
}
73+
} else {
74+
permissionStatus = PermissionStatusGranted;
75+
}
6376
}
6477
dispatch_semaphore_signal(sem);
6578
}];

permission_handler_apple/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: permission_handler_apple
22
description: Permission plugin for Flutter. This plugin provides the iOS API to request and check permissions.
33
repository: https://github.com/baseflow/flutter-permission-handler
44
issue_tracker: https://github.com/Baseflow/flutter-permission-handler/issues
5-
version: 9.4.7
5+
version: 9.4.8
66

77
environment:
88
sdk: ">=2.18.0 <4.0.0"

permission_handler_platform_interface/lib/src/permissions.dart

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,20 @@ class Permission {
170170
/// Permission for accessing ignore battery optimizations (Android only).
171171
static const ignoreBatteryOptimizations = Permission._(16);
172172

173-
/// Permission for pushing notifications.
173+
/// Permission for requesting notification permissions.
174+
///
175+
/// **iOS**: Requests both general and CarPlay notification permissions on iOS 10.0+.
176+
/// Status checking includes CarPlay settings when available, with graceful fallback
177+
/// for older devices.
178+
///
179+
/// **Android/Other platforms**: Standard notification permission behavior.
180+
///
181+
/// Example:
182+
/// ```dart
183+
/// // Automatically includes CarPlay on supported iOS devices
184+
/// final status = await Permission.notification.status;
185+
/// final result = await Permission.notification.request();
186+
/// ```
174187
static const notification = Permission._(17);
175188

176189
/// Permission for accessing the device's media library.

0 commit comments

Comments
 (0)