Skip to content

Commit c35be55

Browse files
authored
Merge pull request #932 from OneSignal/fix/include_player_ids_android_ios_array_issue
Fixed an issue with the 'include_player_ids' param in postNotification
2 parents 9bdf4cc + d12dbcc commit c35be55

File tree

4 files changed

+27
-16
lines changed

4 files changed

+27
-16
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,8 +323,7 @@ public void postNotification(String contents, String data, String playerId, Stri
323323
postNotification.put("contents", new JSONObject(contents));
324324

325325
if (playerId != null) {
326-
JSONArray playerIds = new JSONArray();
327-
playerIds.put(playerId);
326+
JSONArray playerIds = new JSONArray(playerId);
328327
postNotification.put("include_player_ids", playerIds);
329328
}
330329

examples/RNOneSignal/App.js

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export default class App extends Component {
3131
let requiresConsent = false;
3232

3333
this.state = {
34+
userId: '',
3435
emailEnabled: false,
3536
animatingEmailButton: false,
3637
initialOpenFromPush: 'Did NOT open from push',
@@ -52,10 +53,10 @@ export default class App extends Component {
5253
OneSignal.setLogLevel(6, 0);
5354

5455
// Examples for using native IAM public methods
55-
// this.oneSignalInAppMessagingExamples();
56+
// this.oneSignalInAppMessagingExamples();
5657

5758
// Examples for using native Outcome Event public methods
58-
// this.oneSignalOutcomeEventsExamples();
59+
// this.oneSignalOutcomeEventsExamples();
5960

6061
}
6162

@@ -185,6 +186,9 @@ export default class App extends Component {
185186

186187
onIds(device) {
187188
console.log('Device info: ', device);
189+
this.setState({
190+
userId: device.userId
191+
});
188192
}
189193

190194
onInAppMessageClicked(actionResult) {
@@ -334,6 +338,21 @@ export default class App extends Component {
334338
color={this.state.buttonColor}
335339
/>
336340
</View>
341+
<View style={styles.buttonContainer}>
342+
<Button
343+
style={styles.button}
344+
onPress={() => {
345+
var contents = {'en': 'You got notification from user'};
346+
var data = {};
347+
// Make sure to send an String Array of playerIds
348+
var playerIds = [this.state.userId];
349+
var other = {};
350+
OneSignal.postNotification(contents, data, playerIds, other);
351+
}}
352+
title="Post Notification"
353+
color={this.state.buttonColor}
354+
/>
355+
</View>
337356
<View style={styles.buttonContainer}>
338357
<Button
339358
style={styles.button}

index.js

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -351,11 +351,7 @@ export default class OneSignal {
351351
static postNotification(contents, data, player_id, otherParameters) {
352352
if (!checkIfInitialized()) return;
353353

354-
if (Platform.OS === 'android') {
355-
RNOneSignal.postNotification(JSON.stringify(contents), JSON.stringify(data), player_id, JSON.stringify(otherParameters));
356-
} else {
357-
RNOneSignal.postNotification(contents, data, player_id, otherParameters);
358-
}
354+
RNOneSignal.postNotification(contents, data, player_id, otherParameters);
359355
}
360356

361357
static clearOneSignalNotifications() {

ios/RCTOneSignal/RCTOneSignalEventEmitter.m

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body {
310310
}
311311

312312
// The post notification endpoint accepts four parameters.
313-
RCT_EXPORT_METHOD(postNotification:(NSDictionary *)contents data:(NSDictionary *)data player_id:(id)player_ids other_parameters:(NSDictionary *)other_parameters) {
313+
RCT_EXPORT_METHOD(postNotification:(NSDictionary *)contents data:(NSDictionary *)data player_id:(NSArray *)player_ids other_parameters:(NSDictionary *)other_parameters) {
314314
NSDictionary * additionalData = data ? @{@"p2p_notification": data} : @{};
315315

316316
NSMutableDictionary * extendedData = [additionalData mutableCopy];
@@ -323,12 +323,9 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body {
323323
notification[@"contents"] = contents;
324324
notification[@"data"] = extendedData;
325325

326-
if (player_ids && [player_ids isKindOfClass:[NSArray class]]) {
327-
//array of player ids
328-
notification[@"include_player_ids"] = (NSArray<NSString *> *)player_ids;
329-
} else if (player_ids && [player_ids isKindOfClass:[NSString class]]) {
330-
//individual player id
331-
notification[@"include_player_ids"] = @[(NSString *)player_ids];
326+
if (player_ids) {
327+
// Array of player ids
328+
notification[@"include_player_ids"] = player_ids;
332329
}
333330

334331
if (other_parameters) {

0 commit comments

Comments
 (0)