diff --git a/example/App.js b/example/App.js index cf34c451c..dac1a616f 100644 --- a/example/App.js +++ b/example/App.js @@ -31,13 +31,14 @@ import AdjustRemoteCommand from 'tealium-react-adjust'; import { AdjustConfig, AdjustEnvironemnt } from 'tealium-react-adjust/common'; import AppsFlyerRemoteCommand from 'tealium-react-appsflyer'; import { checkAndRequestPermissions } from "./Utils" -import { AuthState } from 'tealium-react-native-adobe-visitor/common'; +// import { AuthState } from 'tealium-react-native-adobe-visitor/common'; +import TealiumCrashReporter from 'tealium-react-native-crash-reporter'; export default class App extends Component<{}> { componentDidMount() { // let adobeVisitorConfig: TealiumAdobeVisitorConfig = { - // adobeVisitorOrgId: "" + // adobeVisitorOrgId: "YOUR-ADOBE-ORG-ID" // } let locationConfig: TealiumLocationConfig = { @@ -52,12 +53,13 @@ export default class App extends Component<{}> { allowSuppressLogLevel: false } - // TealiumAdobeVisitor.configure(adobeVisitorConfig) + // TealiumAdobeVisitor.configure(adobeVisitorConfig); TealiumLocation.configure(locationConfig); FirebaseRemoteCommand.initialize(); BrazeRemoteCommand.initialize(); AdjustRemoteCommand.initialize(adjustConfig); - AppsFlyerRemoteCommand.initialize() + AppsFlyerRemoteCommand.initialize(); + TealiumCrashReporter.initialize(); let config: TealiumConfig = { account: 'tealiummobile', profile: 'demo', @@ -241,6 +243,10 @@ export default class App extends Component<{}> { }); } + forceCrash() { + console.log(test.should.crash); + } + terminate() { Tealium.terminateInstance(); } @@ -291,6 +297,20 @@ export default class App extends Component<{}> { }); } + getUrlParameters() { + TealiumAdobeVisitor.getUrlParameters(value => { + if (value === null || value === undefined) { + Alert.alert("Null Visitor","No data available for Adobe Visitor", [{ text: "OK", style: "cancel" }]); + return; + } else { + for (var key of Object.keys(value)) { + Alert.alert("Retrieved URL Parameters: ", key + "=" + value[key], [{ text: "OK", style: "cancel" }]); + break; + } + } + }); + } + resetAdobeVisitor() { TealiumAdobeVisitor.resetVisitor(); } @@ -353,12 +373,14 @@ export default class App extends Component<{}> { { section: Sections.Visitor, text: "RESET VISITOR ID", onPress: this.resetVisitorId }, { section: Sections.Visitor, text: "CLEAR STORED VISITOR IDS", onPress: this.clearStoredVisitorIds }, { section: Sections.Misc, text: "GET SESSION ID", onPress: this.getSessionId }, + { section: Sections.Misc, text: "FORCE TEST CRASH", onPress: this.forceCrash }, { section: Sections.Misc, text: "DISABLE TEALIUM", onPress: this.terminate }, { section: Sections.Location, text: "GET LOCATION", onPress: this.getLastLocation }, { section: Sections.Location, text: "START TRACKING LOCATION", onPress: this.startLocationTracking }, { section: Sections.Location, text: "STOP TRACKING LOCATION", onPress: this.stopLocationTracking }, { section: Sections.AdobeVisitorService, text: "GET CURRENT ADOBE VISITOR", onPress: this.getCurrentAdobeVisitor }, { section: Sections.AdobeVisitorService, text: "DECORATE URL", onPress: this.decorateUrl }, + { section: Sections.AdobeVisitorService, text: "GET URL PARAMS", onPress: this.getUrlParameters }, { section: Sections.AdobeVisitorService, text: "RESET ADOBE VISITOR", onPress: this.resetAdobeVisitor }, ] } diff --git a/example/android/build.gradle b/example/android/build.gradle index 85c93f84e..163b58af0 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -8,7 +8,7 @@ buildscript { minSdkVersion = 21 compileSdkVersion = 33 targetSdkVersion = 33 - kotlin_version = '1.6.0' + kotlin_version = '1.8.22' // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. ndkVersion = "23.1.7779620" } diff --git a/example/ios/Podfile b/example/ios/Podfile index 1b812b72f..11b0c8017 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -48,7 +48,18 @@ target 'example' do end post_install do |installer| - react_native_post_install(installer) - __apply_Xcode_12_5_M1_post_install_workaround(installer) + react_native_post_install(installer) + __apply_Xcode_12_5_M1_post_install_workaround(installer) + + # Backport of: https://github.com/AlexanderEggers/react-native/blob/18ac6a3743749c0b8273c64dac982c30b74928e3/packages/react-native/scripts/cocoapods/utils.rb#L124 + installer.target_installation_results.pod_target_installation_results + .each do |pod_name, target_installation_result| + target_installation_result.native_target.build_configurations.each do |config| + # unary_function and binary_function are no longer provided in C++17 and newer standard modes as part of Xcode 15. They can be re-enabled with setting _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION + # Ref: https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes#Deprecations + config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= '$(inherited) ' + config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] << '"_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION" ' + end + end end end diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 6c4cf336b..fcce3c2e6 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,12 +1,11 @@ PODS: - - Adjust (4.33.4): - - Adjust/Core (= 4.33.4) - - Adjust/Core (4.33.4) - - AppsFlyerFramework (6.11.2): - - AppsFlyerFramework/Main (= 6.11.2) - - AppsFlyerFramework/Main (6.11.2) + - Adjust (4.33.6): + - Adjust/Core (= 4.33.6) + - Adjust/Core (4.33.6) + - AppsFlyerFramework (6.12.1): + - AppsFlyerFramework/Main (= 6.12.1) + - AppsFlyerFramework/Main (6.12.1) - boost (1.76.0) - - BrazeKit (5.14.0) - DoubleConversion (1.1.6) - FBLazyVector (0.71.10) - FBReactNativeSpec (0.71.10): @@ -16,15 +15,15 @@ PODS: - React-Core (= 0.71.10) - React-jsi (= 0.71.10) - ReactCommon/turbomodule/core (= 0.71.10) - - Firebase (10.11.0): - - Firebase/Core (= 10.11.0) - - Firebase/Core (10.11.0): + - Firebase (10.12.0): + - Firebase/Core (= 10.12.0) + - Firebase/Core (10.12.0): - Firebase/CoreOnly - - FirebaseAnalytics (~> 10.11.0) - - Firebase/CoreOnly (10.11.0): - - FirebaseCore (= 10.11.0) - - FirebaseAnalytics (10.11.0): - - FirebaseAnalytics/AdIdSupport (= 10.11.0) + - FirebaseAnalytics (~> 10.12.0) + - Firebase/CoreOnly (10.12.0): + - FirebaseCore (= 10.12.0) + - FirebaseAnalytics (10.12.0): + - FirebaseAnalytics/AdIdSupport (= 10.12.0) - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) @@ -32,66 +31,66 @@ PODS: - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseAnalytics/AdIdSupport (10.11.0): + - FirebaseAnalytics/AdIdSupport (10.12.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - - GoogleAppMeasurement (= 10.11.0) + - GoogleAppMeasurement (= 10.12.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - FirebaseCore (10.11.0): + - FirebaseCore (10.12.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/Logger (~> 7.8) - - FirebaseCoreInternal (10.11.0): + - FirebaseCoreInternal (10.12.0): - "GoogleUtilities/NSData+zlib (~> 7.8)" - - FirebaseInstallations (10.11.0): + - FirebaseInstallations (10.12.0): - FirebaseCore (~> 10.0) - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - fmt (6.2.1) - glog (0.3.5) - - GoogleAppMeasurement (10.11.0): - - GoogleAppMeasurement/AdIdSupport (= 10.11.0) + - GoogleAppMeasurement (10.12.0): + - GoogleAppMeasurement/AdIdSupport (= 10.12.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/AdIdSupport (10.11.0): - - GoogleAppMeasurement/WithoutAdIdSupport (= 10.11.0) + - GoogleAppMeasurement/AdIdSupport (10.12.0): + - GoogleAppMeasurement/WithoutAdIdSupport (= 10.12.0) - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleAppMeasurement/WithoutAdIdSupport (10.11.0): + - GoogleAppMeasurement/WithoutAdIdSupport (10.12.0): - GoogleUtilities/AppDelegateSwizzler (~> 7.11) - GoogleUtilities/MethodSwizzler (~> 7.11) - GoogleUtilities/Network (~> 7.11) - "GoogleUtilities/NSData+zlib (~> 7.11)" - nanopb (< 2.30910.0, >= 2.30908.0) - - GoogleUtilities/AppDelegateSwizzler (7.11.1): + - GoogleUtilities/AppDelegateSwizzler (7.11.4): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (7.11.1): + - GoogleUtilities/Environment (7.11.4): - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.11.1): + - GoogleUtilities/Logger (7.11.4): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (7.11.1): + - GoogleUtilities/MethodSwizzler (7.11.4): - GoogleUtilities/Logger - - GoogleUtilities/Network (7.11.1): + - GoogleUtilities/Network (7.11.4): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.11.1)" - - GoogleUtilities/Reachability (7.11.1): + - "GoogleUtilities/NSData+zlib (7.11.4)" + - GoogleUtilities/Reachability (7.11.4): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (7.11.1): + - GoogleUtilities/UserDefaults (7.11.4): - GoogleUtilities/Logger - hermes-engine (0.71.10): - hermes-engine/Pre-built (= 0.71.10) @@ -102,12 +101,13 @@ PODS: - nanopb/encode (= 2.30909.0) - nanopb/decode (2.30909.0) - nanopb/encode (2.30909.0) - - Permission-LocationAccuracy (3.8.0): + - Permission-LocationAccuracy (3.8.4): - RNPermissions - - Permission-LocationAlways (3.8.0): + - Permission-LocationAlways (3.8.4): - RNPermissions - - Permission-LocationWhenInUse (3.8.0): + - Permission-LocationWhenInUse (3.8.4): - RNPermissions + - PLCrashReporter (1.11.1) - PromisesObjC (2.2.0) - RCT-Folly (2021.07.22.00): - boost @@ -444,7 +444,7 @@ PODS: - React-jsi (= 0.71.10) - React-logger (= 0.71.10) - React-perflogger (= 0.71.10) - - RNPermissions (3.8.0): + - RNPermissions (3.8.4): - React-Core - tealium-react-adjust (1.0.3): - React-Core @@ -452,18 +452,18 @@ PODS: - tealium-react-native-swift (~> 2.2) - tealium-swift/Core (~> 2.6) - TealiumAdjust (~> 1.1) + - tealium-react-adobe-visitor (1.0.2): + - React-Core + - tealium-react-native (~> 2.2) + - tealium-react-native-swift (~> 2.2) + - tealium-swift/Core (~> 2.6) + - TealiumAdobeVisitorAPI (~> 1.1) - tealium-react-appsflyer (1.0.1): - React - tealium-react-native (~> 2.2) - tealium-react-native-swift (~> 2.2) - tealium-swift/Core (~> 2.9) - TealiumAppsFlyer (~> 2.1) - - tealium-react-braze (1.0.3): - - React - - tealium-react-native (~> 2.2) - - tealium-react-native-swift (~> 2.2) - - tealium-swift/Core (~> 2.6) - - TealiumBraze (~> 3.0) - tealium-react-firebase (1.0.4): - React-Core - tealium-react-native (~> 2.2) @@ -478,6 +478,12 @@ PODS: - tealium-swift/RemoteCommands (~> 2.8) - tealium-swift/TagManagement (~> 2.8) - tealium-swift/VisitorService (~> 2.8) + - tealium-react-native-crash-reporter (1.0.0): + - React-Core + - tealium-react-native (~> 2.2) + - tealium-react-native-swift (~> 2.2) + - tealium-swift/Core (~> 2.6) + - TealiumCrashModule (~> 2.3) - tealium-react-native-location (1.0.2): - React-Core - tealium-react-native (~> 2.2) @@ -510,14 +516,17 @@ PODS: - Adjust (~> 4.29) - tealium-swift/Core (~> 2.6) - tealium-swift/RemoteCommands (~> 2.6) + - TealiumAdobeVisitorAPI (1.1.1): + - tealium-swift/Core (~> 2.8) - TealiumAppsFlyer (2.1.2): - AppsFlyerFramework (~> 6.9) - tealium-swift/Core (~> 2.9) - tealium-swift/RemoteCommands (~> 2.9) - - TealiumBraze (3.0.0): - - BrazeKit (~> 5.8) - - tealium-swift/Core (~> 2.8) - - tealium-swift/RemoteCommands (~> 2.8) + - TealiumCrashModule (2.3.0): + - TealiumCrashModule/Crash (= 2.3.0) + - TealiumCrashModule/Crash (2.3.0): + - PLCrashReporter + - tealium-swift/Core - TealiumFirebase (3.0.0): - Firebase (~> 10.7) - FirebaseAnalytics (~> 10.7) @@ -566,10 +575,11 @@ DEPENDENCIES: - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - RNPermissions (from `../node_modules/react-native-permissions`) - tealium-react-adjust (from `../node_modules/tealium-react-adjust`) + - tealium-react-adobe-visitor (from `../node_modules/tealium-react-native-adobe-visitor`) - tealium-react-appsflyer (from `../node_modules/tealium-react-appsflyer`) - - tealium-react-braze (from `../node_modules/tealium-react-braze`) - tealium-react-firebase (from `../node_modules/tealium-react-firebase`) - tealium-react-native (from `../node_modules/tealium-react-native`) + - tealium-react-native-crash-reporter (from `../node_modules/tealium-react-native-crash-reporter`) - tealium-react-native-location (from `../node_modules/tealium-react-native-location`) - tealium-react-native-swift (from `../node_modules/tealium-react-native/tealium-react-native-swift.podspec`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -578,7 +588,6 @@ SPEC REPOS: trunk: - Adjust - AppsFlyerFramework - - BrazeKit - Firebase - FirebaseAnalytics - FirebaseCore @@ -589,11 +598,13 @@ SPEC REPOS: - GoogleUtilities - libevent - nanopb + - PLCrashReporter - PromisesObjC - tealium-swift - TealiumAdjust + - TealiumAdobeVisitorAPI - TealiumAppsFlyer - - TealiumBraze + - TealiumCrashModule - TealiumFirebase EXTERNAL SOURCES: @@ -673,14 +684,16 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-permissions" tealium-react-adjust: :path: "../node_modules/tealium-react-adjust" + tealium-react-adobe-visitor: + :path: "../node_modules/tealium-react-native-adobe-visitor" tealium-react-appsflyer: :path: "../node_modules/tealium-react-appsflyer" - tealium-react-braze: - :path: "../node_modules/tealium-react-braze" tealium-react-firebase: :path: "../node_modules/tealium-react-firebase" tealium-react-native: :path: "../node_modules/tealium-react-native" + tealium-react-native-crash-reporter: + :path: "../node_modules/tealium-react-native-crash-reporter" tealium-react-native-location: :path: "../node_modules/tealium-react-native-location" tealium-react-native-swift: @@ -689,28 +702,28 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - Adjust: 4690e07ea401ee56d4d3f4f5bdad86c94f51903f - AppsFlyerFramework: e22e8f0e746b4f568d9bb0b078180c6ad95e2609 + Adjust: c3b6c3734928a617fefce81dc223fd5f104162be + AppsFlyerFramework: e29b63fc5441400a38a31c5501c1da500b9d53d0 boost: 57d2868c099736d80fcd648bf211b4431e51a558 - BrazeKit: 2df1928c02f5630ed718f06b7bdeecc9faf8d970 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 FBLazyVector: ddb55c55295ea51ed98aa7e2e08add2f826309d5 FBReactNativeSpec: 90fc1a90b4b7a171e0a7c20ea426c1bf6ce4399c - Firebase: 31d9575c124839fb5abc0db6d39511cc1dab1b85 - FirebaseAnalytics: 6c6bf99e8854475bf1fa342028841be8ecd236da - FirebaseCore: 62fd4d549f5e3f3bd52b7998721c5fa0557fb355 - FirebaseCoreInternal: 9e46c82a14a3b3a25be4e1e151ce6d21536b89c0 - FirebaseInstallations: 2a2c6859354cbec0a228a863d4daf6de7c74ced4 + Firebase: 07150e75d142fb9399f6777fa56a187b17f833a0 + FirebaseAnalytics: 0270389efbe3022b54ec4588862dabec3477ee98 + FirebaseCore: f86a1394906b97ac445ae49c92552a9425831bed + FirebaseCoreInternal: 950500ad8a08963657f6d8c67b579740c06d6aa1 + FirebaseInstallations: 7b99ef103f013624444c614397038219c45f8e63 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - GoogleAppMeasurement: d3dabccdb336fc0ae44b633c8abaa26559893cd9 - GoogleUtilities: 9aa0ad5a7bc171f8bae016300bfcfa3fb8425749 + GoogleAppMeasurement: 2d800fab85e7848b1e66a6f8ce5bca06c5aad892 + GoogleUtilities: c63691989bf362ba0505507da00eeb326192e83e hermes-engine: d27603b55a48402501ad1928c05411dae9cd6b85 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 nanopb: b552cce312b6c8484180ef47159bc0f65a1f0431 - Permission-LocationAccuracy: d6aa5146c084e7077e7efc4cbb543c7f6c72c51a - Permission-LocationAlways: e7ce67f3091ec096b6ac274bc30a18830a66b33c - Permission-LocationWhenInUse: 1c80e4797ae587642a83125e80b86686cefeba53 + Permission-LocationAccuracy: a38ddb5c5d0b8e656f3c86e4a500f9bb88bc099d + Permission-LocationAlways: 8fd5518716c3045f9c4edf77b901126098d79b60 + Permission-LocationWhenInUse: 24d97eeb25d8ff9f2232e070f792eeb1360ccaf0 + PLCrashReporter: 5d2d3967afe0efad61b3048d617e2199a5d1b787 PromisesObjC: 09985d6d70fbe7878040aa746d78236e6946d2ef RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 RCTRequired: 8ef706f91e2b643cd32c26a57700b5f24fab0585 @@ -739,21 +752,23 @@ SPEC CHECKSUMS: React-RCTVibration: d13cc2d63286c633393d3a7f6f607cc2a09ec011 React-runtimeexecutor: a9a1cd79996c9a0846e3232ecb25c64e1cc0172e ReactCommon: e7a0cdbb67f8da60677db83d693dea816780a6e9 - RNPermissions: 215c54462104b3925b412b0fb3c9c497b21c358b + RNPermissions: f1b49dd05fa9b83993cd05a9ee115247944d8f1a tealium-react-adjust: ae9cb0658f21293ca1bd8240cbc01e6da744d3cc + tealium-react-adobe-visitor: 8493ca729d41f3290d1c16ac521b405dbc004fb4 tealium-react-appsflyer: 041783acc14ac5a3ca416cc6e0a92dd3e5c81ecb - tealium-react-braze: d6ade22e3147b74338a93f572d2ce984f19c5a36 tealium-react-firebase: e8d20c3ea0d36c0b56afbdd75b6d43057abc93ab tealium-react-native: 2a5481ab4be78106f33447a93b035725b1aa957e + tealium-react-native-crash-reporter: b83046fe9a3c7e83a6554311e28993fc3673bf2f tealium-react-native-location: 2bd1b4e1081fd96904195ccbfb08b48b675256b8 tealium-react-native-swift: c1302b2ba205cf9fb75ab27373e32c2bb4de4e6f tealium-swift: 92ac60201de69b342ecc2d52e2207796cf936cf8 TealiumAdjust: e4dc17fd9dad81b37207e8df2b52ab12af36f606 + TealiumAdobeVisitorAPI: dbcc822fad80ade2edcb731f732f0cb43048c604 TealiumAppsFlyer: 091f216de29ef5152a2a8575db82b3ea7e48d7c7 - TealiumBraze: df84e4b662a376d165025d9c84cf7141bfd6505e + TealiumCrashModule: 49826bdeb10b24407296463cd30a9ee00ca43232 TealiumFirebase: 49aef245aa7e5e6826a7fa1594538f2c7f1750d2 Yoga: e7ea9e590e27460d28911403b894722354d73479 -PODFILE CHECKSUM: ae01ac8d8d37ecfbca906c6999ee36c4e03e50e4 +PODFILE CHECKSUM: 832c551ff313519d4cfb80ad52278076f6e41133 COCOAPODS: 1.12.1 diff --git a/example/ios/example.xcodeproj/project.pbxproj b/example/ios/example.xcodeproj/project.pbxproj index 9bb2bcc2e..a24a9485b 100644 --- a/example/ios/example.xcodeproj/project.pbxproj +++ b/example/ios/example.xcodeproj/project.pbxproj @@ -11,9 +11,9 @@ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 1BF9905FA5AACA6FB2B7A9E5 /* Pods_example_exampleTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 87DA30AA721C25AACEFE87D8 /* Pods_example_exampleTests.framework */; }; - 7604AD4A0FDDD8C269FBB9B5 /* Pods_example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43288D8BC71232B1C641498B /* Pods_example.framework */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + A90253D074E8D5AAF4040467 /* Pods_example_exampleTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8542E0764AC3B06536DCF1FF /* Pods_example_exampleTests.framework */; }; + F871F8C3F3308C84709109C4 /* Pods_example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E65CEBE3F8F8A6899548428F /* Pods_example.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -40,15 +40,15 @@ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = example/Images.xcassets; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = example/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = example/main.m; sourceTree = ""; }; - 43288D8BC71232B1C641498B /* Pods_example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7FD32CAD4264E3D78B90E2B8 /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.release.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.release.xcconfig"; sourceTree = ""; }; + 61D785FFECE3358EE7FBE9F7 /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.debug.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.debug.xcconfig"; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = example/LaunchScreen.storyboard; sourceTree = ""; }; - 87DA30AA721C25AACEFE87D8 /* Pods_example_exampleTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_example_exampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 964C29B8FCBAB02DAF70447A /* Pods-example-exampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-exampleTests.debug.xcconfig"; path = "Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.debug.xcconfig"; sourceTree = ""; }; - 9E693BF5C84B3E84A3DC1BF9 /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.debug.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.debug.xcconfig"; sourceTree = ""; }; + 8542E0764AC3B06536DCF1FF /* Pods_example_exampleTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_example_exampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 860409893D3DBE7DBA7149BE /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.release.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.release.xcconfig"; sourceTree = ""; }; + 97BF4C721A12E55C190E37F8 /* Pods-example-exampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-exampleTests.debug.xcconfig"; path = "Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.debug.xcconfig"; sourceTree = ""; }; + DE74D2AEFFF02B9092D091E0 /* Pods-example-exampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-exampleTests.release.xcconfig"; path = "Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.release.xcconfig"; sourceTree = ""; }; E18EECBB29F06D450062D59B /* appsflyer.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = appsflyer.json; path = example/appsflyer.json; sourceTree = ""; }; + E65CEBE3F8F8A6899548428F /* Pods_example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; - FC2C4BFCEA869D1E0C5A3BF3 /* Pods-example-exampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example-exampleTests.release.xcconfig"; path = "Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -56,7 +56,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1BF9905FA5AACA6FB2B7A9E5 /* Pods_example_exampleTests.framework in Frameworks */, + A90253D074E8D5AAF4040467 /* Pods_example_exampleTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -64,7 +64,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7604AD4A0FDDD8C269FBB9B5 /* Pods_example.framework in Frameworks */, + F871F8C3F3308C84709109C4 /* Pods_example.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -106,8 +106,8 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 43288D8BC71232B1C641498B /* Pods_example.framework */, - 87DA30AA721C25AACEFE87D8 /* Pods_example_exampleTests.framework */, + E65CEBE3F8F8A6899548428F /* Pods_example.framework */, + 8542E0764AC3B06536DCF1FF /* Pods_example_exampleTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -150,10 +150,10 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 9E693BF5C84B3E84A3DC1BF9 /* Pods-example.debug.xcconfig */, - 7FD32CAD4264E3D78B90E2B8 /* Pods-example.release.xcconfig */, - 964C29B8FCBAB02DAF70447A /* Pods-example-exampleTests.debug.xcconfig */, - FC2C4BFCEA869D1E0C5A3BF3 /* Pods-example-exampleTests.release.xcconfig */, + 61D785FFECE3358EE7FBE9F7 /* Pods-example.debug.xcconfig */, + 860409893D3DBE7DBA7149BE /* Pods-example.release.xcconfig */, + 97BF4C721A12E55C190E37F8 /* Pods-example-exampleTests.debug.xcconfig */, + DE74D2AEFFF02B9092D091E0 /* Pods-example-exampleTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -165,12 +165,12 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "exampleTests" */; buildPhases = ( - 904EE47999175FCC2917D200 /* [CP] Check Pods Manifest.lock */, + 69ECF0F80BCBBC907206590E /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - A75416D1A81D78FA81D66269 /* [CP] Copy Pods Resources */, - 8DDE72007828D4AA7702C69A /* [CP] Embed Pods Frameworks */, + 5F3F31DD9A0506B5A9EE5E33 /* [CP] Embed Pods Frameworks */, + 6F577F86B63B98BF21F524A7 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -186,14 +186,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */; buildPhases = ( - 604B4D4BBBA54D4CEAD986F4 /* [CP] Check Pods Manifest.lock */, + 83EE8384C0A6743DC42A378A /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 753B2DB762DCBDD871B52271 /* [CP] Copy Pods Resources */, - 7A0EEAE7AB28CA380FE0587E /* [CP] Embed Pods Frameworks */, + A7DD7858755ECE70C9470D56 /* [CP] Embed Pods Frameworks */, + 92CF5A2EAB8629A9946E6E7A /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -276,116 +276,116 @@ shellPath = /bin/sh; shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - 604B4D4BBBA54D4CEAD986F4 /* [CP] Check Pods Manifest.lock */ = { + 5F3F31DD9A0506B5A9EE5E33 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-example-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 753B2DB762DCBDD871B52271 /* [CP] Copy Pods Resources */ = { + 69ECF0F80BCBBC907206590E /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-example-exampleTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 7A0EEAE7AB28CA380FE0587E /* [CP] Embed Pods Frameworks */ = { + 6F577F86B63B98BF21F524A7 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 8DDE72007828D4AA7702C69A /* [CP] Embed Pods Frameworks */ = { + 83EE8384C0A6743DC42A378A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-example-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 904EE47999175FCC2917D200 /* [CP] Check Pods Manifest.lock */ = { + 92CF5A2EAB8629A9946E6E7A /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-example-exampleTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh\"\n"; showEnvVarsInLog = 0; }; - A75416D1A81D78FA81D66269 /* [CP] Copy Pods Resources */ = { + A7DD7858755ECE70C9470D56 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Copy Pods Resources"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example-exampleTests/Pods-example-exampleTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; FD10A7F022414F080027D42C /* Start Packager */ = { @@ -440,7 +440,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 964C29B8FCBAB02DAF70447A /* Pods-example-exampleTests.debug.xcconfig */; + baseConfigurationReference = 97BF4C721A12E55C190E37F8 /* Pods-example-exampleTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -467,7 +467,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FC2C4BFCEA869D1E0C5A3BF3 /* Pods-example-exampleTests.release.xcconfig */; + baseConfigurationReference = DE74D2AEFFF02B9092D091E0 /* Pods-example-exampleTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; @@ -491,12 +491,21 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9E693BF5C84B3E84A3DC1BF9 /* Pods-example.debug.xcconfig */; + baseConfigurationReference = 61D785FFECE3358EE7FBE9F7 /* Pods-example.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; ENABLE_BITCODE = NO; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "COCOAPODS=1", + "HERMES_ENABLE_DEBUGGER=1", + "$(inherited)", + "PB_FIELD_32BIT=1", + "PB_NO_PACKED_STRUCTS=1", + "PB_ENABLE_MALLOC=1", + ); INFOPLIST_FILE = example/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -517,11 +526,20 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7FD32CAD4264E3D78B90E2B8 /* Pods-example.release.xcconfig */; + baseConfigurationReference = 860409893D3DBE7DBA7149BE /* Pods-example.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "COCOAPODS=1", + "HERMES_ENABLE_DEBUGGER=1", + "$(inherited)", + "PB_FIELD_32BIT=1", + "PB_NO_PACKED_STRUCTS=1", + "PB_ENABLE_MALLOC=1", + ); INFOPLIST_FILE = example/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/example/ios/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/example/ios/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/example/ios/example.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/example/ios/example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/example/ios/example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/example/ios/example.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme b/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme index fef9df78a..301823076 100644 --- a/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme +++ b/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme @@ -42,8 +42,8 @@ ?) { + params?.let { + callback.invoke(JSONObject(it).toWritableMap()) + } ?: run { + callback.invoke(null) + } + } + } + ) + } + override fun getName(): String { return MODULE_NAME } diff --git a/modules/adobe-visitor/index.d.ts b/modules/adobe-visitor/index.d.ts index cdc8f5736..1b749da50 100644 --- a/modules/adobe-visitor/index.d.ts +++ b/modules/adobe-visitor/index.d.ts @@ -29,5 +29,10 @@ declare module 'tealium-react-native-adobe-visitor' { * Decorates url with ECID visitor data */ public static decorateUrl(url: String, callback:(response: String) => void): void; + + /** + * Retrieves URL parameters to be manually appended to a URL for special URL schemes (e.g. Angular) + */ + public static getUrlParameters(callback:(response: any) => void): void; } } \ No newline at end of file diff --git a/modules/adobe-visitor/index.js b/modules/adobe-visitor/index.js index 1ea680d58..fafd7a94a 100644 --- a/modules/adobe-visitor/index.js +++ b/modules/adobe-visitor/index.js @@ -27,4 +27,8 @@ export default class TealiumAdobeVisitor { static decorateUrl(url, callback) { TealiumReactAdobeVisitor.decorateUrl(url, callback) } + + static getUrlParameters(callback) { + TealiumReactAdobeVisitor.getUrlParameters(callback) + } } \ No newline at end of file diff --git a/modules/adobe-visitor/ios/TealiumReactAdobeVisitor.m b/modules/adobe-visitor/ios/TealiumReactAdobeVisitor.m index 07d5e71eb..5b63d730e 100644 --- a/modules/adobe-visitor/ios/TealiumReactAdobeVisitor.m +++ b/modules/adobe-visitor/ios/TealiumReactAdobeVisitor.m @@ -6,4 +6,5 @@ @interface RCT_EXTERN_MODULE(TealiumReactAdobeVisitor, NSObject) RCT_EXTERN_METHOD(linkEcidToKnownIdentifier:(NSString)knownId adobeDataProviderId: (NSString)adobeDataProviderId authState: (nonnull NSNumber*)authState callback: (RCTResponseSenderBlock*)callback) RCT_EXTERN_METHOD(resetVisitor) RCT_EXTERN_METHOD(decorateUrl:(NSString)url callback: (RCTResponseSenderBlock)) + RCT_EXTERN_METHOD(getUrlParameters:(RCTResponseSenderBlock)callback) @end diff --git a/modules/adobe-visitor/ios/TealiumReactAdobeVisitor.swift b/modules/adobe-visitor/ios/TealiumReactAdobeVisitor.swift index f1fa599a5..54eaaef63 100644 --- a/modules/adobe-visitor/ios/TealiumReactAdobeVisitor.swift +++ b/modules/adobe-visitor/ios/TealiumReactAdobeVisitor.swift @@ -65,6 +65,11 @@ class TealiumReactAdobeVisitor: NSObject, RCTBridgeModule { module.decorateUrl(url: url, completion: callback) } } + + @objc(getUrlParameters:) + public func getUrlParameters(callback: @escaping RCTResponseSenderBlock) { + module.getUrlParameters(completion: callback) + } @objc(getCurrentAdobeVisitor:) public func getCurrentAdobeVisitor(callback: RCTResponseSenderBlock) { @@ -141,6 +146,16 @@ class TealiumReactAdobeVisitor: NSObject, RCTBridgeModule { }) } + public func getUrlParameters(completion: @escaping RCTResponseSenderBlock) { + TealiumReactNative.instance?.adobeVisitorApi?.getURLParameters { params in + guard let params = params else { + completion(nil) + return + } + completion([[params.name: params.value]]) + } + } + func setOrgId(orgId: String) { adobeOrgId = orgId } diff --git a/modules/adobe-visitor/package.json b/modules/adobe-visitor/package.json index 12bad8178..4ebf3dd21 100644 --- a/modules/adobe-visitor/package.json +++ b/modules/adobe-visitor/package.json @@ -1,7 +1,7 @@ { "name": "tealium-react-native-adobe-visitor", "title": "Tealium React Native Adobe Visitor Service", - "version": "1.0.1", + "version": "1.0.2", "description": "A native module for using Tealium's Adobe Visitor Service module for Kotlin and Swift libraries.", "main": "index.js", "types": "*.ts", diff --git a/modules/crash-reporter/LICENSE b/modules/crash-reporter/LICENSE new file mode 100644 index 000000000..f6f2da35e --- /dev/null +++ b/modules/crash-reporter/LICENSE @@ -0,0 +1,41 @@ +License Agreement + +Thank You for Your interest in our Tealium React Native Library (the "Software"), owned and licensed by Tealium Inc. (“Tealium,” "Our," “We,” or “Us”). Please read this license agreement (the "Agreement") carefully, as it contains the terms and conditions that govern Your use of and access to the Software. + +You may not access the Software if You are Our direct competitor, except with Our prior written consent. In addition, You may not access the Software for purposes of monitoring the availability, performance, or functionality, of any of our products and services or for any other benchmarking or competitive purposes. + +BY DOWNLOADING THE SOFTWARE OR BY EXECUTING A TEALIUM PROVIDED ORDER FORM THAT REFERENCES THIS AGREEMENT, YOU AGREE TO BE BOUND BY AND COMPLY WITH THIS AGREEMENT. IF YOU ARE ENTERING INTO THIS AGREEMENT ON BEHALF OF A COMPANY OR OTHER LEGAL ENTITY, YOU REPRESENT THAT YOU HAVE THE AUTHORITY TO BIND SUCH ENTITY AND ITS AFFILIATES TO THIS AGREEMENT, IN WHICH CASE THE TERMS "YOU" OR "YOUR" WILL REFER TO SUCH ENTITY AND ITS AFFILIATES. IF YOU DO NOT HAVE SUCH AUTHORITY, OR IF YOU DO NOT AGREE WITH THE TERMS OF THIS AGREEMENT, YOU MUST NOT USE THE SOFTWARE. + +The term of Your license to use the Software (the "Term") will begin when You accept this Agreement as set forth above and will continue until terminated pursuant to the provisions of the "Cancellation and Termination" section below. During the Term, We grant You a non-exclusive, non-transferable, royalty-free, limited license (with no right to sublicense) to use the Software to do the following: + +develop software applications and functionality designed to be used in conjunction with Tealium's products and services; +conduct quality assurance testing to ensure compatibility between your software application and Tealium's products and services; and +conduct support testing to troubleshoot compatibility between your software application and Tealium's products and services. + +During the Term, Tealium further grants to You a non-exclusive, non-transferable, royalty-free, limited world-wide license (with no right to sublicense) to market, reproduce, and distribute applications incorporating the integration You develop under this Agreement, either directly or through multiple levels of distributors, Your end users, but only under an end-user license agreement with terms that are as protective of Tealium's rights as this Agreement. + +We do not grant any other rights to the Software. You may only use the Software during the Term, we reserve all rights not expressly granted under this Agreement, and there are no implied rights or other rights We grant hereunder, whether by estoppel or otherwise. You may not: (i) copy or reproduce the Software (except for reasonable archival purposes); (ii) modify or create any derivative works of the Software; (iii) decompile, disassemble, or reverse engineer the Software (except to the extent expressly permitted under applicable law); or (iv) remove or alter any trademark, logo, copyright or other proprietary notices, legends, symbols or labels in the Software. Further, You may not use the Software for any illegal or unauthorized purpose. + +Tealium will retain all title, ownership, and Intellectual Property Rights in the Software and any derivative works thereof. “Intellectual Property Rights” will mean all patent, copyright, trade secret, trademark and other proprietary and intellectual property rights, including moral rights. The Software is protected by copyright and other intellectual property laws and by international treaties. You agree that We will own all suggestions, enhancements requests, feedback, recommendations, or other input provided by You or any other party relating to the Software. Other than the use licenses expressly granted in this Agreement, neither this Agreement nor its performance transfers from Us to You any Tealium intellectual property. + +General Conditions and Restrictions +Your use of the Software is at Your sole risk. +You agree that Tealium is under no obligation to provide You with support for the Software, or to provide You with updates or error corrections ("Updates") to the Software. If Tealium, at its sole discretion, decides to provide You with Updates, Updates will be considered part of Software, and subject to the terms of this Agreement. +You agree not to reproduce, duplicate, copy, sell, resell, or exploit any portion or feature of the Software or access to the Software without express written permission from Tealium. + +No Warranty +THE SOFTWARE IS PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS, AND TEALIUM EXPRESSLY DISCLAIMS ANY WARRANTIES AND CONDITIONS OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, QUIET ENJOYMENT, ACCURACY, OR NON-INFRINGEMENT. WITHOUT LIMITING THE FOREGOING, TEALIUM DOES NOT WARRANT THAT THE SERVICE WILL MEET YOUR SPECIFIC REQUIREMENTS, THAT THE SERVICE WILL BE UNINTERRUPTED, TIMELY, SECURE, OR ERROR-FREE, THAT THE RESULTS THAT MAY BE OBTAINED FROM THE USE OF THE SOFTWARE WILL BE COMPLETE, ACCURATE, OR RELIABLE, THAT THE QUALITY OF ANY PRODUCTS, SERVICES, INFORMATION, OR OTHER MATERIAL PURCHASED OR OBTAINED BY YOU THROUGH THE SOFTWARE WILL MEET YOUR EXPECTATIONS, OR THAT ANY ERRORS IN THE SOFTWARE WILL BE CORRECTED. + +Limitation of Liability +YOU EXPRESSLY UNDERSTAND AND AGREE THAT TEALIUM WILL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF TEALIUM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES), INCLUDING ANY SUCH DAMAGES RESULTING FROM THE USE OR THE INABILITY TO USE THE SOFTWARE; THE COST OF PROCUREMENT OF SUBSTITUTE GOODS AND SERVICES RESULTING FROM ANY GOODS, DATA, INFORMATION OR SERVICES PURCHASED OR OBTAINED OR MESSAGES RECEIVED OR TRANSACTIONS ENTERED INTO THROUGH OR FROM THE SOFTWARE; UNAUTHORIZED ACCESS TO OR ALTERATION OF YOUR TRANSMISSIONS OR DATA; STATEMENTS OR CONDUCT OF ANY THIRD PARTY ON THE SOFTWARE; TERMINATION OF YOUR ACCOUNT; OR ANY OTHER MATTER RELATING TO THE SOFTWARE. + +NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, TEALIUM’S LIABILITY TO YOU FOR ANY DAMAGES ARISING FROM OR RELATING TO THE SOFTWARE (FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION) WILL AT ALL TIMES BE LIMITED TO THE GREATER OR EITHER (1) THE AMOUNT YOU PAID TO TEALIUM IN THE SIX (6) MONTHS IMMEDIATELY PRECEDING THE INCIDENT GIVING RISE TO THE CLAIM OR (2) ONE HUNDRED FIFTY DOLLARS (USD 150.00). + +Cancellation and Termination +Tealium, in its sole discretion, may terminate your license, for any reason at any time. +You, in your sole discretion, may terminate this Agreement immediately upon written notice to Tealium. +Upon termination or expiration of this Agreement, You will immediately cease use of and destroy the original and all copies of the Software in Your possession or control. Upon Tealium's written request, You will confirm to Tealium in writing that You have complied with all provisions of this Agreement. +Either party may terminate this Agreement upon written notice to the other party, for any material breach by the other party, if such breach is not cured within thirty (30) days after the non-breaching party provides the allegedly breaching party with written notice of such breach. + +Miscellaneous +This Agreement will be governed by the laws of the State of California without giving effect to any conflicts of laws principles that may require the application of the law of a different jurisdiction. For any dispute or proceeding arising from or relating to this Agreement, You agree to submit to the jurisdiction of, and agree that venue is proper in, the state courts located in San Diego County, California, and in the federal courts located in the Southern District of California. The failure of Tealium to exercise or enforce any right or provision of this Agreement will not constitute a waiver of such right or provision. This Agreement constitutes the entire agreement between You and Tealium and governs Your use of the Service, superseding any prior agreements between You and Tealium (including, but not limited to, any prior versions of the Agreement). \ No newline at end of file diff --git a/modules/crash-reporter/README.md b/modules/crash-reporter/README.md new file mode 100644 index 000000000..906744d6f --- /dev/null +++ b/modules/crash-reporter/README.md @@ -0,0 +1,18 @@ +## Tealium React Native + +This repository contains the necessary assets for exposing Tealium's native [Android](https://docs.tealium.com/platforms/android-kotlin/) and [iOS](https://docs.tealium.com/platforms/ios-swift/) mobile libraries to the JavaScript code in your React Native project. This includes code for exposing the native APIs for both platforms through React Native's bridging system, and a basic helper class in JavaScript to create a single cross platform API. + +You can also find a example application demonstrating how everything is put together and how the API gets called in JavaScript. + +## Documentation +For full documentation, please see the Tealium Developer Docs website: + +[Tealium React Native Documentation](https://docs.tealium.com/platforms/react-native/install/) + +## License + +Use of this software is subject to the terms and conditions of the license agreement contained in the file titled "LICENSE.txt". Please read the license before downloading or using any of the files contained in this repository. By downloading or using any of these files, you are agreeing to be bound by and comply with the license agreement. + + +--- +Copyright (C) 2012-2023, Tealium Inc. \ No newline at end of file diff --git a/modules/crash-reporter/android/build.gradle b/modules/crash-reporter/android/build.gradle new file mode 100644 index 000000000..9058fae5b --- /dev/null +++ b/modules/crash-reporter/android/build.gradle @@ -0,0 +1,102 @@ +def DEFAULT_COMPILE_SDK_VERSION = 33 +def DEFAULT_BUILD_TOOLS_VERSION = '30.0.3' +def DEFAULT_MIN_SDK_VERSION = 21 +def DEFAULT_TARGET_SDK_VERSION = 33 + +def safeExtGet(prop, fallback) { + rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback +} + +apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' + +buildscript { + ext { + kotlinVersion = '1.6.0' + } + + if (project == rootProject) { + repositories { + google() + mavenCentral() + maven { + url "https://maven.tealiumiq.com/android/releases/" + } + } + dependencies { + classpath 'com.android.tools.build:gradle:4.2.2' + } + } + + repositories { + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${project.ext.kotlinVersion}" + } +} + +version = "1.0.0" + +android { + compileSdkVersion safeExtGet('compileSdkVersion', DEFAULT_COMPILE_SDK_VERSION) + buildToolsVersion safeExtGet('buildToolsVersion', DEFAULT_BUILD_TOOLS_VERSION) + + defaultConfig { + minSdkVersion safeExtGet('minSdkVersion', DEFAULT_MIN_SDK_VERSION) + targetSdkVersion safeExtGet('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION) + versionCode 1 + versionName "1.0" + + buildConfigField "String", "TAG", "\"Tealium-React-Adobe-Visitor-$version\"" + } + + lintOptions { + disable 'GradleCompatible' + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11 + } +} + +repositories { + // ref: https://www.baeldung.com/maven-local-repository + mavenLocal() + maven { + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm + url "$rootDir/../node_modules/react-native/android" + } + + maven { + // Android JSC is installed from npm + url "$rootDir/../node_modules/jsc-android/dist" + } + + maven { + url "https://maven.tealiumiq.com/android/releases/" + } + + google() + mavenCentral() +} + + +dependencies { + // noinspection GradleDynamicVersion + implementation 'com.facebook.react:react-native:+' + + // Tealium React Native + implementation project(":tealium-react-native") + + // Tealium + implementation 'com.tealium:kotlin-core:1.5.3' + implementation 'com.tealium:kotlin-crash-reporter:1.1.0' + + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${project.ext.kotlinVersion}" +} diff --git a/modules/crash-reporter/android/gradle.properties b/modules/crash-reporter/android/gradle.properties new file mode 100644 index 000000000..ddc222504 --- /dev/null +++ b/modules/crash-reporter/android/gradle.properties @@ -0,0 +1,5 @@ +TealiumReactCrashReporter_kotlinVersion=1.7.0 +TealiumReactCrashReporter_minSdkVersion=21 +TealiumReactCrashReporter_targetSdkVersion=31 +TealiumReactCrashReporter_compileSdkVersion=31 +TealiumReactCrashReporter_ndkversion=21.4.7075529 diff --git a/modules/crash-reporter/android/src/main/AndroidManifest.xml b/modules/crash-reporter/android/src/main/AndroidManifest.xml new file mode 100644 index 000000000..5eb89cff4 --- /dev/null +++ b/modules/crash-reporter/android/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/modules/crash-reporter/android/src/main/java/com/tealium/react/crashreporter/TealiumReactCrashReporter.kt b/modules/crash-reporter/android/src/main/java/com/tealium/react/crashreporter/TealiumReactCrashReporter.kt new file mode 100644 index 000000000..7aea38e0a --- /dev/null +++ b/modules/crash-reporter/android/src/main/java/com/tealium/react/crashreporter/TealiumReactCrashReporter.kt @@ -0,0 +1,56 @@ +package com.tealium.react.crashreporter + +import android.view.View +import com.facebook.react.ReactPackage +import com.facebook.react.bridge.NativeModule +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.ReactContextBaseJavaModule +import com.facebook.react.bridge.ReactMethod +import com.facebook.react.uimanager.ReactShadowNode +import com.facebook.react.uimanager.ViewManager +import com.tealium.core.Modules +import com.tealium.core.TealiumConfig +import com.tealium.crashreporter.CrashReporter +import com.tealium.crashreporter.truncateCrashReporterStackTraces +import com.tealium.react.OptionalModule +import com.tealium.react.TealiumReact + +class TealiumReactCrashReporterPackage : ReactPackage { + override fun createNativeModules(reactContext: ReactApplicationContext): MutableList { + return mutableListOf(TealiumReactCrashReporter(reactContext)) + } + + override fun createViewManagers(reactContext: ReactApplicationContext): MutableList>> { + return mutableListOf() + } +} + +class TealiumReactCrashReporter(private val reactContext: ReactApplicationContext) : + ReactContextBaseJavaModule(reactContext), + OptionalModule { + + private var _truncateStackTraces: Boolean = false + + @ReactMethod + fun initialize(truncateStackTrace: Boolean) { + _truncateStackTraces = truncateStackTrace + } + + override fun initialize() { + super.initialize() + reactContext.getNativeModule(TealiumReact::class.java)?.registerOptionalModule(this) + } + + override fun configure(config: TealiumConfig) { + config.modules.add(Modules.CrashReporter) + config.truncateCrashReporterStackTraces = _truncateStackTraces + } + + override fun getName(): String { + return MODULE_NAME + } + + companion object { + const val MODULE_NAME = "TealiumReactCrashReporter" + } +} diff --git a/modules/crash-reporter/index.d.ts b/modules/crash-reporter/index.d.ts new file mode 100644 index 000000000..793373e64 --- /dev/null +++ b/modules/crash-reporter/index.d.ts @@ -0,0 +1,6 @@ +declare module 'tealium-react-native-crash-reporter' { + export default TealiumCrashReporter; + class TealiumCrashReporter { + public static initialize(truncateStackTrack?: boolean): void; + } +} \ No newline at end of file diff --git a/modules/crash-reporter/index.js b/modules/crash-reporter/index.js new file mode 100644 index 000000000..a0cbedf72 --- /dev/null +++ b/modules/crash-reporter/index.js @@ -0,0 +1,22 @@ +import { NativeModules } from 'react-native'; + +const { TealiumReactCrashReporter } = NativeModules; + +export default class TealiumCrashReporter { + + /** + * Initializes the Tealium Crash Reporter module + * @param truncateStackTrack Android only. Option to truncate the Crash Reporter's stack trace + */ + static initialize(truncateStackTrack) { + if (Platform.OS == 'ios') { + TealiumReactCrashReporter.initialize(); + } else { + if(truncateStackTrack == undefined) { + TealiumReactCrashReporter.initialize(false); + } else { + TealiumReactCrashReporter.initialize(truncateStackTrack); + } + } + } +} \ No newline at end of file diff --git a/modules/crash-reporter/ios/TealiumReactCrashReporter-Bridging-Header.h b/modules/crash-reporter/ios/TealiumReactCrashReporter-Bridging-Header.h new file mode 100644 index 000000000..dea7ff6bf --- /dev/null +++ b/modules/crash-reporter/ios/TealiumReactCrashReporter-Bridging-Header.h @@ -0,0 +1,2 @@ +#import +#import diff --git a/modules/crash-reporter/ios/TealiumReactCrashReporter.m b/modules/crash-reporter/ios/TealiumReactCrashReporter.m new file mode 100644 index 000000000..2ce505e27 --- /dev/null +++ b/modules/crash-reporter/ios/TealiumReactCrashReporter.m @@ -0,0 +1,6 @@ +#import + +@interface RCT_EXTERN_MODULE(TealiumReactCrashReporter, NSObject) + RCT_EXTERN_METHOD(initialize) + RCT_EXTERN_METHOD(configure:(NSDictionary *)options) +@end diff --git a/modules/crash-reporter/ios/TealiumReactCrashReporter.swift b/modules/crash-reporter/ios/TealiumReactCrashReporter.swift new file mode 100644 index 000000000..8fbad68fa --- /dev/null +++ b/modules/crash-reporter/ios/TealiumReactCrashReporter.swift @@ -0,0 +1,33 @@ +import Foundation +import tealium_react_native_swift +import TealiumSwift +import TealiumCrashModule + +@objc(TealiumReactCrashReporter) +class TealiumReactCrashReporter: NSObject, RCTBridgeModule { + static func moduleName() -> String! { + return "TealiumReactCrashReporter" + } + let module = TealiumReactCrashReporterModule() + + @objc + static func requiresMainQueueSetup() -> Bool { + return false + } + + override init() { + super.init() + TealiumReactNative.registerOptionalModule(module) + } + + @objc(initialize) + public func initialize() { + TealiumReactNative.registerOptionalModule(module) + } +} + +class TealiumReactCrashReporterModule: NSObject, OptionalModule { + func configure(config: TealiumConfig) { + config.collectors?.append(Collectors.Crash) + } +} \ No newline at end of file diff --git a/modules/crash-reporter/ios/TealiumReactCrashReporter.xcodeproj/project.pbxproj b/modules/crash-reporter/ios/TealiumReactCrashReporter.xcodeproj/project.pbxproj new file mode 100644 index 000000000..48c8ef27f --- /dev/null +++ b/modules/crash-reporter/ios/TealiumReactCrashReporter.xcodeproj/project.pbxproj @@ -0,0 +1,283 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 5E555C0D2413F4C50049A1A2 /* TealiumReactCrashReporter.mm in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* TealiumReactCrashReporter.mm */; }; + F4FF95D7245B92E800C19C63 /* TealiumReactCrashReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4FF95D6245B92E800C19C63 /* TealiumReactCrashReporter.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 58B511D91A9E6C8500147676 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 134814201AA4EA6300B7C361 /* libTealiumReactCrashReporter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libTealiumReactCrashReporter.a; sourceTree = BUILT_PRODUCTS_DIR; }; + B3E7B5891CC2AC0600A0062D /* TealiumReactCrashReporter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TealiumReactCrashReporter.mm; sourceTree = ""; }; + F4FF95D5245B92E700C19C63 /* TealiumReactCrashReporter-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TealiumReactCrashReporter-Bridging-Header.h"; sourceTree = ""; }; + F4FF95D6245B92E800C19C63 /* TealiumReactCrashReporter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TealiumReactCrashReporter.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 58B511D81A9E6C8500147676 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 134814211AA4EA7D00B7C361 /* Products */ = { + isa = PBXGroup; + children = ( + 134814201AA4EA6300B7C361 /* libTealiumReactCrashReporter.a */, + ); + name = Products; + sourceTree = ""; + }; + 58B511D21A9E6C8500147676 = { + isa = PBXGroup; + children = ( + F4FF95D6245B92E800C19C63 /* TealiumReactCrashReporter.swift */, + B3E7B5891CC2AC0600A0062D /* TealiumReactCrashReporter.mm */, + F4FF95D5245B92E700C19C63 /* TealiumReactCrashReporter-Bridging-Header.h */, + 134814211AA4EA7D00B7C361 /* Products */, + ); + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 58B511DA1A9E6C8500147676 /* TealiumReactCrashReporter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "TealiumReactCrashReporter" */; + buildPhases = ( + 58B511D71A9E6C8500147676 /* Sources */, + 58B511D81A9E6C8500147676 /* Frameworks */, + 58B511D91A9E6C8500147676 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = TealiumReactCrashReporter; + productName = RCTDataManager; + productReference = 134814201AA4EA6300B7C361 /* libTealiumReactCrashReporter.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 58B511D31A9E6C8500147676 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0920; + ORGANIZATIONNAME = Facebook; + TargetAttributes = { + 58B511DA1A9E6C8500147676 = { + CreatedOnToolsVersion = 6.1.1; + }; + }; + }; + buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "TealiumReactCrashReporter" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + English, + en, + ); + mainGroup = 58B511D21A9E6C8500147676; + productRefGroup = 58B511D21A9E6C8500147676; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 58B511DA1A9E6C8500147676 /* TealiumReactCrashReporter */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 58B511D71A9E6C8500147676 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F4FF95D7245B92E800C19C63 /* TealiumReactCrashReporter.swift in Sources */, + B3E7B58A1CC2AC0600A0062D /* TealiumReactCrashReporter.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 58B511ED1A9E6C8500147676 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + "EXCLUDED_ARCHS[sdk=*]" = arm64; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 58B511EE1A9E6C8500147676 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + "EXCLUDED_ARCHS[sdk=*]" = arm64; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 58B511F01A9E6C8500147676 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = TealiumReactCrashReporter; + SKIP_INSTALL = YES; + SWIFT_OBJC_BRIDGING_HEADER = "TealiumReactCrashReporter-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 58B511F11A9E6C8500147676 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(SRCROOT)/../../../React/**", + "$(SRCROOT)/../../react-native/React/**", + ); + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = TealiumReactCrashReporter; + SKIP_INSTALL = YES; + SWIFT_OBJC_BRIDGING_HEADER = "TealiumReactCrashReporter-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "TealiumReactCrashReporter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B511ED1A9E6C8500147676 /* Debug */, + 58B511EE1A9E6C8500147676 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "TealiumReactCrashReporter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 58B511F01A9E6C8500147676 /* Debug */, + 58B511F11A9E6C8500147676 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 58B511D31A9E6C8500147676 /* Project object */; +} diff --git a/modules/crash-reporter/ios/TealiumReactCrashReporter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/modules/crash-reporter/ios/TealiumReactCrashReporter.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..94b2795e2 --- /dev/null +++ b/modules/crash-reporter/ios/TealiumReactCrashReporter.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,4 @@ + + + diff --git a/modules/crash-reporter/package.json b/modules/crash-reporter/package.json new file mode 100644 index 000000000..0ae049fb5 --- /dev/null +++ b/modules/crash-reporter/package.json @@ -0,0 +1,47 @@ +{ + "name": "tealium-react-native-crash-reporter", + "title": "Tealium React Native Crash Reporter", + "version": "1.0.0", + "description": "A native module for using Tealium's Crash Reporter Module for Kotlin and Swift libraries.", + "main": "index.js", + "types": "*.ts", + "homepage": "https://github.com/Tealium/tealium-react-native", + "bugs": "https://github.com/Tealium/tealium-react-native/issues", + "files": [ + "README.md", + "LICENSE", + "android", + "common.ts", + "index.js", + "index.d.ts", + "ios", + "tealium-react-native.podspec" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/Tealium/tealium-react-native.git", + "baseUrl": "https://github.com/Tealium/tealium-react-native" + }, + "keywords": [ + "react-native", + "tealium" + ], + "author": { + "name": "Tealium" + }, + "contributors": [ + "Karen Tamayo" + ], + "license": "Commercial", + "licenseFilename": "LICENSE", + "readmeFilename": "README.md", + "peerDependencies": { + "react": ">=16.8.1 || < 19.0.0", + "react-native": ">=0.60.0-rc.0 <1.0.x", + "tealium-react-native": "^2.2.0" + }, + "devDependencies": { + "react": "^17.0.2", + "react-native": "^0.67.1" + } +} diff --git a/modules/crash-reporter/tealium-react-native-crash-reporter.podspec b/modules/crash-reporter/tealium-react-native-crash-reporter.podspec new file mode 100644 index 000000000..05da45ac3 --- /dev/null +++ b/modules/crash-reporter/tealium-react-native-crash-reporter.podspec @@ -0,0 +1,28 @@ +require "json" + +package = JSON.parse(File.read(File.join(__dir__, "package.json"))) + +Pod::Spec.new do |s| + s.name = "tealium-react-native-crash-reporter" + s.version = package["version"] + s.summary = package["description"] + s.description = <<-DESC + Tealium React Native Crash Reporter Plugin + DESC + s.homepage = "https://github.com/tealium/tealium-react-native" + s.license = { :type => "Commercial", :file => "LICENSE.txt" } + s.authors = { "James Keith" => "james.keith@tealium.com" } + s.platforms = { :ios => "11.0" } + s.source = { :git => "https://github.com/tealium/tealium-react-native.git", :tag => "#{s.version}" } + s.source_files = "ios/**/*.{h,c,m,swift}" + s.requires_arc = true + s.swift_version = "5.0" + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } + + s.dependency "React-Core" + s.dependency "tealium-react-native", "~> 2.2" + s.dependency "tealium-react-native-swift", "~> 2.2" + s.dependency "tealium-swift/Core", "~> 2.6" + s.dependency "TealiumCrashModule", "~> 2.3" + +end diff --git a/remotecommands/tealium-react-firebase/yarn.lock b/remotecommands/tealium-react-firebase/yarn.lock index 907ad9e3d..3a304a8cf 100644 --- a/remotecommands/tealium-react-firebase/yarn.lock +++ b/remotecommands/tealium-react-firebase/yarn.lock @@ -2590,9 +2590,9 @@ json-stable-stringify@^1.0.1: jsonify "^0.0.1" json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^2.1.0: version "2.4.0" @@ -3887,14 +3887,14 @@ scheduler@0.15.0: object-assign "^4.1.1" "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== send@0.18.0: version "0.18.0" @@ -4356,9 +4356,9 @@ typedarray@^0.0.6: integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== ua-parser-js@^0.7.18: - version "0.7.32" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.32.tgz#cd8c639cdca949e30fa68c44b7813ef13e36d211" - integrity sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw== + version "0.7.33" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532" + integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw== uglify-es@^3.1.9: version "3.3.9"