appsprint-react-native 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +173 -0
  3. package/android/build.gradle +39 -0
  4. package/android/libs/appsprint-sdk.aar +0 -0
  5. package/android/src/main/AndroidManifest.xml +3 -0
  6. package/android/src/main/kotlin/com/appsprint/AppSprintBridgeModule.kt +182 -0
  7. package/android/src/main/kotlin/com/appsprint/AppSprintPackage.kt +16 -0
  8. package/app.plugin.js +3 -0
  9. package/appsprint-react-native.podspec +23 -0
  10. package/ios/AppSprintBridge.m +59 -0
  11. package/ios/AppSprintBridge.swift +210 -0
  12. package/ios/AppSprintSDK.xcframework/Info.plist +44 -0
  13. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/AppSprintSDK +0 -0
  14. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Headers/AppSprintSDK-Swift.h +3 -0
  15. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Info.plist +0 -0
  16. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios.abi.json +4952 -0
  17. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios.package.swiftinterface +165 -0
  18. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +165 -0
  19. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  20. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios.swiftinterface +165 -0
  21. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/module.modulemap +4 -0
  22. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/AppSprintSDK +0 -0
  23. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Headers/AppSprintSDK-Swift.h +3 -0
  24. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Info.plist +0 -0
  25. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +4952 -0
  26. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios-simulator.package.swiftinterface +165 -0
  27. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +165 -0
  28. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  29. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +165 -0
  30. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +4952 -0
  31. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/x86_64-apple-ios-simulator.package.swiftinterface +165 -0
  32. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +165 -0
  33. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  34. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +165 -0
  35. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/module.modulemap +4 -0
  36. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/_CodeSignature/CodeResources +101 -0
  37. package/lib/commonjs/AppSprint.js +50 -0
  38. package/lib/commonjs/NativeAppSprint.js +50 -0
  39. package/lib/commonjs/index.js +20 -0
  40. package/lib/commonjs/package.json +1 -0
  41. package/lib/commonjs/types.js +2 -0
  42. package/lib/module/AppSprint.js +46 -0
  43. package/lib/module/NativeAppSprint.js +47 -0
  44. package/lib/module/index.js +5 -0
  45. package/lib/module/package.json +1 -0
  46. package/lib/module/types.js +2 -0
  47. package/lib/typescript/AppSprint.d.ts +18 -0
  48. package/lib/typescript/NativeAppSprint.d.ts +4 -0
  49. package/lib/typescript/index.d.ts +4 -0
  50. package/lib/typescript/types.d.ts +60 -0
  51. package/package.json +56 -0
  52. package/plugin/build/index.d.ts +10 -0
  53. package/plugin/build/index.js +22 -0
  54. package/plugin/src/index.ts +27 -0
  55. package/src/AppSprint.ts +74 -0
  56. package/src/NativeAppSprint.ts +52 -0
  57. package/src/index.ts +13 -0
  58. package/src/types.ts +93 -0
@@ -0,0 +1,210 @@
1
+ import Foundation
2
+ import React
3
+ import AppSprintSDK
4
+
5
+ @objc(AppSprintModule)
6
+ class AppSprintBridge: NSObject {
7
+
8
+ @objc static func requiresMainQueueSetup() -> Bool { return false }
9
+
10
+ // MARK: - Core SDK
11
+
12
+ @objc func configure(_ config: NSDictionary,
13
+ resolve: @escaping RCTPromiseResolveBlock,
14
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
15
+ let apiKey = (config["apiKey"] as? String)?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
16
+ guard !apiKey.isEmpty else {
17
+ reject("CONFIGURE_ERROR", "AppSprint.configure requires a non-empty apiKey.", nil)
18
+ return
19
+ }
20
+
21
+ Task { @MainActor in
22
+ let apiUrl = config["apiUrl"] as? String
23
+ let enableAppleAds = config["enableAppleAdsAttribution"] as? Bool ?? true
24
+ let isDebug = config["isDebug"] as? Bool ?? false
25
+ let logLevelRaw = config["logLevel"] as? Int
26
+ let customerUserId = config["customerUserId"] as? String
27
+
28
+ let logLevel: AppSprintLogLevel
29
+ if let raw = logLevelRaw, let level = AppSprintLogLevel(rawValue: raw) {
30
+ logLevel = level
31
+ } else {
32
+ logLevel = isDebug ? .debug : .warn
33
+ }
34
+
35
+ var sdkConfig = AppSprintConfig(
36
+ apiKey: apiKey,
37
+ enableAppleAdsAttribution: enableAppleAds,
38
+ isDebug: isDebug,
39
+ logLevel: logLevel,
40
+ customerUserId: customerUserId
41
+ )
42
+
43
+ if let urlString = apiUrl, let url = URL(string: urlString) {
44
+ sdkConfig = AppSprintConfig(
45
+ apiKey: apiKey,
46
+ apiURL: url,
47
+ enableAppleAdsAttribution: enableAppleAds,
48
+ isDebug: isDebug,
49
+ logLevel: logLevel,
50
+ customerUserId: customerUserId
51
+ )
52
+ }
53
+
54
+ await AppSprint.shared.configure(sdkConfig)
55
+ resolve(nil)
56
+ }
57
+ }
58
+
59
+ @objc func sendEvent(_ eventType: String,
60
+ name: String?,
61
+ revenue: NSNumber?,
62
+ currency: String?,
63
+ parameters: NSDictionary?,
64
+ resolve: @escaping RCTPromiseResolveBlock,
65
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
66
+ Task { @MainActor in
67
+ let type = AppSprintEventType(rawValue: eventType) ?? .custom
68
+
69
+ var params: [String: Any]? = nil
70
+ if let parameters = parameters as? [String: Any] {
71
+ params = parameters
72
+ }
73
+ if let rev = revenue?.doubleValue {
74
+ if params == nil { params = [:] }
75
+ params?["revenue"] = rev
76
+ }
77
+ if let cur = currency {
78
+ if params == nil { params = [:] }
79
+ params?["currency"] = cur
80
+ }
81
+
82
+ await AppSprint.shared.sendEvent(type, name: name, params: params)
83
+ resolve(nil)
84
+ }
85
+ }
86
+
87
+ @objc func sendTestEvent(_ resolve: @escaping RCTPromiseResolveBlock,
88
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
89
+ Task { @MainActor in
90
+ let result = await AppSprint.shared.sendTestEvent()
91
+ resolve(["success": result.success, "message": result.message])
92
+ }
93
+ }
94
+
95
+ @objc func flush(_ resolve: @escaping RCTPromiseResolveBlock,
96
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
97
+ Task { @MainActor in
98
+ await AppSprint.shared.flush()
99
+ resolve(nil)
100
+ }
101
+ }
102
+
103
+ @objc func clearData(_ resolve: @escaping RCTPromiseResolveBlock,
104
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
105
+ Task { @MainActor in
106
+ AppSprint.shared.clearData()
107
+ resolve(nil)
108
+ }
109
+ }
110
+
111
+ @objc func setCustomerUserId(_ userId: String,
112
+ resolve: @escaping RCTPromiseResolveBlock,
113
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
114
+ Task { @MainActor in
115
+ await AppSprint.shared.setCustomerUserId(userId)
116
+ resolve(nil)
117
+ }
118
+ }
119
+
120
+ @objc func enableAppleAdsAttribution(_ resolve: @escaping RCTPromiseResolveBlock,
121
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
122
+ Task { @MainActor in
123
+ AppSprint.shared.enableAppleAdsAttribution()
124
+ resolve(nil)
125
+ }
126
+ }
127
+
128
+ @objc func getAppSprintId(_ resolve: @escaping RCTPromiseResolveBlock,
129
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
130
+ Task { @MainActor in
131
+ let id = AppSprint.shared.getAppSprintId()
132
+ resolve(id as Any)
133
+ }
134
+ }
135
+
136
+ @objc func getAttribution(_ resolve: @escaping RCTPromiseResolveBlock,
137
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
138
+ Task { @MainActor in
139
+ guard let attr = AppSprint.shared.getAttribution() else {
140
+ resolve(NSNull())
141
+ return
142
+ }
143
+ var dict: [String: Any] = [
144
+ "source": attr.source,
145
+ "confidence": attr.confidence,
146
+ ]
147
+ if let campaignName = attr.campaignName { dict["campaignName"] = campaignName }
148
+ if let utmSource = attr.utmSource { dict["utmSource"] = utmSource }
149
+ if let utmMedium = attr.utmMedium { dict["utmMedium"] = utmMedium }
150
+ if let utmCampaign = attr.utmCampaign { dict["utmCampaign"] = utmCampaign }
151
+ resolve(dict)
152
+ }
153
+ }
154
+
155
+ @objc func isInitialized(_ resolve: @escaping RCTPromiseResolveBlock,
156
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
157
+ Task { @MainActor in
158
+ resolve(AppSprint.shared.isInitialized)
159
+ }
160
+ }
161
+
162
+ @objc func isSdkDisabled(_ resolve: @escaping RCTPromiseResolveBlock,
163
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
164
+ Task { @MainActor in
165
+ resolve(AppSprint.shared.isSdkDisabled())
166
+ }
167
+ }
168
+
169
+ @objc func destroy(_ resolve: @escaping RCTPromiseResolveBlock,
170
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
171
+ Task { @MainActor in
172
+ AppSprint.shared.destroy()
173
+ resolve(nil)
174
+ }
175
+ }
176
+
177
+ // MARK: - Utility (device info, ATT)
178
+
179
+ @objc func getDeviceInfo(_ resolve: @escaping RCTPromiseResolveBlock,
180
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
181
+ Task { @MainActor in
182
+ let info = AppSprintNative.getDeviceInfo()
183
+ var dict: [String: Any] = [:]
184
+ if let m = info.deviceModel { dict["deviceModel"] = m }
185
+ if let w = info.screenWidth { dict["screenWidth"] = w }
186
+ if let h = info.screenHeight { dict["screenHeight"] = h }
187
+ if let l = info.locale { dict["locale"] = l }
188
+ if let t = info.timezone { dict["timezone"] = t }
189
+ if let o = info.osVersion { dict["osVersion"] = o }
190
+ if let v = info.idfv { dict["idfv"] = v }
191
+ if let a = info.idfa { dict["idfa"] = a }
192
+ if let token = info.adServicesToken { dict["adServicesToken"] = token }
193
+ resolve(dict)
194
+ }
195
+ }
196
+
197
+ @objc func getAdServicesToken(_ resolve: @escaping RCTPromiseResolveBlock,
198
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
199
+ let token = AppSprintNative.getAdServicesToken()
200
+ resolve(token as Any)
201
+ }
202
+
203
+ @objc func requestTrackingAuthorization(_ resolve: @escaping RCTPromiseResolveBlock,
204
+ rejecter reject: @escaping RCTPromiseRejectBlock) {
205
+ Task {
206
+ let authorized = await AppSprintNative.requestTrackingAuthorization()
207
+ resolve(authorized)
208
+ }
209
+ }
210
+ }
@@ -0,0 +1,44 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>AvailableLibraries</key>
6
+ <array>
7
+ <dict>
8
+ <key>BinaryPath</key>
9
+ <string>AppSprintSDK.framework/AppSprintSDK</string>
10
+ <key>LibraryIdentifier</key>
11
+ <string>ios-arm64</string>
12
+ <key>LibraryPath</key>
13
+ <string>AppSprintSDK.framework</string>
14
+ <key>SupportedArchitectures</key>
15
+ <array>
16
+ <string>arm64</string>
17
+ </array>
18
+ <key>SupportedPlatform</key>
19
+ <string>ios</string>
20
+ </dict>
21
+ <dict>
22
+ <key>BinaryPath</key>
23
+ <string>AppSprintSDK.framework/AppSprintSDK</string>
24
+ <key>LibraryIdentifier</key>
25
+ <string>ios-arm64_x86_64-simulator</string>
26
+ <key>LibraryPath</key>
27
+ <string>AppSprintSDK.framework</string>
28
+ <key>SupportedArchitectures</key>
29
+ <array>
30
+ <string>arm64</string>
31
+ <string>x86_64</string>
32
+ </array>
33
+ <key>SupportedPlatform</key>
34
+ <string>ios</string>
35
+ <key>SupportedPlatformVariant</key>
36
+ <string>simulator</string>
37
+ </dict>
38
+ </array>
39
+ <key>CFBundlePackageType</key>
40
+ <string>XFWK</string>
41
+ <key>XCFrameworkFormatVersion</key>
42
+ <string>1.0</string>
43
+ </dict>
44
+ </plist>
@@ -0,0 +1,3 @@
1
+ #import <Foundation/Foundation.h>
2
+ FOUNDATION_EXPORT double AppSprintSDKVersionNumber;
3
+ FOUNDATION_EXPORT const unsigned char AppSprintSDKVersionString[];