Skip to content

Commit 30b945f

Browse files
authored
Merge pull request #480 from geektimecoil/gdpr_privacy
Gdpr privacy
2 parents 35e96c5 + 47f375a commit 30b945f

File tree

6 files changed

+61
-6
lines changed

6 files changed

+61
-6
lines changed

android/src/main/java/com/geektime/rnonesignalandroid/RNOneSignal.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.facebook.react.bridge.ReadableMap;
2424
import com.facebook.react.bridge.WritableMap;
2525
import com.facebook.react.modules.core.DeviceEventManagerModule;
26+
import com.facebook.react.bridge.Promise;
2627
import com.onesignal.OSPermissionState;
2728
import com.onesignal.OSPermissionSubscriptionState;
2829
import com.onesignal.OSSubscriptionState;
@@ -212,6 +213,10 @@ public void idsAvailable(String userId, String registrationId) {
212213
@ReactMethod
213214
public void getPermissionSubscriptionState(final Callback callback) {
214215
OSPermissionSubscriptionState state = OneSignal.getPermissionSubscriptionState();
216+
217+
if (state == null)
218+
return;
219+
215220
OSPermissionState permissionState = state.getPermissionStatus();
216221
OSSubscriptionState subscriptionState = state.getSubscriptionStatus();
217222
OSEmailSubscriptionState emailSubscriptionState = state.getEmailSubscriptionStatus();
@@ -335,6 +340,21 @@ public void cancelNotification(int id) {
335340
OneSignal.cancelNotification(id);
336341
}
337342

343+
@ReactMethod
344+
public void setRequiresUserPrivacyConsent(Boolean required) {
345+
OneSignal.setRequiresUserPrivacyConsent(required);
346+
}
347+
348+
@ReactMethod
349+
public void provideUserConsent(Boolean granted) {
350+
OneSignal.provideUserConsent(granted);
351+
}
352+
353+
@ReactMethod
354+
public void userProvidedPrivacyConsent(Promise promise) {
355+
promise.resolve(OneSignal.userProvidedPrivacyConsent());
356+
}
357+
338358
private void registerNotificationsReceivedNotification() {
339359
IntentFilter intentFilter = new IntentFilter(NOTIFICATION_RECEIVED_INTENT_FILTER);
340360
mReactContext.registerReceiver(new BroadcastReceiver() {

index.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,5 +275,18 @@ export default class OneSignal {
275275
static setLogLevel(nsLogLevel, visualLogLevel) {
276276
RNOneSignal.setLogLevel(nsLogLevel, visualLogLevel);
277277
}
278+
279+
static setRequiresUserPrivacyConsent(required) {
280+
RNOneSignal.setRequiresUserPrivacyConsent(required);
281+
}
282+
283+
static provideUserConsent(granted) {
284+
RNOneSignal.provideUserConsent(granted);
285+
}
286+
287+
static userProvidedPrivacyConsent() {
288+
//returns a promise
289+
return RNOneSignal.userProvidedPrivacyConsent();
290+
}
278291

279292
}

ios/OneSignal.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,11 @@ typedef NS_ENUM(NSUInteger, ONE_S_LOG_LEVEL) {
340340
+ (id)initWithLaunchOptions:(NSDictionary*)launchOptions appId:(NSString*)appId handleNotificationAction:(OSHandleNotificationActionBlock)actionCallback settings:(NSDictionary*)settings;
341341
+ (id)initWithLaunchOptions:(NSDictionary*)launchOptions appId:(NSString*)appId handleNotificationReceived:(OSHandleNotificationReceivedBlock)receivedCallback handleNotificationAction:(OSHandleNotificationActionBlock)actionCallback settings:(NSDictionary*)settings;
342342

343+
// - Privacy
344+
+ (void)consentGranted:(BOOL)granted;
345+
+ (BOOL)requiresUserPrivacyConsent; // tells your application if privacy consent is still needed from the current user
346+
+ (void)setRequiresUserPrivacyConsent:(BOOL)required; //used by wrapper SDK's to require user privacy consent
347+
343348
@property (class) OSNotificationDisplayType inFocusDisplayType;
344349

345350
+ (NSString*)app_id;

ios/RCTOneSignal.xcodeproj/project.pbxproj

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@
88

99
/* Begin PBXBuildFile section */
1010
CA1CC868200FE3C3005B66AA /* RCTOneSignalExtensionService.m in Sources */ = {isa = PBXBuildFile; fileRef = CA1CC867200FE3C3005B66AA /* RCTOneSignalExtensionService.m */; };
11+
CA362AF7209927E20095B77A /* libOneSignal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CA362AF5209927E20095B77A /* libOneSignal.a */; };
12+
CA362AF8209927E20095B77A /* OneSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = CA362AF6209927E20095B77A /* OneSignal.h */; };
1113
CA3D8B582076D83C006F3572 /* RCTOneSignal.h in Headers */ = {isa = PBXBuildFile; fileRef = FDB40CC21C5E4E5500CBF09B /* RCTOneSignal.h */; };
1214
CA3D8B592076D83C006F3572 /* RCTOneSignalExtensionService.h in Headers */ = {isa = PBXBuildFile; fileRef = CA1CC866200FE3C3005B66AA /* RCTOneSignalExtensionService.h */; };
1315
CA3D8B5A2076D84E006F3572 /* RCTOneSignal.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = FDB40CC21C5E4E5500CBF09B /* RCTOneSignal.h */; };
1416
CA3D8B5B2076D84E006F3572 /* RCTOneSignalExtensionService.h in Copy Headers */ = {isa = PBXBuildFile; fileRef = CA1CC866200FE3C3005B66AA /* RCTOneSignalExtensionService.h */; };
15-
CA3D8BE62076F34B006F3572 /* libOneSignal.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CA3D8BE52076F34B006F3572 /* libOneSignal.a */; };
1617
CACB39D6202D232A00D86CD1 /* RCTOneSignalEventEmitter.m in Sources */ = {isa = PBXBuildFile; fileRef = CACB39D5202D232A00D86CD1 /* RCTOneSignalEventEmitter.m */; };
1718
FD2CCC851C772B4200B2B24E /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FD2CCC841C772B4200B2B24E /* SystemConfiguration.framework */; };
1819
FDB40CC41C5E4E5500CBF09B /* RCTOneSignal.m in Sources */ = {isa = PBXBuildFile; fileRef = FDB40CC31C5E4E5500CBF09B /* RCTOneSignal.m */; };
@@ -37,8 +38,8 @@
3738
3245CDED1BFEE35C00EABF68 /* libRCTOneSignal.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRCTOneSignal.a; sourceTree = BUILT_PRODUCTS_DIR; };
3839
CA1CC866200FE3C3005B66AA /* RCTOneSignalExtensionService.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTOneSignalExtensionService.h; sourceTree = "<group>"; };
3940
CA1CC867200FE3C3005B66AA /* RCTOneSignalExtensionService.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTOneSignalExtensionService.m; sourceTree = "<group>"; };
40-
CA3D8BE52076F34B006F3572 /* libOneSignal.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOneSignal.a; sourceTree = "<group>"; };
41-
CA8BBC6F205881DB002CDF67 /* OneSignal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OneSignal.h; sourceTree = "<group>"; };
41+
CA362AF5209927E20095B77A /* libOneSignal.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libOneSignal.a; sourceTree = "<group>"; };
42+
CA362AF6209927E20095B77A /* OneSignal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OneSignal.h; sourceTree = "<group>"; };
4243
CACB39D4202D232A00D86CD1 /* RCTOneSignalEventEmitter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RCTOneSignalEventEmitter.h; sourceTree = "<group>"; };
4344
CACB39D5202D232A00D86CD1 /* RCTOneSignalEventEmitter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTOneSignalEventEmitter.m; sourceTree = "<group>"; };
4445
FD2CCC841C772B4200B2B24E /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; };
@@ -51,7 +52,7 @@
5152
isa = PBXFrameworksBuildPhase;
5253
buildActionMask = 2147483647;
5354
files = (
54-
CA3D8BE62076F34B006F3572 /* libOneSignal.a in Frameworks */,
55+
CA362AF7209927E20095B77A /* libOneSignal.a in Frameworks */,
5556
FD2CCC851C772B4200B2B24E /* SystemConfiguration.framework in Frameworks */,
5657
);
5758
runOnlyForDeploymentPostprocessing = 0;
@@ -93,8 +94,8 @@
9394
CA1CC858200FDEFC005B66AA /* Frameworks */ = {
9495
isa = PBXGroup;
9596
children = (
96-
CA8BBC6F205881DB002CDF67 /* OneSignal.h */,
97-
CA3D8BE52076F34B006F3572 /* libOneSignal.a */,
97+
CA362AF5209927E20095B77A /* libOneSignal.a */,
98+
CA362AF6209927E20095B77A /* OneSignal.h */,
9899
);
99100
name = Frameworks;
100101
sourceTree = "<group>";
@@ -107,6 +108,7 @@
107108
buildActionMask = 2147483647;
108109
files = (
109110
CA3D8B582076D83C006F3572 /* RCTOneSignal.h in Headers */,
111+
CA362AF8209927E20095B77A /* OneSignal.h in Headers */,
110112
CA3D8B592076D83C006F3572 /* RCTOneSignalExtensionService.h in Headers */,
111113
);
112114
runOnlyForDeploymentPostprocessing = 0;

ios/RCTOneSignal/RCTOneSignalEventEmitter.m

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,21 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body {
9595

9696
#pragma mark Exported Methods
9797

98+
RCT_EXPORT_METHOD(setRequiresUserPrivacyConsent:(BOOL)required) {
99+
[OneSignal setRequiresUserPrivacyConsent:required];
100+
}
101+
102+
RCT_EXPORT_METHOD(provideUserConsent:(BOOL)granted) {
103+
dispatch_async(dispatch_get_main_queue(), ^{
104+
[OneSignal consentGranted:granted];
105+
});
106+
}
107+
108+
RCT_REMAP_METHOD(userProvidedPrivacyConsent, resolver: (RCTPromiseResolveBlock)resolve
109+
rejecter:(RCTPromiseRejectBlock)reject) {
110+
resolve(@(!OneSignal.requiresUserPrivacyConsent));
111+
}
112+
98113
RCT_EXPORT_METHOD(initWithAppId:(NSString *)appId settings:(NSDictionary *)settings) {
99114
dispatch_async(dispatch_get_main_queue(), ^{
100115
[[RCTOneSignal sharedInstance] configureWithAppId:appId settings:settings];

ios/libOneSignal.a

1.1 MB
Binary file not shown.

0 commit comments

Comments
 (0)