Skip to content

Commit 14cff3c

Browse files
authored
WMSDK-552: New public method for push permission (#175)
* WMSDK-552: Add `refreshNotificationPermissionStatus` and deprecate old API * WMSDK-552: Update Example with new public method `refreshNotificationPermissionStatus()` * Remove new method from Example
1 parent d289255 commit 14cff3c

File tree

8 files changed

+33
-34
lines changed

8 files changed

+33
-34
lines changed

example/flutter_example/lib/view_model/view_model.dart

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import 'package:mindbox/mindbox.dart';
22
import 'package:permission_handler/permission_handler.dart';
33

44
class ViewModel {
5-
65
//https://developers.mindbox.ru/docs/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-flutter-sdk
76
static syncOperation() {
87
Mindbox.instance.executeSyncOperation(
@@ -34,17 +33,14 @@ class ViewModel {
3433
//used for send action "notification center was opened"
3534
static asyncOperationNCOpen() {
3635
Mindbox.instance.executeAsyncOperation(
37-
operationSystemName: "mobileapp.NCOpen",
38-
operationBody: {}
39-
);
36+
operationSystemName: "mobileapp.NCOpen", operationBody: {});
4037
}
4138

4239
//used for send action "click on push from notification center"
4340
static asyncOperationNCPushOpen(String pushName, String pushDate) {
4441
Mindbox.instance.executeAsyncOperation(
4542
operationSystemName: "mobileapp.NCPushOpen",
46-
operationBody: getPushOpenOperationBody(pushName, pushDate)
47-
);
43+
operationBody: getPushOpenOperationBody(pushName, pushDate));
4844
}
4945

5046
static getSDKVersion(Function complition) {
@@ -70,8 +66,8 @@ class ViewModel {
7066
var status = await Permission.notification.status;
7167
if (!status.isGranted) {
7268
status = await Permission.notification.request();
73-
Mindbox.instance.updateNotificationPermissionStatus(
74-
granted: status.isGranted);
69+
Mindbox.instance
70+
.updateNotificationPermissionStatus(granted: status.isGranted);
7571
}
7672
}
7773

@@ -103,7 +99,8 @@ class ViewModel {
10399
}
104100
}
105101

106-
static Map<String, dynamic> getPushOpenOperationBody(String pushName, String pushDate) {
102+
static Map<String, dynamic> getPushOpenOperationBody(
103+
String pushName, String pushDate) {
107104
return {
108105
"data": {
109106
"customerAction": {

mindbox/lib/mindbox.dart

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -147,20 +147,24 @@ class Mindbox {
147147
MindboxPlatform.instance.registerInAppCallbacks(inAppCallbacks: callbacks);
148148
}
149149

150-
/// Updates the notification permission status.
150+
/// This method is kept for backward compatibility. The `granted` argument is ignored.
151151
///
152-
/// The [granted] parameter specifies whether the permission for notifications
153-
/// has been granted:
154-
///
155-
/// - `true` indicates that the user has granted permission.
156-
/// - `false` indicates that the user has denied permission.
152+
/// The SDK reads the current system authorization status and, if it differs
153+
/// from the last known value, sends an update to the backend.
154+
@Deprecated('Use `refreshNotificationPermissionStatus` instead')
155+
void updateNotificationPermissionStatus({required bool granted}) {
156+
MindboxPlatform.instance.refreshNotificationPermissionStatus();
157+
}
158+
159+
/// Checks the current system authorization status for push notifications
160+
/// and reports any changes to Mindbox.
157161
///
158162
/// Example usage:
159163
/// ```dart
160-
/// Mindbox.instance.updateNotificationPermissionStatus(granted: true);
161-
void updateNotificationPermissionStatus({required bool granted}) {
162-
MindboxPlatform.instance
163-
.updateNotificationPermissionStatus(granted: granted);
164+
/// Mindbox.instance.refreshNotificationPermissionStatus();
165+
/// ```
166+
void refreshNotificationPermissionStatus() {
167+
MindboxPlatform.instance.refreshNotificationPermissionStatus();
164168
}
165169

166170
/// Writes a log message to the native Mindbox logging system.

mindbox_android/android/src/main/kotlin/cloud/mindbox/mindbox_android/MindboxAndroidPlugin.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,8 @@ class MindboxAndroidPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, Ne
160160
}
161161
}
162162
}
163-
"updateNotificationPermissionStatus" -> {
163+
164+
"refreshNotificationPermissionStatus" -> {
164165
Mindbox.updateNotificationPermissionStatus(context = context)
165166
}
166167

mindbox_android/lib/src/mindbox_android_platform.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ class MindboxAndroidPlatform extends MindboxPlatform {
104104

105105
// Method for to send notification permission status
106106
@override
107-
void updateNotificationPermissionStatus({required bool granted}) {
108-
_methodHandler.updateNotificationPermissionStatus(granted: granted);
107+
void refreshNotificationPermissionStatus() {
108+
_methodHandler.refreshNotificationPermissionStatus();
109109
}
110110

111111
@override

mindbox_ios/ios/Classes/SwiftMindboxIosPlugin.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -164,11 +164,9 @@ public class SwiftMindboxIosPlugin: NSObject, FlutterPlugin {
164164
} else {
165165
Mindbox.logger.log(level: .info, message: "Use default callback")
166166
}
167-
case "updateNotificationPermissionStatus":
168-
guard let granted = call.arguments as? Bool else {
169-
return
170-
}
171-
Mindbox.shared.notificationsRequestAuthorization(granted: granted)
167+
168+
case "refreshNotificationPermissionStatus":
169+
Mindbox.shared.refreshNotificationPermissionStatus()
172170

173171
case "writeNativeLog":
174172
guard let args = call.arguments as? [Any], args.count >= 2 else {

mindbox_ios/lib/src/mindbox_ios_platform.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ class MindboxIosPlatform extends MindboxPlatform {
104104

105105
// Method for to send notification permission status
106106
@override
107-
void updateNotificationPermissionStatus({required bool granted}) {
108-
_methodHandler.updateNotificationPermissionStatus(granted: granted);
107+
void refreshNotificationPermissionStatus() {
108+
_methodHandler.refreshNotificationPermissionStatus();
109109
}
110110

111111
/// Writes a log message to the native Mindbox logging system.

mindbox_platform_interface/lib/src/mindbox_platform.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,8 @@ abstract class MindboxPlatform {
124124
'setLogLevel() has not been implemented.');
125125

126126
/// Method for sending notification permission status
127-
void updateNotificationPermissionStatus({required bool granted}) =>
128-
throw UnimplementedError(
129-
'updateNotificationPermissionStatus() has not been implemented');
127+
void refreshNotificationPermissionStatus() => throw UnimplementedError(
128+
'refreshNotificationPermissionStatus() has not been implemented');
130129

131130
/// Writes a log message to the native Mindbox logging system.
132131
void writeNativeLog({required String message, required LogLevel logLevel}) =>

mindbox_platform_interface/lib/src/types/mindbox_method_handler.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,8 +151,8 @@ class MindboxMethodHandler {
151151
}
152152

153153
/// Method for sending notification permission status
154-
void updateNotificationPermissionStatus({required bool granted}) async {
155-
await channel.invokeMethod('updateNotificationPermissionStatus', granted);
154+
void refreshNotificationPermissionStatus() async {
155+
await channel.invokeMethod('refreshNotificationPermissionStatus');
156156
}
157157

158158
/// Method for registers a list of InAppCallback instances to handle clicks

0 commit comments

Comments
 (0)