diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java index 0f55031aa..d77ee3103 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java @@ -306,6 +306,12 @@ public void disableDeviceForCurrentUser() { IterableApi.getInstance().disablePush(); } + @ReactMethod + public void registerDeviceToken(String deviceToken) { + IterableLogger.v(TAG, "registerDeviceToken"); + IterableApi.getInstance().registerDeviceToken(deviceToken); + } + @ReactMethod public void handleAppLink(String uri, Promise promise) { IterableLogger.printInfo(); diff --git a/ios/RNIterableAPI/RNIterableAPI.m b/ios/RNIterableAPI/RNIterableAPI.m index 8850c755a..9195789ed 100644 --- a/ios/RNIterableAPI/RNIterableAPI.m +++ b/ios/RNIterableAPI/RNIterableAPI.m @@ -38,6 +38,8 @@ @interface RCT_EXTERN_REMAP_MODULE(RNIterableAPI, ReactIterableAPI, NSObject) RCT_EXTERN_METHOD(disableDeviceForCurrentUser) +RCT_EXTERN_METHOD(registerDeviceToken: (nonnull NSString *) token) + RCT_EXTERN_METHOD(setInAppShowResponse: (nonnull NSNumber *) inAppShowResponse) RCT_EXTERN_METHOD(getLastPushPayload: (RCTPromiseResolveBlock) resolve diff --git a/ios/RNIterableAPI/ReactIterableAPI.swift b/ios/RNIterableAPI/ReactIterableAPI.swift index cb235b4d9..9f1401dcd 100644 --- a/ios/RNIterableAPI/ReactIterableAPI.swift +++ b/ios/RNIterableAPI/ReactIterableAPI.swift @@ -146,6 +146,17 @@ class ReactIterableAPI: RCTEventEmitter { inAppHandlerSemaphore.signal() } + @objc(registerDeviceToken:) + func registerDeviceToken(token: String) { + ITBInfo() + + if let deviceTokenData = token.data(using: .utf8) { + IterableAPI.register(token: deviceTokenData) + } else { + ITBInfo("Failed to convert device token string to data") + } + } + @objc(disableDeviceForCurrentUser) func disableDeviceForCurrentUser() { ITBInfo() diff --git a/ts/Iterable.ts b/ts/Iterable.ts index ff90040c4..9721e3324 100644 --- a/ts/Iterable.ts +++ b/ts/Iterable.ts @@ -297,6 +297,18 @@ class Iterable { RNIterableAPI.disableDeviceForCurrentUser() } + /** + * Registers a device token with Iterable. + * Make sure IterableConfig.pushIntegrationName is set before calling this. + * @param {string} deviceToken Push token obtained from GCM or FCM. + */ + + static registerDeviceToken(deviceToken: string) { + Iterable.logger.log("registerDeviceToken") + + RNIterableAPI.registerDeviceToken(deviceToken) + } + /** * This static method returns the payload of the last push notification with which the user * opened the application (by clicking an action button, etc.).