diff --git a/android/src/main/java/com/revenuecat/purchases_flutter/PurchasesFlutterPlugin.java b/android/src/main/java/com/revenuecat/purchases_flutter/PurchasesFlutterPlugin.java index f2556684d..f915b4dac 100644 --- a/android/src/main/java/com/revenuecat/purchases_flutter/PurchasesFlutterPlugin.java +++ b/android/src/main/java/com/revenuecat/purchases_flutter/PurchasesFlutterPlugin.java @@ -277,6 +277,10 @@ public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { String onesignalID = call.argument("onesignalID"); setOnesignalID(onesignalID, result); break; + case "setOnesignalUserID": + String onesignalUserID = call.argument("onesignalUserID"); + setOnesignalUserID(onesignalUserID, result); + break; case "setAirshipChannelID": String airshipChannelID = call.argument("airshipChannelID"); setAirshipChannelID(airshipChannelID, result); @@ -606,6 +610,11 @@ private void setOnesignalID(String onesignalID, final Result result) { result.success(null); } + private void setOnesignalUserID(String onesignalUserID, final Result result) { + SubscriberAttributesKt.setOnesignalUserID(onesignalUserID); + result.success(null); + } + private void setAirshipChannelID(String airshipChannelID, final Result result) { SubscriberAttributesKt.setAirshipChannelID(airshipChannelID); result.success(null); diff --git a/api_tester/lib/api_tests/purchases_flutter_api_test.dart b/api_tester/lib/api_tests/purchases_flutter_api_test.dart index a97138468..32d8994fa 100644 --- a/api_tester/lib/api_tests/purchases_flutter_api_test.dart +++ b/api_tester/lib/api_tests/purchases_flutter_api_test.dart @@ -318,6 +318,11 @@ class _PurchasesFlutterApiTest { Future future = Purchases.setOnesignalID(id); } + void _checkSetOnesignalUserId() { + String id = "fakeId"; + Future future = Purchases.setOnesignalUserID(id); + } + void _checkSetAirshipChannelId() async { String id = "fakeId"; await Purchases.setAirshipChannelID(id); diff --git a/ios/Classes/PurchasesFlutterPlugin.m b/ios/Classes/PurchasesFlutterPlugin.m index 3c1799ef9..fbb4165cf 100644 --- a/ios/Classes/PurchasesFlutterPlugin.m +++ b/ios/Classes/PurchasesFlutterPlugin.m @@ -157,6 +157,9 @@ - (void)handleMethodCall:(FlutterMethodCall *)call } else if ([@"setOnesignalID" isEqualToString:call.method]) { NSString *onesignalID = arguments[@"onesignalID"]; [self setOnesignalID:onesignalID result:result]; + } else if ([@"setOnesignalUserID" isEqualToString:call.method]) { + NSString *onesignalUserID = arguments[@"onesignalUserID"]; + [self setOnesignalUserID:onesignalUserID result:result]; } else if ([@"setAirshipChannelID" isEqualToString:call.method]) { NSString *airshipChannelID = arguments[@"airshipChannelID"]; [self setAirshipChannelID:airshipChannelID result:result]; @@ -483,6 +486,11 @@ - (void)setOnesignalID:(nullable NSString *)onesignalID result:(FlutterResult)re result(nil); } +- (void)setOnesignalUserID:(nullable NSString *)onesignalUserID result:(FlutterResult)result { + [RCCommonFunctionality setOnesignalUserID:onesignalUserID]; + result(nil); +} + - (void)setAirshipChannelID:(nullable NSString *)airshipChannelID result:(FlutterResult)result { [RCCommonFunctionality setAirshipChannelID:airshipChannelID]; result(nil); diff --git a/lib/purchases_flutter.dart b/lib/purchases_flutter.dart index 05ad38871..fcfbd04eb 100644 --- a/lib/purchases_flutter.dart +++ b/lib/purchases_flutter.dart @@ -794,12 +794,19 @@ class Purchases { ); /// Subscriber attribute associated with the OneSignal Player Id for the user - /// Required for the RevenueCat OneSignal integration + /// Required for the Device-centric RevenueCat OneSignal integration /// /// [onesignalID] Empty String or null will delete the subscriber attribute. static Future setOnesignalID(String onesignalID) => _channel.invokeMethod('setOnesignalID', {'onesignalID': onesignalID}); + /// Subscriber attribute associated with the OneSignal Player Id for the user + /// Required for the User-centric RevenueCat OneSignal integration + /// + /// [onesignalUserID] Empty String or null will delete the subscriber attribute. + static Future setOnesignalUserID(String onesignalUserID) => _channel + .invokeMethod('setOnesignalUserID', {'onesignalUserID': onesignalUserID}); + /// Subscriber attribute associated with the Airship Channel Id for the user /// Required for the RevenueCat Airship integration ///