Skip to content

Commit 97468f8

Browse files
authored
WMSDK-552: New public method for push permission (#128)
* WMSDK-552: Add refreshNotificationPermissionStatus and deprecate old API * WMSDK-552: Update Example with new public method `refreshNotificationPermissionStatus()` - Added the usage of the public method `refreshNotificationPermissionStatus()` to re-check system push notification authorization and send update to backend. - Added a Privacy manifest for iOS app - Fixed missing `deviceUUID` in the UI after the first installation - Added endpoints for the Example App * Fix TS6133 error without linter issue
1 parent a947502 commit 97468f8

File tree

9 files changed

+112
-41
lines changed

9 files changed

+112
-41
lines changed

android/src/main/java/com/mindboxsdk/MindboxSdkModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ class MindboxSdkModule(private val reactContext: ReactApplicationContext) : Reac
228228
}
229229

230230
@ReactMethod
231-
fun updateNotificationPermissionStatus(granted: Boolean) {
231+
fun refreshNotificationPermissionStatus() {
232232
Mindbox.updateNotificationPermissionStatus(
233233
context = reactApplicationContext.applicationContext,
234234
)

example/exampleApp/ios/AppDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD
9797
extension AppDelegate: RCTBridgeDelegate {
9898
func sourceURL(for bridge: RCTBridge!) -> URL! {
9999
#if DEBUG
100-
return RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index", fallbackResource: nil)
100+
return RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
101101
#else
102102
return Bundle.main.url(forResource: "main", withExtension: "jsbundle")
103103
#endif

example/exampleApp/ios/exampleApp.xcodeproj/project.pbxproj

Lines changed: 23 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
3ACCD5252B736C0000C94F45 /* UserNotificationsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3ACCD5242B736C0000C94F45 /* UserNotificationsUI.framework */; };
2222
3ACCD5282B736C0000C94F45 /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3ACCD5272B736C0000C94F45 /* NotificationViewController.swift */; };
2323
3ACCD52F2B736C0000C94F45 /* MindboxNotificationContentExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 3ACCD5212B736C0000C94F45 /* MindboxNotificationContentExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
24+
47632DE92EBB68C1005CF203 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 47632DE82EBB68C1005CF203 /* PrivacyInfo.xcprivacy */; };
2425
6FA2F0A6E649B5D37A50E5DF /* libPods-exampleApp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 225AB1FB2853D87400D56406 /* libPods-exampleApp.a */; };
2526
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
2627
D12DD691CE76549C9A289F4A /* libPods-exampleApp-MindboxNotificationContentExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F94D0E16F83CA4229F8935E5 /* libPods-exampleApp-MindboxNotificationContentExtension.a */; };
@@ -85,6 +86,7 @@
8586
3ACCD5332B736C3600C94F45 /* MindboxNotificationContentExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = MindboxNotificationContentExtension.entitlements; sourceTree = "<group>"; };
8687
443E0C92268BE125C44414DB /* Pods-exampleApp-MindboxNotificationServiceExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exampleApp-MindboxNotificationServiceExtension.debug.xcconfig"; path = "Target Support Files/Pods-exampleApp-MindboxNotificationServiceExtension/Pods-exampleApp-MindboxNotificationServiceExtension.debug.xcconfig"; sourceTree = "<group>"; };
8788
47152D5D7BA14904B8BB519A /* Pods-exampleApp-MindboxNotificationContentExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exampleApp-MindboxNotificationContentExtension.release.xcconfig"; path = "Target Support Files/Pods-exampleApp-MindboxNotificationContentExtension/Pods-exampleApp-MindboxNotificationContentExtension.release.xcconfig"; sourceTree = "<group>"; };
89+
47632DE82EBB68C1005CF203 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = exampleApp/PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
8890
47AD8F18AB85B027D3981AE3 /* Pods-exampleApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exampleApp.debug.xcconfig"; path = "Target Support Files/Pods-exampleApp/Pods-exampleApp.debug.xcconfig"; sourceTree = "<group>"; };
8991
52276FFC6E12FB80FA062002 /* libPods-exampleApp-exampleAppTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-exampleApp-exampleAppTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
9092
6A5E00695C40D3AAF012A013 /* Pods-exampleApp-MindboxNotificationContentExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-exampleApp-MindboxNotificationContentExtension.debug.xcconfig"; path = "Target Support Files/Pods-exampleApp-MindboxNotificationContentExtension/Pods-exampleApp-MindboxNotificationContentExtension.debug.xcconfig"; sourceTree = "<group>"; };
@@ -130,6 +132,7 @@
130132
13B07FAE1A68108700A75B9A /* exampleApp */ = {
131133
isa = PBXGroup;
132134
children = (
135+
47632DE82EBB68C1005CF203 /* PrivacyInfo.xcprivacy */,
133136
3A88FC0B2B6CEE180046E687 /* exampleApp.entitlements */,
134137
13B07FB51A68108700A75B9A /* Images.xcassets */,
135138
13B07FB61A68108700A75B9A /* Info.plist */,
@@ -348,6 +351,7 @@
348351
buildActionMask = 2147483647;
349352
files = (
350353
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
354+
47632DE92EBB68C1005CF203 /* PrivacyInfo.xcprivacy in Resources */,
351355
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
352356
);
353357
runOnlyForDeploymentPostprocessing = 0;
@@ -393,14 +397,10 @@
393397
inputFileListPaths = (
394398
"${PODS_ROOT}/Target Support Files/Pods-exampleApp/Pods-exampleApp-frameworks-${CONFIGURATION}-input-files.xcfilelist",
395399
);
396-
inputPaths = (
397-
);
398400
name = "[CP] Embed Pods Frameworks";
399401
outputFileListPaths = (
400402
"${PODS_ROOT}/Target Support Files/Pods-exampleApp/Pods-exampleApp-frameworks-${CONFIGURATION}-output-files.xcfilelist",
401403
);
402-
outputPaths = (
403-
);
404404
runOnlyForDeploymentPostprocessing = 0;
405405
shellPath = /bin/sh;
406406
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-exampleApp/Pods-exampleApp-frameworks.sh\"\n";
@@ -414,14 +414,10 @@
414414
inputFileListPaths = (
415415
"${PODS_ROOT}/Target Support Files/Pods-exampleApp/Pods-exampleApp-resources-${CONFIGURATION}-input-files.xcfilelist",
416416
);
417-
inputPaths = (
418-
);
419417
name = "[CP] Copy Pods Resources";
420418
outputFileListPaths = (
421419
"${PODS_ROOT}/Target Support Files/Pods-exampleApp/Pods-exampleApp-resources-${CONFIGURATION}-output-files.xcfilelist",
422420
);
423-
outputPaths = (
424-
);
425421
runOnlyForDeploymentPostprocessing = 0;
426422
shellPath = /bin/sh;
427423
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-exampleApp/Pods-exampleApp-resources.sh\"\n";
@@ -435,14 +431,10 @@
435431
inputFileListPaths = (
436432
"${PODS_ROOT}/Target Support Files/Pods-exampleApp-MindboxNotificationContentExtension/Pods-exampleApp-MindboxNotificationContentExtension-resources-${CONFIGURATION}-input-files.xcfilelist",
437433
);
438-
inputPaths = (
439-
);
440434
name = "[CP] Copy Pods Resources";
441435
outputFileListPaths = (
442436
"${PODS_ROOT}/Target Support Files/Pods-exampleApp-MindboxNotificationContentExtension/Pods-exampleApp-MindboxNotificationContentExtension-resources-${CONFIGURATION}-output-files.xcfilelist",
443437
);
444-
outputPaths = (
445-
);
446438
runOnlyForDeploymentPostprocessing = 0;
447439
shellPath = /bin/sh;
448440
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-exampleApp-MindboxNotificationContentExtension/Pods-exampleApp-MindboxNotificationContentExtension-resources.sh\"\n";
@@ -500,14 +492,10 @@
500492
inputFileListPaths = (
501493
"${PODS_ROOT}/Target Support Files/Pods-exampleApp-MindboxNotificationServiceExtension/Pods-exampleApp-MindboxNotificationServiceExtension-resources-${CONFIGURATION}-input-files.xcfilelist",
502494
);
503-
inputPaths = (
504-
);
505495
name = "[CP] Copy Pods Resources";
506496
outputFileListPaths = (
507497
"${PODS_ROOT}/Target Support Files/Pods-exampleApp-MindboxNotificationServiceExtension/Pods-exampleApp-MindboxNotificationServiceExtension-resources-${CONFIGURATION}-output-files.xcfilelist",
508498
);
509-
outputPaths = (
510-
);
511499
runOnlyForDeploymentPostprocessing = 0;
512500
shellPath = /bin/sh;
513501
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-exampleApp-MindboxNotificationServiceExtension/Pods-exampleApp-MindboxNotificationServiceExtension-resources.sh\"\n";
@@ -610,6 +598,7 @@
610598
PRODUCT_BUNDLE_IDENTIFIER = mindbox.RN.Example;
611599
PRODUCT_NAME = exampleApp;
612600
PROVISIONING_PROFILE_SPECIFIER = "";
601+
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
613602
SWIFT_OBJC_BRIDGING_HEADER = "exampleApp-Bridging-Header.h";
614603
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
615604
SWIFT_VERSION = 5.0;
@@ -643,6 +632,7 @@
643632
PRODUCT_BUNDLE_IDENTIFIER = mindbox.RN.Example;
644633
PRODUCT_NAME = exampleApp;
645634
PROVISIONING_PROFILE_SPECIFIER = "";
635+
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "";
646636
SWIFT_OBJC_BRIDGING_HEADER = "exampleApp-Bridging-Header.h";
647637
SWIFT_VERSION = 5.0;
648638
VERSIONING_SYSTEM = "apple-generic";
@@ -833,6 +823,7 @@
833823
isa = XCBuildConfiguration;
834824
buildSettings = {
835825
ALWAYS_SEARCH_USER_PATHS = "$(inherited)";
826+
CC = "";
836827
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
837828
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
838829
CLANG_CXX_LIBRARY = "libc++";
@@ -860,6 +851,7 @@
860851
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
861852
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
862853
COPY_PHASE_STRIP = NO;
854+
CXX = "";
863855
ENABLE_STRICT_OBJC_MSGSEND = YES;
864856
ENABLE_TESTABILITY = YES;
865857
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
@@ -879,6 +871,8 @@
879871
GCC_WARN_UNUSED_FUNCTION = YES;
880872
GCC_WARN_UNUSED_VARIABLE = YES;
881873
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
874+
LD = "";
875+
LDPLUSPLUS = "";
882876
LD_RUNPATH_SEARCH_PATHS = (
883877
/usr/lib/swift,
884878
"$(inherited)",
@@ -898,9 +892,13 @@
898892
"-DFOLLY_USE_LIBCPP=1",
899893
"-DFOLLY_CFG_NO_COROUTINES=1",
900894
);
901-
OTHER_LDFLAGS = "$(inherited) ";
895+
OTHER_LDFLAGS = (
896+
"$(inherited)",
897+
" ",
898+
);
902899
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
903900
SDKROOT = iphoneos;
901+
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
904902
USE_HERMES = true;
905903
};
906904
name = Debug;
@@ -909,6 +907,7 @@
909907
isa = XCBuildConfiguration;
910908
buildSettings = {
911909
ALWAYS_SEARCH_USER_PATHS = "$(inherited)";
910+
CC = "";
912911
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
913912
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
914913
CLANG_CXX_LIBRARY = "libc++";
@@ -936,6 +935,7 @@
936935
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
937936
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
938937
COPY_PHASE_STRIP = YES;
938+
CXX = "";
939939
ENABLE_NS_ASSERTIONS = NO;
940940
ENABLE_STRICT_OBJC_MSGSEND = YES;
941941
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386;
@@ -948,6 +948,8 @@
948948
GCC_WARN_UNUSED_FUNCTION = YES;
949949
GCC_WARN_UNUSED_VARIABLE = YES;
950950
IPHONEOS_DEPLOYMENT_TARGET = 13.4;
951+
LD = "";
952+
LDPLUSPLUS = "";
951953
LD_RUNPATH_SEARCH_PATHS = (
952954
/usr/lib/swift,
953955
"$(inherited)",
@@ -966,7 +968,10 @@
966968
"-DFOLLY_USE_LIBCPP=1",
967969
"-DFOLLY_CFG_NO_COROUTINES=1",
968970
);
969-
OTHER_LDFLAGS = "$(inherited) ";
971+
OTHER_LDFLAGS = (
972+
"$(inherited)",
973+
" ",
974+
);
970975
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
971976
SDKROOT = iphoneos;
972977
USE_HERMES = true;
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>NSPrivacyTracking</key>
6+
<false/>
7+
<key>NSPrivacyTrackingDomains</key>
8+
<array/>
9+
<key>NSPrivacyCollectedDataTypes</key>
10+
<array>
11+
<dict>
12+
<key>NSPrivacyCollectedDataType</key>
13+
<string>NSPrivacyCollectedDataTypeOtherDiagnosticData</string>
14+
<key>NSPrivacyCollectedDataTypeLinked</key>
15+
<false/>
16+
<key>NSPrivacyCollectedDataTypeTracking</key>
17+
<false/>
18+
<key>NSPrivacyCollectedDataTypePurposes</key>
19+
<array>
20+
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
21+
</array>
22+
</dict>
23+
<dict>
24+
<key>NSPrivacyCollectedDataType</key>
25+
<string>NSPrivacyCollectedDataTypeDeviceID</string>
26+
<key>NSPrivacyCollectedDataTypeLinked</key>
27+
<true/>
28+
<key>NSPrivacyCollectedDataTypeTracking</key>
29+
<false/>
30+
<key>NSPrivacyCollectedDataTypePurposes</key>
31+
<array>
32+
<string>NSPrivacyCollectedDataTypePurposeProductPersonalization</string>
33+
</array>
34+
</dict>
35+
</array>
36+
<key>NSPrivacyAccessedAPITypes</key>
37+
<array>
38+
<dict>
39+
<key>NSPrivacyAccessedAPIType</key>
40+
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
41+
<key>NSPrivacyAccessedAPITypeReasons</key>
42+
<array>
43+
<string>CA92.1</string>
44+
</array>
45+
</dict>
46+
</array>
47+
</dict>
48+
</plist>

example/exampleApp/src/screens/HomeScreen.tsx

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { chooseInappCallback, RegisterInappCallback } from '../utils/InAppCallba
1010
const configuration = {
1111
domain: 'api.mindbox.ru',
1212
// Set your endpoints system name for ios and android below
13-
endpointId: Platform.OS === 'ios' ? '' : '',
13+
endpointId: Platform.OS === 'ios' ? 'Mpush-test.IosRnExample' : 'Mpush-test.AndroidRnExample',
1414
subscribeCustomerIfCreated: true,
1515
shouldCreateCustomer: true,
1616
}
@@ -26,18 +26,27 @@ const HomeScreen = () => {
2626
const [sdkVersion, setSdkVersion] = useState('Empty')
2727

2828
useEffect(() => {
29-
requestNotificationPermission()
30-
appInitializationCallback()
3129
// https://developers.mindbox.ru/docs/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-react-natice-sdk#setloglevel-since-280
3230
MindboxSdk.setLogLevel(LogLevel.DEBUG)
31+
32+
requestNotificationPermission()
33+
appInitializationCallback()
34+
3335
// https://developers.mindbox.ru/docs/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-react-natice-sdk#getdeviceuuid
34-
MindboxSdk.getDeviceUUID(setDeviceUUID)
35-
// https://developers.mindbox.ru/docs/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-react-natice-sdk#gettoken
36-
MindboxSdk.getTokens(setToken)
37-
// https://developers.mindbox.ru/docs/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-react-natice-sdk#getsdkversion-since-280
38-
MindboxSdk.getSdkVersion((version) => {
39-
setSdkVersion(version)
36+
MindboxSdk.getDeviceUUID((uuid: string) => {
37+
setDeviceUUID(uuid)
38+
39+
// https://developers.mindbox.ru/docs/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-react-natice-sdk#gettoken
40+
MindboxSdk.getTokens((t: string) => {
41+
setToken(t)
42+
43+
// https://developers.mindbox.ru/docs/%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-react-natice-sdk#getsdkversion-since-280
44+
MindboxSdk.getSdkVersion((version) => {
45+
setSdkVersion(version)
46+
})
47+
})
4048
})
49+
4150
// https://developers.mindbox.ru/docs/in-app#react-native
4251
chooseInappCallback(RegisterInappCallback.DEFAULT)
4352
}, [appInitializationCallback])

example/exampleApp/src/utils/RequestPermission.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@ import MindboxSdk from 'mindbox-sdk'
33

44
export const requestNotificationPermission = async () => {
55
requestNotifications(['alert', 'sound']).then(({ status, settings }) => {
6-
if (status === RESULTS.GRANTED) {
7-
console.log('Permission granted')
8-
MindboxSdk.updateNotificationPermissionStatus(true)
9-
} else {
10-
console.log('Permission not granted')
11-
MindboxSdk.updateNotificationPermissionStatus(false)
12-
}
6+
MindboxSdk.refreshNotificationPermissionStatus()
137
})
148
}

ios/MindboxSdk.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ @interface RCT_EXTERN_MODULE(MindboxSdk, NSObject)
2222

2323
RCT_EXTERN_METHOD(pushDelivered:(NSString)uniqKey)
2424

25-
RCT_EXTERN_METHOD(updateNotificationPermissionStatus:(BOOL)granted)
25+
RCT_EXTERN_METHOD(refreshNotificationPermissionStatus)
2626

2727
RCT_EXTERN_METHOD(writeNativeLog:(NSString)message level:(NSInteger)level)
2828

ios/MindboxSdk.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ class MindboxSdk: NSObject {
193193
}
194194

195195
@objc
196-
func updateNotificationPermissionStatus(_ granted: Bool) {
197-
Mindbox.shared.notificationsRequestAuthorization(granted: granted)
196+
func refreshNotificationPermissionStatus() {
197+
Mindbox.shared.refreshNotificationPermissionStatus()
198198
}
199199

200200
@objc

src/index.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -434,12 +434,27 @@ class MindboxSdkClass {
434434
}
435435

436436
/**
437-
* This method is used to inform sdk when the notification permission status changed
437+
* This method is kept for backward compatibility. The `granted` argument is ignored.
438+
* The SDK reads the current system authorization status and, if it differs
439+
* from the last known value, sends an update to the backend.
438440
*
439441
* @param granted current permission status
442+
* @deprecated Use `refreshNotificationPermissionStatus()` instead.
440443
*/
441444
public updateNotificationPermissionStatus(granted: Boolean) {
442-
return MindboxSdkNative.updateNotificationPermissionStatus(granted)
445+
console.warn(`updateNotificationPermissionStatus(granted=${String(granted)}) is deprecated. Use refreshNotificationPermissionStatus instead.`)
446+
return MindboxSdkNative.refreshNotificationPermissionStatus()
447+
}
448+
449+
/**
450+
* Checks the current system authorization status for push notifications
451+
* and reports any changes to Mindbox.
452+
*
453+
* @example
454+
* MindboxSdk.refreshNotificationPermissionStatus()
455+
*/
456+
public refreshNotificationPermissionStatus() {
457+
return MindboxSdkNative.refreshNotificationPermissionStatus()
443458
}
444459

445460
/**

0 commit comments

Comments
 (0)