From 14cff3cef2e646ac238767c6ac3f6df2fca9ab06 Mon Sep 17 00:00:00 2001 From: Sergei Semko <28645140+justSmK@users.noreply.github.com> Date: Thu, 20 Nov 2025 12:47:12 +0300 Subject: [PATCH 1/2] 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 --- .../lib/view_model/view_model.dart | 15 +++++------- 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 ++-- 8 files changed, 33 insertions(+), 34 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..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,8 +66,8 @@ class ViewModel { var status = await Permission.notification.status; if (!status.isGranted) { status = await Permission.notification.request(); - Mindbox.instance.updateNotificationPermissionStatus( - granted: status.isGranted); + Mindbox.instance + .updateNotificationPermissionStatus(granted: status.isGranted); } } @@ -103,7 +99,8 @@ class ViewModel { } } - static Map getPushOpenOperationBody(String pushName, String pushDate) { + static Map getPushOpenOperationBody( + String pushName, String pushDate) { return { "data": { "customerAction": { 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 80c00ee71a4b3c646b3f9818cacc3279a61f3dfc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 10:35:43 +0000 Subject: [PATCH 2/2] Bump SDK versions: Flutter=2.14.3, Android=2.14.4, iOS=2.14.4 --- mindbox/CHANGELOG.md | 5 +++++ mindbox/pubspec.yaml | 8 ++++---- mindbox_android/CHANGELOG.md | 4 ++++ mindbox_android/android/build.gradle | 2 +- mindbox_android/pubspec.yaml | 4 ++-- mindbox_ios/CHANGELOG.md | 4 ++++ mindbox_ios/ios/mindbox_ios.podspec | 6 +++--- mindbox_ios/pubspec.yaml | 4 ++-- mindbox_platform_interface/CHANGELOG.md | 5 +++++ mindbox_platform_interface/pubspec.yaml | 2 +- 10 files changed, 31 insertions(+), 13 deletions(-) diff --git a/mindbox/CHANGELOG.md b/mindbox/CHANGELOG.md index 79501d2..22ff90c 100644 --- a/mindbox/CHANGELOG.md +++ b/mindbox/CHANGELOG.md @@ -1,3 +1,8 @@ +## 2.14.3 + +* Upgrade native Android SDK dependency to v2.14.4. +* Upgrade native iOS SDK dependency to v2.14.4. + ## 2.14.2 * Upgrade native Android SDK dependency to v2.14.3. diff --git a/mindbox/pubspec.yaml b/mindbox/pubspec.yaml index c75523a..943bf26 100644 --- a/mindbox/pubspec.yaml +++ b/mindbox/pubspec.yaml @@ -1,6 +1,6 @@ name: mindbox description: Flutter Mindbox SDK. Plugin wrapper over of Mindbox iOS/Android SDK. -version: 2.14.2 +version: 2.14.3 homepage: https://mindbox.cloud/ repository: https://github.com/mindbox-cloud/flutter-sdk/tree/master/mindbox documentation: https://developers.mindbox.ru/docs/flutter-sdk-integration @@ -20,9 +20,9 @@ flutter: dependencies: flutter: sdk: flutter - mindbox_android: ^2.14.2 - mindbox_ios: ^2.14.2 - mindbox_platform_interface: ^2.14.2 + mindbox_android: ^2.14.3 + mindbox_ios: ^2.14.3 + mindbox_platform_interface: ^2.14.3 dev_dependencies: flutter_test: diff --git a/mindbox_android/CHANGELOG.md b/mindbox_android/CHANGELOG.md index 11ace91..4c726c8 100644 --- a/mindbox_android/CHANGELOG.md +++ b/mindbox_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.14.3 + +* Upgrade native Android SDK dependency to v2.14.4. + ## 2.14.2 * Upgrade native Android SDK dependency to v2.14.3. diff --git a/mindbox_android/android/build.gradle b/mindbox_android/android/build.gradle index aa56392..eeb5d59 100644 --- a/mindbox_android/android/build.gradle +++ b/mindbox_android/android/build.gradle @@ -50,5 +50,5 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - api 'cloud.mindbox:mobile-sdk:2.14.3' + api 'cloud.mindbox:mobile-sdk:2.14.4' } diff --git a/mindbox_android/pubspec.yaml b/mindbox_android/pubspec.yaml index 640671b..5b04400 100644 --- a/mindbox_android/pubspec.yaml +++ b/mindbox_android/pubspec.yaml @@ -1,6 +1,6 @@ name: mindbox_android description: The implementation of 'mindbox' plugin for the Android platform. -version: 2.14.2 +version: 2.14.3 homepage: https://mindbox.cloud/ repository: https://github.com/mindbox-cloud/flutter-sdk/tree/master/mindbox_android @@ -19,7 +19,7 @@ flutter: dependencies: flutter: sdk: flutter - mindbox_platform_interface: ^2.14.2 + mindbox_platform_interface: ^2.14.3 dev_dependencies: flutter_test: diff --git a/mindbox_ios/CHANGELOG.md b/mindbox_ios/CHANGELOG.md index b9f2f21..3562190 100644 --- a/mindbox_ios/CHANGELOG.md +++ b/mindbox_ios/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.14.3 + +* Upgrade native iOS SDK dependency to v2.14.4. + ## 2.14.2 * Upgrade native iOS SDK dependency to v2.14.3. diff --git a/mindbox_ios/ios/mindbox_ios.podspec b/mindbox_ios/ios/mindbox_ios.podspec index 0d34e5d..0ab5f82 100644 --- a/mindbox_ios/ios/mindbox_ios.podspec +++ b/mindbox_ios/ios/mindbox_ios.podspec @@ -4,7 +4,7 @@ # Pod::Spec.new do |s| s.name = 'mindbox_ios' - s.version = '2.14.3' + s.version = '2.14.4' s.summary = 'Mindbox Flutter SDK' s.description = <<-DESC The implementation of 'mindbox' plugin for the iOS platform @@ -15,8 +15,8 @@ The implementation of 'mindbox' plugin for the iOS platform s.source = { :path => '.' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' - s.dependency 'Mindbox', '2.14.3' - s.dependency 'MindboxNotifications', '2.14.3' + s.dependency 'Mindbox', '2.14.4' + s.dependency 'MindboxNotifications', '2.14.4' s.platform = :ios, '12.0' # Flutter.framework does not contain a i386 slice. diff --git a/mindbox_ios/pubspec.yaml b/mindbox_ios/pubspec.yaml index fb4a49c..3df65ca 100644 --- a/mindbox_ios/pubspec.yaml +++ b/mindbox_ios/pubspec.yaml @@ -1,6 +1,6 @@ name: mindbox_ios description: The implementation of 'mindbox' plugin for the iOS platform. -version: 2.14.2 +version: 2.14.3 homepage: https://mindbox.cloud/ repository: https://github.com/mindbox-cloud/flutter-sdk/tree/master/mindbox_ios @@ -18,7 +18,7 @@ flutter: dependencies: flutter: sdk: flutter - mindbox_platform_interface: ^2.14.2 + mindbox_platform_interface: ^2.14.3 dev_dependencies: flutter_test: diff --git a/mindbox_platform_interface/CHANGELOG.md b/mindbox_platform_interface/CHANGELOG.md index 02fae18..954e2ce 100644 --- a/mindbox_platform_interface/CHANGELOG.md +++ b/mindbox_platform_interface/CHANGELOG.md @@ -1,3 +1,8 @@ +## 2.14.3 + +* Upgrade native Android SDK dependency to v2.14.4. +* Upgrade native iOS SDK dependency to v2.14.4. + ## 2.14.2 * Upgrade native Android SDK dependency to v2.14.3. diff --git a/mindbox_platform_interface/pubspec.yaml b/mindbox_platform_interface/pubspec.yaml index f6322bb..90a582e 100644 --- a/mindbox_platform_interface/pubspec.yaml +++ b/mindbox_platform_interface/pubspec.yaml @@ -1,6 +1,6 @@ name: mindbox_platform_interface description: Mindbox platform interface. -version: 2.14.2 +version: 2.14.3 homepage: https://mindbox.cloud/ repository: https://github.com/mindbox-cloud/flutter-sdk/tree/master/mindbox_platform_interface