Skip to content

Commit 0bbc608

Browse files
committed
Added external user id callback and updated native SDK usage versions
* Android native now updated to 3.13.0 * iOS native now updated to 2.13.1 * Added external user id callback bridge for Dart and Java/Obj-C code
1 parent 1008452 commit 0bbc608

File tree

6 files changed

+54
-22
lines changed

6 files changed

+54
-22
lines changed

Diff for: android/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ android {
3434
}
3535

3636
dependencies {
37-
api 'com.onesignal:OneSignal:3.12.7'
37+
api 'com.onesignal:OneSignal:3.13.0'
3838
}
3939

4040
// Adds required manifestPlaceholders keys to allow mainifest merge gradle step to complete

Diff for: android/src/main/java/com/onesignal/flutter/OneSignalPlugin.java

+25-6
Original file line numberDiff line numberDiff line change
@@ -298,14 +298,33 @@ public void onFailure(EmailUpdateError error) {
298298
});
299299
}
300300

301-
private void setExternalUserId(MethodCall call, Result result) {
302-
OneSignal.setExternalUserId((String)call.argument("externalUserId"));
303-
replySuccess(result, null);
301+
private void setExternalUserId(MethodCall call, final Result result) {
302+
String externalUserId = call.argument("externalUserId");
303+
OneSignal.setExternalUserId(externalUserId, new OneSignal.OSExternalUserIdUpdateCompletionHandler() {
304+
@Override
305+
public void onComplete(JSONObject results) {
306+
try {
307+
replySuccess(result, OneSignalSerializer.convertJSONObjectToHashMap(results));
308+
} catch (JSONException e) {
309+
OneSignal.onesignalLog(OneSignal.LOG_LEVEL.ERROR,
310+
"Encountered an error attempting to deserialize server response for setExternalUserId: " + e.getMessage());
311+
}
312+
}
313+
});
304314
}
305315

306-
private void removeExternalUserId(Result result) {
307-
OneSignal.removeExternalUserId();
308-
replySuccess(result, null);
316+
private void removeExternalUserId(final Result result) {
317+
OneSignal.removeExternalUserId(new OneSignal.OSExternalUserIdUpdateCompletionHandler() {
318+
@Override
319+
public void onComplete(JSONObject results) {
320+
try {
321+
replySuccess(result, OneSignalSerializer.convertJSONObjectToHashMap(results));
322+
} catch (JSONException e) {
323+
OneSignal.onesignalLog(OneSignal.LOG_LEVEL.ERROR,
324+
"Encountered an error attempting to deserialize server response for removeExternalUserId: " + e.getMessage());
325+
}
326+
}
327+
});
309328
}
310329

311330
private void initNotificationOpenedHandlerParams() {

Diff for: example/lib/main.dart

+12-6
Original file line numberDiff line numberDiff line change
@@ -182,16 +182,22 @@ class _MyAppState extends State<MyApp> {
182182

183183
void _handleSetExternalUserId() {
184184
print("Setting external user ID");
185-
OneSignal.shared.setExternalUserId(_externalUserId);
186-
this.setState(() {
187-
_debugLabelString = "Set External User ID";
185+
OneSignal.shared.setExternalUserId(_externalUserId).then((results) {
186+
if (results == null) return;
187+
188+
this.setState(() {
189+
_debugLabelString = "External user id set: $results";
190+
});
188191
});
189192
}
190193

191194
void _handleRemoveExternalUserId() {
192-
OneSignal.shared.removeExternalUserId();
193-
this.setState(() {
194-
_debugLabelString = "Removed external user ID";
195+
OneSignal.shared.removeExternalUserId().then((results) {
196+
if (results == null) return;
197+
198+
this.setState(() {
199+
_debugLabelString = "External user id removed: $results";
200+
});
195201
});
196202
}
197203

Diff for: ios/Classes/OneSignalPlugin.m

+7-4
Original file line numberDiff line numberDiff line change
@@ -263,13 +263,16 @@ - (void)setExternalUserId:(FlutterMethodCall *)call withResult:(FlutterResult)re
263263
id externalId = call.arguments[@"externalUserId"];
264264
if (externalId == [NSNull null])
265265
externalId = nil;
266-
[OneSignal setExternalUserId:externalId];
267-
result(nil);
266+
267+
[OneSignal setExternalUserId:externalId withCompletion:^(NSDictionary *results) {
268+
result(results);
269+
}];
268270
}
269271

270272
- (void)removeExternalUserId:(FlutterMethodCall *)call withResult:(FlutterResult)result {
271-
[OneSignal removeExternalUserId];
272-
result(nil);
273+
[OneSignal removeExternalUserId:^(NSDictionary *results) {
274+
result(results);
275+
}];
273276
}
274277

275278
- (void)initNotificationOpenedHandlerParams {

Diff for: ios/onesignal_flutter.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Pod::Spec.new do |s|
1313
s.source_files = 'Classes/**/*'
1414
s.public_header_files = 'Classes/**/*.h'
1515
s.dependency 'Flutter'
16-
s.dependency 'OneSignal', '2.12.6'
16+
s.dependency 'OneSignal', '2.13.1'
1717
s.ios.deployment_target = '8.0'
1818
s.static_framework = true
1919
end

Diff for: lib/onesignal_flutter.dart

+8-4
Original file line numberDiff line numberDiff line change
@@ -275,13 +275,17 @@ class OneSignal {
275275
/// OneSignal allows you to set a custom ID for your users. This makes it so that
276276
/// if your app has its own user ID's, you can use your own custom user ID's with
277277
/// our API instead of having to save their OneSignal user ID's.
278-
Future<void> setExternalUserId(String externalId) async {
279-
return await _channel.invokeMethod("OneSignal#setExternalUserId", {'externalUserId' : externalId});
278+
Future<Map<String, dynamic>> setExternalUserId(String externalId) async {
279+
Map<dynamic, dynamic> results =
280+
await _channel.invokeMethod("OneSignal#setExternalUserId", {'externalUserId' : externalId});;
281+
return results.cast<String, dynamic>();
280282
}
281283

282284
/// Removes the external user ID that was set for the current user.
283-
Future<void> removeExternalUserId() async {
284-
return await _channel.invokeMethod("OneSignal#removeExternalUserId");
285+
Future<Map<String, dynamic>> removeExternalUserId() async {
286+
Map<dynamic, dynamic> results =
287+
await _channel.invokeMethod("OneSignal#removeExternalUserId");
288+
return results.cast<String, dynamic>();
285289
}
286290

287291
/// Adds a single key, value trigger, which will trigger an in app message

0 commit comments

Comments
 (0)