From 6022f931156d2db1dd9b359f6e2f68dc2f630418 Mon Sep 17 00:00:00 2001 From: Sergei Semko <28645140+justSmK@users.noreply.github.com> Date: Thu, 6 Nov 2025 12:04:02 +0300 Subject: [PATCH 1/3] WMSDK-552: Add `refreshNotificationPermissionStatus` and deprecate old API --- mindbox/lib/mindbox.dart | 24 +++++++++++-------- .../mindbox_android/MindboxAndroidPlugin.kt | 3 ++- .../lib/src/mindbox_android_platform.dart | 4 ++-- .../ios/Classes/SwiftMindboxIosPlugin.swift | 8 +++---- mindbox_ios/lib/src/mindbox_ios_platform.dart | 4 ++-- .../lib/src/mindbox_platform.dart | 5 ++-- .../lib/src/types/mindbox_method_handler.dart | 4 ++-- 7 files changed, 27 insertions(+), 25 deletions(-) diff --git a/mindbox/lib/mindbox.dart b/mindbox/lib/mindbox.dart index eee3afd..b7e0403 100644 --- a/mindbox/lib/mindbox.dart +++ b/mindbox/lib/mindbox.dart @@ -147,20 +147,24 @@ class Mindbox { MindboxPlatform.instance.registerInAppCallbacks(inAppCallbacks: callbacks); } - /// Updates the notification permission status. + /// This method is kept for backward compatibility. The `granted` argument is ignored. /// - /// The [granted] parameter specifies whether the permission for notifications - /// has been granted: - /// - /// - `true` indicates that the user has granted permission. - /// - `false` indicates that the user has denied permission. + /// The SDK reads the current system authorization status and, if it differs + /// from the last known value, sends an update to the backend. + @Deprecated('Use `refreshNotificationPermissionStatus` instead') + void updateNotificationPermissionStatus({required bool granted}) { + MindboxPlatform.instance.refreshNotificationPermissionStatus(); + } + + /// Checks the current system authorization status for push notifications + /// and reports any changes to Mindbox. /// /// Example usage: /// ```dart - /// Mindbox.instance.updateNotificationPermissionStatus(granted: true); - void updateNotificationPermissionStatus({required bool granted}) { - MindboxPlatform.instance - .updateNotificationPermissionStatus(granted: granted); + /// Mindbox.instance.refreshNotificationPermissionStatus(); + /// ``` + void refreshNotificationPermissionStatus() { + MindboxPlatform.instance.refreshNotificationPermissionStatus(); } /// Writes a log message to the native Mindbox logging system. diff --git a/mindbox_android/android/src/main/kotlin/cloud/mindbox/mindbox_android/MindboxAndroidPlugin.kt b/mindbox_android/android/src/main/kotlin/cloud/mindbox/mindbox_android/MindboxAndroidPlugin.kt index 817f61f..f33d0e9 100644 --- a/mindbox_android/android/src/main/kotlin/cloud/mindbox/mindbox_android/MindboxAndroidPlugin.kt +++ b/mindbox_android/android/src/main/kotlin/cloud/mindbox/mindbox_android/MindboxAndroidPlugin.kt @@ -160,7 +160,8 @@ class MindboxAndroidPlugin : FlutterPlugin, MethodCallHandler, ActivityAware, Ne } } } - "updateNotificationPermissionStatus" -> { + + "refreshNotificationPermissionStatus" -> { Mindbox.updateNotificationPermissionStatus(context = context) } diff --git a/mindbox_android/lib/src/mindbox_android_platform.dart b/mindbox_android/lib/src/mindbox_android_platform.dart index 0f76745..6414ba2 100644 --- a/mindbox_android/lib/src/mindbox_android_platform.dart +++ b/mindbox_android/lib/src/mindbox_android_platform.dart @@ -104,8 +104,8 @@ class MindboxAndroidPlatform extends MindboxPlatform { // Method for to send notification permission status @override - void updateNotificationPermissionStatus({required bool granted}) { - _methodHandler.updateNotificationPermissionStatus(granted: granted); + void refreshNotificationPermissionStatus() { + _methodHandler.refreshNotificationPermissionStatus(); } @override diff --git a/mindbox_ios/ios/Classes/SwiftMindboxIosPlugin.swift b/mindbox_ios/ios/Classes/SwiftMindboxIosPlugin.swift index 1e4b8cb..6fb7119 100644 --- a/mindbox_ios/ios/Classes/SwiftMindboxIosPlugin.swift +++ b/mindbox_ios/ios/Classes/SwiftMindboxIosPlugin.swift @@ -164,11 +164,9 @@ public class SwiftMindboxIosPlugin: NSObject, FlutterPlugin { } else { Mindbox.logger.log(level: .info, message: "Use default callback") } - case "updateNotificationPermissionStatus": - guard let granted = call.arguments as? Bool else { - return - } - Mindbox.shared.notificationsRequestAuthorization(granted: granted) + + case "refreshNotificationPermissionStatus": + Mindbox.shared.refreshNotificationPermissionStatus() case "writeNativeLog": guard let args = call.arguments as? [Any], args.count >= 2 else { diff --git a/mindbox_ios/lib/src/mindbox_ios_platform.dart b/mindbox_ios/lib/src/mindbox_ios_platform.dart index 22b6cbe..e800a33 100644 --- a/mindbox_ios/lib/src/mindbox_ios_platform.dart +++ b/mindbox_ios/lib/src/mindbox_ios_platform.dart @@ -104,8 +104,8 @@ class MindboxIosPlatform extends MindboxPlatform { // Method for to send notification permission status @override - void updateNotificationPermissionStatus({required bool granted}) { - _methodHandler.updateNotificationPermissionStatus(granted: granted); + void refreshNotificationPermissionStatus() { + _methodHandler.refreshNotificationPermissionStatus(); } /// Writes a log message to the native Mindbox logging system. diff --git a/mindbox_platform_interface/lib/src/mindbox_platform.dart b/mindbox_platform_interface/lib/src/mindbox_platform.dart index dacbef6..f98eb22 100644 --- a/mindbox_platform_interface/lib/src/mindbox_platform.dart +++ b/mindbox_platform_interface/lib/src/mindbox_platform.dart @@ -124,9 +124,8 @@ abstract class MindboxPlatform { 'setLogLevel() has not been implemented.'); /// Method for sending notification permission status - void updateNotificationPermissionStatus({required bool granted}) => - throw UnimplementedError( - 'updateNotificationPermissionStatus() has not been implemented'); + void refreshNotificationPermissionStatus() => throw UnimplementedError( + 'refreshNotificationPermissionStatus() has not been implemented'); /// Writes a log message to the native Mindbox logging system. void writeNativeLog({required String message, required LogLevel logLevel}) => diff --git a/mindbox_platform_interface/lib/src/types/mindbox_method_handler.dart b/mindbox_platform_interface/lib/src/types/mindbox_method_handler.dart index 14e2c6a..7bd58f1 100644 --- a/mindbox_platform_interface/lib/src/types/mindbox_method_handler.dart +++ b/mindbox_platform_interface/lib/src/types/mindbox_method_handler.dart @@ -151,8 +151,8 @@ class MindboxMethodHandler { } /// Method for sending notification permission status - void updateNotificationPermissionStatus({required bool granted}) async { - await channel.invokeMethod('updateNotificationPermissionStatus', granted); + void refreshNotificationPermissionStatus() async { + await channel.invokeMethod('refreshNotificationPermissionStatus'); } /// Method for registers a list of InAppCallback instances to handle clicks From 9f38e4fc180c87d804b147e6cdcb52c28fdfd7df Mon Sep 17 00:00:00 2001 From: Sergei Semko <28645140+justSmK@users.noreply.github.com> Date: Thu, 6 Nov 2025 12:07:03 +0300 Subject: [PATCH 2/3] WMSDK-552: Update Example with new public method `refreshNotificationPermissionStatus()` --- example/flutter_example/lib/view_model/view_model.dart | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/example/flutter_example/lib/view_model/view_model.dart b/example/flutter_example/lib/view_model/view_model.dart index 6b0afc6..928b00d 100644 --- a/example/flutter_example/lib/view_model/view_model.dart +++ b/example/flutter_example/lib/view_model/view_model.dart @@ -70,8 +70,7 @@ class ViewModel { var status = await Permission.notification.status; if (!status.isGranted) { status = await Permission.notification.request(); - Mindbox.instance.updateNotificationPermissionStatus( - granted: status.isGranted); + Mindbox.instance.refreshNotificationPermissionStatus(); } } From ed21e307bc6ee271074264d070b5c2ca6a6ed410 Mon Sep 17 00:00:00 2001 From: Sergei Semko <28645140+justSmK@users.noreply.github.com> Date: Thu, 6 Nov 2025 12:25:47 +0300 Subject: [PATCH 3/3] Remove new method from Example --- .../flutter_example/lib/view_model/view_model.dart | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/example/flutter_example/lib/view_model/view_model.dart b/example/flutter_example/lib/view_model/view_model.dart index 928b00d..f613f3e 100644 --- a/example/flutter_example/lib/view_model/view_model.dart +++ b/example/flutter_example/lib/view_model/view_model.dart @@ -2,7 +2,6 @@ import 'package:mindbox/mindbox.dart'; import 'package:permission_handler/permission_handler.dart'; class ViewModel { - //https://developers.mindbox.ru/docs/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-flutter-sdk static syncOperation() { Mindbox.instance.executeSyncOperation( @@ -34,17 +33,14 @@ class ViewModel { //used for send action "notification center was opened" static asyncOperationNCOpen() { Mindbox.instance.executeAsyncOperation( - operationSystemName: "mobileapp.NCOpen", - operationBody: {} - ); + operationSystemName: "mobileapp.NCOpen", operationBody: {}); } //used for send action "click on push from notification center" static asyncOperationNCPushOpen(String pushName, String pushDate) { Mindbox.instance.executeAsyncOperation( operationSystemName: "mobileapp.NCPushOpen", - operationBody: getPushOpenOperationBody(pushName, pushDate) - ); + operationBody: getPushOpenOperationBody(pushName, pushDate)); } static getSDKVersion(Function complition) { @@ -70,7 +66,8 @@ class ViewModel { var status = await Permission.notification.status; if (!status.isGranted) { status = await Permission.notification.request(); - Mindbox.instance.refreshNotificationPermissionStatus(); + Mindbox.instance + .updateNotificationPermissionStatus(granted: status.isGranted); } } @@ -102,7 +99,8 @@ class ViewModel { } } - static Map getPushOpenOperationBody(String pushName, String pushDate) { + static Map getPushOpenOperationBody( + String pushName, String pushDate) { return { "data": { "customerAction": {