Skip to content

Commit

Permalink
Merge pull request #28 from DuncanKelbie/ios_provisional_notification…
Browse files Browse the repository at this point in the history
…_handling

Handle provisional notification status on iOS 12 and above
  • Loading branch information
Vanethos committed Aug 4, 2020
2 parents 09e902c + 6f44567 commit 162176e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
5 changes: 5 additions & 0 deletions ios/Classes/SwiftNotificationPermissionsPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ public class SwiftNotificationPermissionsPlugin: NSObject, FlutterPlugin {
var permissionGranted:String = "granted"
var permissionUnknown:String = "unknown"
var permissionDenied:String = "denied"
var permissionProvisional:String = "provisional"

public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "notification_permissions", binaryMessenger: registrar.messenger())
Expand Down Expand Up @@ -111,6 +112,10 @@ public class SwiftNotificationPermissionsPlugin: NSObject, FlutterPlugin {
completion(self.permissionDenied)
} else if settings.authorizationStatus == .authorized {
completion(self.permissionGranted)
} else if #available(iOS 12.0, *){
if (settings.authorizationStatus == .provisional){
completion(self.permissionProvisional)
}
}
})
} else {
Expand Down
7 changes: 5 additions & 2 deletions lib/notification_permissions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ class NotificationPermissions {
bool openSettings = true}) async {
final map = iosSettings.toMap();
map["openSettings"] = openSettings;
String status = await _channel.invokeMethod('requestNotificationPermissions', map);
String status =
await _channel.invokeMethod('requestNotificationPermissions', map);
return _getPermissionStatus(status);
}

Expand All @@ -32,13 +33,15 @@ class NotificationPermissions {
return PermissionStatus.denied;
case "granted":
return PermissionStatus.granted;
case "provisional":
return PermissionStatus.provisional;
default:
return PermissionStatus.unknown;
}
}
}

enum PermissionStatus { granted, unknown, denied }
enum PermissionStatus { granted, unknown, denied, provisional }

class NotificationSettingsIos {
const NotificationSettingsIos({
Expand Down

0 comments on commit 162176e

Please sign in to comment.