diff --git a/ios/RCTOneSignal/RCTOneSignalEventEmitter.m b/ios/RCTOneSignal/RCTOneSignalEventEmitter.m index 03b15994..152c91e8 100644 --- a/ios/RCTOneSignal/RCTOneSignalEventEmitter.m +++ b/ios/RCTOneSignal/RCTOneSignalEventEmitter.m @@ -352,7 +352,7 @@ + (void)sendEventWithName:(NSString *)name withBody:(NSDictionary *)body { [OneSignal.User removeSms:smsNumber]; } -RCT_EXPORT_METHOD(addTag:(NSString *)key value:(NSString*)value) { +RCT_EXPORT_METHOD(addTag:(NSString *)key value:(id)value) { [OneSignal.User addTagWithKey:key value:value]; } diff --git a/src/index.ts b/src/index.ts index 3979bd05..aed685c6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -433,11 +433,19 @@ export namespace OneSignal { export function addTag(key: string, value: string) { if (!isNativeModuleLoaded(RNOneSignal)) return; - if (!key || (!value && value !== '')) { - console.error('OneSignal: sendTag: must include a key and a value'); + if (!key || value === undefined || value === null) { + console.error('OneSignal: addTag: must include a key and a value'); return; } + // forces values to be string types + if (typeof value !== 'string') { + console.warn( + 'OneSignal: addTag: tag value must be of type string; attempting to convert', + ); + value = String(value); + } + RNOneSignal.addTag(key, value); } @@ -456,6 +464,18 @@ export namespace OneSignal { return; } + const convertedTags = tags as { [key: string]: any }; + Object.keys(tags).forEach(function (key) { + if (typeof convertedTags[key] !== 'string') { + console.warn( + 'OneSignal: addTags: tag value for key ' + + key + + ' must be of type string; attempting to convert', + ); + convertedTags[key] = String(convertedTags[key]); + } + }); + RNOneSignal.addTags(tags); }