From 577922829f046c95f15c88ae8ff4a06437e1a71e Mon Sep 17 00:00:00 2001 From: Ryan Lepinski Date: Fri, 20 Dec 2024 13:14:33 -0800 Subject: [PATCH 1/5] Types updates for FF enhancements --- src/AirshipFeatureFlagManager.ts | 54 +++++++++++++++++++++++++++----- src/NativeRTNAirship.ts | 5 ++- 2 files changed, 51 insertions(+), 8 deletions(-) diff --git a/src/AirshipFeatureFlagManager.ts b/src/AirshipFeatureFlagManager.ts index 36b12d0c..19551ebd 100644 --- a/src/AirshipFeatureFlagManager.ts +++ b/src/AirshipFeatureFlagManager.ts @@ -4,22 +4,30 @@ import { FeatureFlag } from './types'; * Airship feature flag manager. */ export class AirshipFeatureFlagManager { - constructor(private readonly module: any) {} + /** + * Feature flag cache. + */ + public readonly resultCache: AirshipFeatureFlagResultCache; - /** + constructor(private readonly module: any) { + this.resultCache = new AirshipFeatureFlagResultCache(module); + } + + /** * Retrieve a given flag's status and associated data by its name. * @param {string} flagName The flag name - * @return {Promise} A promise resolving to the feature flag - * requested. + * @param {boolean} useResultCache If the response should use result cache or not. + * @return {Promise} A promise resolving to the feature flag requested. * @throws {Error} when failed to fetch */ public flag( - flagName: string + flagName: string, + useResultCache: boolean = true ): Promise { - return this.module.featureFlagManagerFlag(flagName); + return this.module.featureFlagManagerFlag(flagName, useResultCache); } - /** + /** * Tracks a feature flag interaction event. * @param {FeatureFlag} flag The flag * @return {Promise} A promise with an empty result. @@ -29,3 +37,35 @@ export class AirshipFeatureFlagManager { return this.module.featureFlagManagerTrackInteraction(flag); } } + +export class AirshipFeatureFlagResultCache { + constructor(private readonly module: any) {} + + /** + * Retrieve a flag from the cache. + * @param {string} flagName The flag name + * @return {Promise} A promise resolving to the feature flag. + */ + public flag(flagName: string): Promise { + return this.module.featureFlagManagerResultCacheGetFlag(flagName); + } + + /** + * Caches a feature flag. + * @param {FeatureFlag} flag The flag + * @param {FeatureFlag} ttl Cache TTL in milliseconds. + * @return {Promise} A promise with an empty result. + */ + public cache(flag: FeatureFlag, ttl: number): Promise { + return this.module.featureFlagManagerResultCacheSetFlag(flag, ttl); + } + + /** + * Clears the cache for a given flag. + * @param {FeatureFlag} flagName The flag name + * @return {Promise} A promise with an empty result. + */ + public removeCachedFlag(flagName: string): Promise { + return this.module.featureFlagManagerResultCacheRemoveFlag(flagName); + } +} diff --git a/src/NativeRTNAirship.ts b/src/NativeRTNAirship.ts index fbc446da..c50d4058 100644 --- a/src/NativeRTNAirship.ts +++ b/src/NativeRTNAirship.ts @@ -113,8 +113,11 @@ export interface Spec extends TurboModule { localeClearLocaleOverride(): Promise; // Feature Flag Manager - featureFlagManagerFlag(flagName: string):Promise; + featureFlagManagerFlag(flagName: string, userResultCache: boolean):Promise; featureFlagManagerTrackInteraction(flag: Object): Promise; + featureFlagManagerResultGetFlag(flagName: string): Promise; + featureFlagManagerResultCacheSetFlag(flag: Object, ttl: number): Promise; + featureFlagManagerResultCacheRemoveFlag(flagName: string): Promise; // Live Activity liveActivityListAll(): Promise; From 91aa20eda654129f2ce7e0e42ead9c410c5315be Mon Sep 17 00:00:00 2001 From: Ryan Lepinski Date: Fri, 20 Dec 2024 13:14:43 -0800 Subject: [PATCH 2/5] iOS update --- example/ios/Podfile.lock | 44 ++++++++++++++++++------------------ ios/AirshipReactNative.swift | 24 ++++++++++++++++++-- ios/RTNAirship.mm | 38 +++++++++++++++++++++++++++++++ react-native-airship.podspec | 2 +- 4 files changed, 83 insertions(+), 25 deletions(-) diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index e1316c84..ac6233c9 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,25 +1,25 @@ PODS: - - Airship (18.13.0): - - Airship/Automation (= 18.13.0) - - Airship/Basement (= 18.13.0) - - Airship/Core (= 18.13.0) - - Airship/FeatureFlags (= 18.13.0) - - Airship/MessageCenter (= 18.13.0) - - Airship/PreferenceCenter (= 18.13.0) - - Airship/Automation (18.13.0): + - Airship (18.14.0): + - Airship/Automation (= 18.14.0) + - Airship/Basement (= 18.14.0) + - Airship/Core (= 18.14.0) + - Airship/FeatureFlags (= 18.14.0) + - Airship/MessageCenter (= 18.14.0) + - Airship/PreferenceCenter (= 18.14.0) + - Airship/Automation (18.14.0): - Airship/Core - - Airship/Basement (18.13.0) - - Airship/Core (18.13.0): + - Airship/Basement (18.14.0) + - Airship/Core (18.14.0): - Airship/Basement - - Airship/FeatureFlags (18.13.0): + - Airship/FeatureFlags (18.14.0): - Airship/Core - - Airship/MessageCenter (18.13.0): + - Airship/MessageCenter (18.14.0): - Airship/Core - - Airship/PreferenceCenter (18.13.0): + - Airship/PreferenceCenter (18.14.0): - Airship/Core - - AirshipFrameworkProxy (11.1.0): - - Airship (= 18.13.0) - - AirshipServiceExtension (18.13.0) + - AirshipFrameworkProxy (11.2.0): + - Airship (= 18.14.0) + - AirshipServiceExtension (18.14.0) - boost (1.83.0) - DoubleConversion (1.1.6) - FBLazyVector (0.73.4) @@ -908,7 +908,7 @@ PODS: - glog - React-debug - react-native-airship (20.1.0): - - AirshipFrameworkProxy (= 11.1.0) + - AirshipFrameworkProxy (= 11.2.0) - glog - RCT-Folly (= 2022.05.16.00) - React-Core @@ -1279,9 +1279,9 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - Airship: bfe90d95c2b2bd0ea9ed5248a1337f124fe8abfe - AirshipFrameworkProxy: 15e4589484430c292aadc7e9f9878d83b7c0fd25 - AirshipServiceExtension: aefb21acb70a7476279793d6e38be2bd612817d0 + Airship: 9667bffd8c715811e51c9d57e0fb5161bbb45533 + AirshipFrameworkProxy: 9264afa03d1673cd4983b233c944cf92d8b50b9b + AirshipServiceExtension: 1d6c2443724f6ea541eecb76ddbaab307809d561 boost: d3f49c53809116a5d38da093a8aa78bf551aed09 DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 FBLazyVector: 84f6edbe225f38aebd9deaf1540a4160b1f087d7 @@ -1311,7 +1311,7 @@ SPEC CHECKSUMS: React-jsinspector: 9ac353eccf6ab54d1e0a33862ba91221d1e88460 React-logger: 0a57b68dd2aec7ff738195f081f0520724b35dab React-Mapbuffer: 63913773ed7f96b814a2521e13e6d010282096ad - react-native-airship: adf4c86f2971ffe1f5f30b7c150d73e60725e009 + react-native-airship: 921d8e86e904bb990f9b3924040b443043b6fab1 react-native-safe-area-context: b97eb6f9e3b7f437806c2ce5983f479f8eb5de4b React-nativeconfig: d7af5bae6da70fa15ce44f045621cf99ed24087c React-NativeModulesApple: 0123905d5699853ac68519607555a9a4f5c7b3ac @@ -1342,4 +1342,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: 71939b1c0f451ff75f31df2f5e51d1c63f04150d -COCOAPODS: 1.16.2 +COCOAPODS: 1.15.2 diff --git a/ios/AirshipReactNative.swift b/ios/AirshipReactNative.swift index 7addf679..1eee3169 100644 --- a/ios/AirshipReactNative.swift +++ b/ios/AirshipReactNative.swift @@ -599,8 +599,8 @@ public extension AirshipReactNative { @objc public extension AirshipReactNative { @objc - func featureFlagManagerFlag(flagName: String) async throws -> Any { - let result = try await AirshipProxy.shared.featureFlagManager.flag(name: flagName) + func featureFlagManagerFlag(flagName: String, useResultCache: Bool) async throws -> Any { + let result = try await AirshipProxy.shared.featureFlagManager.flag(name: flagName, useResultCache: useResultCache) return try AirshipJSON.wrap(result).unWrap() as Any } @@ -609,6 +609,26 @@ public extension AirshipReactNative { let flag: FeatureFlagProxy = try AirshipJSON.wrap(flag).decode() try AirshipProxy.shared.featureFlagManager.trackInteraction(flag: flag) } + + @objc + func featureFlagManagerResultCacheGetFlag(name: String) async throws -> Any { + let result = try await AirshipProxy.shared.featureFlagManager.resultCache.flag(name: name) + return try AirshipJSON.wrap(result).unWrap() as Any + } + + @objc + func featureFlagManagerResultCacheSetFlag(flag: Any, ttl: NSNumber) async throws { + let flag: FeatureFlagProxy = try AirshipJSON.wrap(flag).decode() + try await AirshipProxy.shared.featureFlagManager.resultCache.cache( + flag: flag, + ttl: TimeInterval(ttl.uint64Value/1000) + ) + } + + @objc + func featureFlagManagerResultCacheRemoveFlag(name: String) async throws { + try await AirshipProxy.shared.featureFlagManager.resultCache.removeCachedFlag(name: name) + } } diff --git a/ios/RTNAirship.mm b/ios/RTNAirship.mm index d0668c91..87c8785e 100644 --- a/ios/RTNAirship.mm +++ b/ios/RTNAirship.mm @@ -783,15 +783,53 @@ + (BOOL)requiresMainQueueSetup { RCT_REMAP_METHOD(featureFlagManagerFlag, featureFlagManagerFlag:(NSString *)flagName + useResultCache:(BOOL)useResultCache featureFlagManagerFlag:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { [AirshipReactNative.shared featureFlagManagerFlagWithFlagName:flagName + useResultCache:useResultCache completionHandler:^(id result, NSError * _Nullable error) { [self handleResult:result error:error resolve:resolve reject:reject]; }]; } +RCT_REMAP_METHOD(featureFlagManagerResultCacheGetFlag, + featureFlagManagerResultCacheGetFlag:(NSString *)flagName + featureFlagManagerResultCacheGetFlag:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject) { + + [AirshipReactNative.shared featureFlagManagerResultCacheGetFlagWithName:flagName + completionHandler:^(id result, NSError * _Nullable error) { + [self handleResult:result error:error resolve:resolve reject:reject]; + }]; +} + +RCT_REMAP_METHOD(featureFlagManagerResultCacheSetFlag, + featureFlagManagerResultCacheSetFlag:(NSDictionary *)flag + ttl:(nonnull NSNumber *)ttl + featureFlagManagerResultCacheGetFlag:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject) { + + [AirshipReactNative.shared featureFlagManagerResultCacheSetFlagWithFlag:flag + ttl:ttl + completionHandler:^(NSError * _Nullable error) { + [self handleResult:nil error:error resolve:resolve reject:reject]; + }]; +} + +RCT_REMAP_METHOD(featureFlagManagerResultCacheRemoveFlag, + featureFlagManagerResultCacheRemoveFlag:(NSString *)flagName + featureFlagManagerResultCacheRemoveFlag:(RCTPromiseResolveBlock)resolve + reject:(RCTPromiseRejectBlock)reject) { + + [AirshipReactNative.shared featureFlagManagerResultCacheRemoveFlagWithName:flagName + completionHandler:^(NSError * _Nullable error) { + [self handleResult:nil error:error resolve:resolve reject:reject]; + }]; +} + + RCT_REMAP_METHOD(liveActivityListAll, liveActivityListAll:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject) { diff --git a/react-native-airship.podspec b/react-native-airship.podspec index ec93ef71..c7a73c20 100644 --- a/react-native-airship.podspec +++ b/react-native-airship.podspec @@ -22,6 +22,6 @@ Pod::Spec.new do |s| s.dependency "React-Core" end - s.dependency "AirshipFrameworkProxy", "11.1.0" + s.dependency "AirshipFrameworkProxy", "11.2.0" end From 477367e0d6912554ba8fffd363476232217e6eb4 Mon Sep 17 00:00:00 2001 From: Ryan Lepinski Date: Fri, 20 Dec 2024 13:39:30 -0800 Subject: [PATCH 3/5] Android update --- android/gradle.properties | 2 +- .../urbanairship/reactnative/AirshipModule.kt | 32 ++++++++++++++++--- .../urbanairship/reactnative/AirshipSpec.kt | 16 ++++++++-- src/NativeRTNAirship.ts | 2 +- 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/android/gradle.properties b/android/gradle.properties index 2285ac49..be041053 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -3,4 +3,4 @@ Airship_minSdkVersion=21 Airship_targetSdkVersion=34 Airship_compileSdkVersion=34 Airship_ndkversion=26.1.10909125 -Airship_airshipProxyVersion=11.1.0 \ No newline at end of file +Airship_airshipProxyVersion=11.2.0 \ No newline at end of file diff --git a/android/src/main/java/com/urbanairship/reactnative/AirshipModule.kt b/android/src/main/java/com/urbanairship/reactnative/AirshipModule.kt index bf29d5df..6254aa36 100644 --- a/android/src/main/java/com/urbanairship/reactnative/AirshipModule.kt +++ b/android/src/main/java/com/urbanairship/reactnative/AirshipModule.kt @@ -19,6 +19,7 @@ import com.urbanairship.android.framework.proxy.proxies.SuspendingPredicate import com.urbanairship.json.JsonMap import com.urbanairship.json.JsonSerializable import com.urbanairship.json.JsonValue +import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.* import kotlinx.coroutines.flow.filter import java.util.UUID @@ -698,21 +699,42 @@ class AirshipModule internal constructor(val context: ReactApplicationContext) : } @ReactMethod - override fun featureFlagManagerFlag(flagName: String?, promise: Promise) { + override fun featureFlagManagerFlag(flagName: String, useResultCache: Boolean, promise: Promise) { promise.resolveSuspending(scope) { - requireNotNull(flagName) - proxy.featureFlagManager.flag(flagName) + proxy.featureFlagManager.flag(flagName, useResultCache) } } @ReactMethod - override fun featureFlagManagerTrackInteraction(flag: ReadableMap?, promise: Promise) { + override fun featureFlagManagerTrackInteraction(flag: ReadableMap, promise: Promise) { promise.resolveResult { - val parsedFlag = FeatureFlagProxy(Utils.convertMap(requireNotNull(flag)).toJsonValue()) + val parsedFlag = FeatureFlagProxy(Utils.convertMap(flag).toJsonValue()) proxy.featureFlagManager.trackInteraction(parsedFlag) } } + @ReactMethod + override fun featureFlagManagerResultCacheGetFlag(flagName: String, promise: Promise) { + promise.resolveSuspending(scope) { + proxy.featureFlagManager.resultCache.flag(flagName) + } + } + + @ReactMethod + override fun featureFlagManagerResultCacheSetFlag(flag: ReadableMap, ttl: Double, promise: Promise) { + promise.resolveSuspending(scope) { + val parsedFlag = FeatureFlagProxy(Utils.convertMap(flag).toJsonValue()) + proxy.featureFlagManager.resultCache.cache(parsedFlag, ttl.milliseconds) + } + } + + @ReactMethod + override fun featureFlagManagerResultCacheRemoveFlag(flagName: String, promise: Promise) { + promise.resolveSuspending(scope) { + proxy.featureFlagManager.resultCache.removeCachedFlag(flagName) + } + } + @ReactMethod override fun liveActivityListAll(promise: Promise) { promise.resolveResult { diff --git a/android/src/oldarch/java/com/urbanairship/reactnative/AirshipSpec.kt b/android/src/oldarch/java/com/urbanairship/reactnative/AirshipSpec.kt index 1bb77526..23b68a59 100644 --- a/android/src/oldarch/java/com/urbanairship/reactnative/AirshipSpec.kt +++ b/android/src/oldarch/java/com/urbanairship/reactnative/AirshipSpec.kt @@ -407,11 +407,23 @@ abstract class AirshipSpec internal constructor(context: ReactApplicationContext @ReactMethod @com.facebook.proguard.annotations.DoNotStrip - abstract fun featureFlagManagerFlag(flagName: String?, promise: Promise) + abstract fun featureFlagManagerFlag(flagName: String, useResultCache: Boolean, promise: Promise) @ReactMethod @com.facebook.proguard.annotations.DoNotStrip - abstract fun featureFlagManagerTrackInteraction(flag: ReadableMap?, promise: Promise) + abstract fun featureFlagManagerTrackInteraction(flag: ReadableMap, promise: Promise) + + @ReactMethod + @com.facebook.proguard.annotations.DoNotStrip + abstract fun featureFlagManagerResultCacheGetFlag(flagName: String, promise: Promise) + + @ReactMethod + @com.facebook.proguard.annotations.DoNotStrip + abstract fun featureFlagManagerResultCacheSetFlag(flag: ReadableMap, ttl: Double, promise: Promise) + + @ReactMethod + @com.facebook.proguard.annotations.DoNotStrip + abstract fun featureFlagManagerResultCacheRemoveFlag(flagName: String, promise: Promise) @ReactMethod @com.facebook.proguard.annotations.DoNotStrip diff --git a/src/NativeRTNAirship.ts b/src/NativeRTNAirship.ts index c50d4058..c630dbc5 100644 --- a/src/NativeRTNAirship.ts +++ b/src/NativeRTNAirship.ts @@ -115,7 +115,7 @@ export interface Spec extends TurboModule { // Feature Flag Manager featureFlagManagerFlag(flagName: string, userResultCache: boolean):Promise; featureFlagManagerTrackInteraction(flag: Object): Promise; - featureFlagManagerResultGetFlag(flagName: string): Promise; + featureFlagManagerResultCacheGetFlag(flagName: string): Promise; featureFlagManagerResultCacheSetFlag(flag: Object, ttl: number): Promise; featureFlagManagerResultCacheRemoveFlag(flagName: string): Promise; From 49ef1a6a6152bea563a661c5453cd31fa37a5b6e Mon Sep 17 00:00:00 2001 From: Ryan Lepinski Date: Fri, 20 Dec 2024 14:04:41 -0800 Subject: [PATCH 4/5] Bump version --- CHANGELOG.md | 8 ++++++++ ios/AirshipReactNative.swift | 2 +- package.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2b39860..5221db71 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # React Native Module Changelog +## Version 20.2.0 - December 20, 2024 +Minor release that updates to the latest Airship SDKs and adds new Feature Flag APIs. + +### Changes +- Updated Android SDK to [18.6.0](https://github.com/urbanairship/android-library/releases/tag/18.6.0). +- Updated iOS SDK to [18.14.1](https://github.com/urbanairship/ios-library/releases/tag/18.14.1). +- Adds `Airship.featureFlagManager.resultCache` to cache a result that can be used when `Airship.featureFlagManager.flag` fails to resolve a result. + ## Version 20.1.0 - December 5, 2024 Minor release that updates the Android Airship SDK to 18.5.0 and iOS Airship SDK to 18.13.0 diff --git a/ios/AirshipReactNative.swift b/ios/AirshipReactNative.swift index 1eee3169..b33b39bb 100644 --- a/ios/AirshipReactNative.swift +++ b/ios/AirshipReactNative.swift @@ -39,7 +39,7 @@ public class AirshipReactNative: NSObject { AirshipProxy.shared } - public static let version: String = "20.1.0" + public static let version: String = "20.2.0" private let eventNotifier = EventNotifier() diff --git a/package.json b/package.json index ee7c7d5b..fa0d28b5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ua/react-native-airship", - "version": "20.1.0", + "version": "20.2.0", "description": "Airship plugin for React Native apps.", "main": "lib/commonjs/index", "module": "lib/module/index", From e6a6f2241c9a9378592de9c5a1b2091f4af202ce Mon Sep 17 00:00:00 2001 From: Ryan Lepinski Date: Fri, 20 Dec 2024 14:29:44 -0800 Subject: [PATCH 5/5] Update proxy --- android/gradle.properties | 2 +- example/ios/Podfile.lock | 40 ++++++++++++++++++------------------ react-native-airship.podspec | 2 +- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/android/gradle.properties b/android/gradle.properties index be041053..28664f08 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -3,4 +3,4 @@ Airship_minSdkVersion=21 Airship_targetSdkVersion=34 Airship_compileSdkVersion=34 Airship_ndkversion=26.1.10909125 -Airship_airshipProxyVersion=11.2.0 \ No newline at end of file +Airship_airshipProxyVersion=11.2.1 \ No newline at end of file diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index ac6233c9..c160fb40 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,24 +1,24 @@ PODS: - - Airship (18.14.0): - - Airship/Automation (= 18.14.0) - - Airship/Basement (= 18.14.0) - - Airship/Core (= 18.14.0) - - Airship/FeatureFlags (= 18.14.0) - - Airship/MessageCenter (= 18.14.0) - - Airship/PreferenceCenter (= 18.14.0) - - Airship/Automation (18.14.0): + - Airship (18.14.1): + - Airship/Automation (= 18.14.1) + - Airship/Basement (= 18.14.1) + - Airship/Core (= 18.14.1) + - Airship/FeatureFlags (= 18.14.1) + - Airship/MessageCenter (= 18.14.1) + - Airship/PreferenceCenter (= 18.14.1) + - Airship/Automation (18.14.1): - Airship/Core - - Airship/Basement (18.14.0) - - Airship/Core (18.14.0): + - Airship/Basement (18.14.1) + - Airship/Core (18.14.1): - Airship/Basement - - Airship/FeatureFlags (18.14.0): + - Airship/FeatureFlags (18.14.1): - Airship/Core - - Airship/MessageCenter (18.14.0): + - Airship/MessageCenter (18.14.1): - Airship/Core - - Airship/PreferenceCenter (18.14.0): + - Airship/PreferenceCenter (18.14.1): - Airship/Core - - AirshipFrameworkProxy (11.2.0): - - Airship (= 18.14.0) + - AirshipFrameworkProxy (11.2.1): + - Airship (= 18.14.1) - AirshipServiceExtension (18.14.0) - boost (1.83.0) - DoubleConversion (1.1.6) @@ -907,8 +907,8 @@ PODS: - React-Mapbuffer (0.73.4): - glog - React-debug - - react-native-airship (20.1.0): - - AirshipFrameworkProxy (= 11.2.0) + - react-native-airship (20.2.0): + - AirshipFrameworkProxy (= 11.2.1) - glog - RCT-Folly (= 2022.05.16.00) - React-Core @@ -1279,8 +1279,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - Airship: 9667bffd8c715811e51c9d57e0fb5161bbb45533 - AirshipFrameworkProxy: 9264afa03d1673cd4983b233c944cf92d8b50b9b + Airship: f293470bde4a4cbd23ac73dbda986629d9ad9fdb + AirshipFrameworkProxy: 9332b3f7871f054375653e72428fbcf4a3a9f849 AirshipServiceExtension: 1d6c2443724f6ea541eecb76ddbaab307809d561 boost: d3f49c53809116a5d38da093a8aa78bf551aed09 DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 @@ -1311,7 +1311,7 @@ SPEC CHECKSUMS: React-jsinspector: 9ac353eccf6ab54d1e0a33862ba91221d1e88460 React-logger: 0a57b68dd2aec7ff738195f081f0520724b35dab React-Mapbuffer: 63913773ed7f96b814a2521e13e6d010282096ad - react-native-airship: 921d8e86e904bb990f9b3924040b443043b6fab1 + react-native-airship: a4111a9d2ecb4b12bc021698917be8eeded34793 react-native-safe-area-context: b97eb6f9e3b7f437806c2ce5983f479f8eb5de4b React-nativeconfig: d7af5bae6da70fa15ce44f045621cf99ed24087c React-NativeModulesApple: 0123905d5699853ac68519607555a9a4f5c7b3ac diff --git a/react-native-airship.podspec b/react-native-airship.podspec index c7a73c20..d941255c 100644 --- a/react-native-airship.podspec +++ b/react-native-airship.podspec @@ -22,6 +22,6 @@ Pod::Spec.new do |s| s.dependency "React-Core" end - s.dependency "AirshipFrameworkProxy", "11.2.0" + s.dependency "AirshipFrameworkProxy", "11.2.1" end