Skip to content

Commit 088db41

Browse files
committed
Adding permissionNative on notifications for iOS
1 parent 1e44f20 commit 088db41

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

ios/Classes/OSFlutterNotifications.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ + (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
5656
- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
5757
if ([@"OneSignal#permission" isEqualToString:call.method])
5858
result(@([OneSignal.Notifications permission]));
59+
else if ([@"OneSignal#permissionNative" isEqualToString:call.method])
60+
[self permissionNative:call withResult:result];
5961
else if ([@"OneSignal#canRequest" isEqualToString:call.method])
6062
result(@([OneSignal.Notifications canRequestPermission]));
6163
else if ([@"OneSignal#clearAll" isEqualToString:call.method])
@@ -76,6 +78,11 @@ - (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {
7678
result(FlutterMethodNotImplemented);
7779
}
7880

81+
- (void)permissionNative:(FlutterMethodCall *)call withResult:(FlutterResult)result {
82+
OSNotificationPermission *permission = [OneSignal.Notifications permissionNative];
83+
result(@((int)permission));
84+
}
85+
7986
- (void)clearAll:(FlutterMethodCall *)call withResult:(FlutterResult)result {
8087
[OneSignal.Notifications clearAll];
8188
result(nil);

lib/src/notifications.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'dart:async';
22
import 'dart:io';
33
import 'package:flutter/services.dart';
4+
import 'package:onesignal_flutter/src/defines.dart';
45
import 'package:onesignal_flutter/src/notification.dart';
56
import 'package:onesignal_flutter/src/permission.dart';
67

@@ -31,6 +32,24 @@ class OneSignalNotifications {
3132
return _permission;
3233
}
3334

35+
/// iOS only
36+
/// enum OSNotificationPermission {
37+
/// notDetermined,
38+
/// denied,
39+
/// authorized,
40+
/// provisional, // only available in iOS 12
41+
/// ephemeral, // only available in iOS 14
42+
Future<OSNotificationPermission> permissionNative() async {
43+
if (Platform.isIOS) {
44+
return OSNotificationPermission
45+
.values[await _channel.invokeMethod("OneSignal#permissionNative")];
46+
} else {
47+
return _permission
48+
? OSNotificationPermission.authorized
49+
: OSNotificationPermission.denied;
50+
}
51+
}
52+
3453
/// Whether attempting to request notification permission will show a prompt.
3554
/// Returns true if the device has not been prompted for push notification permission already.
3655
Future<bool> canRequest() async {

0 commit comments

Comments
 (0)