appsprint-react-native 1.0.4 → 1.1.1

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 (24) hide show
  1. package/README.md +3 -3
  2. package/android/libs/appsprint-sdk.aar +0 -0
  3. package/android/src/main/AndroidManifest.xml +1 -0
  4. package/android/src/main/kotlin/com/appsprint/AppSprintBridgeModule.kt +30 -0
  5. package/ios/AppSprintBridge.swift +26 -0
  6. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/AppSprintSDK +0 -0
  7. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios.abi.json +2183 -160
  8. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios.package.swiftinterface +30 -1
  9. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +30 -1
  10. package/ios/AppSprintSDK.xcframework/ios-arm64/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios.swiftinterface +30 -1
  11. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/AppSprintSDK +0 -0
  12. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +2183 -160
  13. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios-simulator.package.swiftinterface +30 -1
  14. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +30 -1
  15. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +30 -1
  16. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +2183 -160
  17. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/x86_64-apple-ios-simulator.package.swiftinterface +30 -1
  18. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +30 -1
  19. package/ios/AppSprintSDK.xcframework/ios-arm64_x86_64-simulator/AppSprintSDK.framework/Modules/AppSprintSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +30 -1
  20. package/lib/typescript/types.d.ts +26 -0
  21. package/package.json +1 -1
  22. package/plugin/build/index.js +1 -0
  23. package/plugin/src/index.ts +1 -0
  24. package/src/types.ts +26 -0
package/README.md CHANGED
@@ -31,7 +31,7 @@ The native pod is vendored inside the package, so no extra repository setup is n
31
31
 
32
32
  ### Android
33
33
 
34
- Auto-linking handles the Android side. The package's manifest declares `INTERNET` and `com.google.android.gms.permission.AD_ID`, which merge into your app at build time.
34
+ Auto-linking handles the Android side. The package's manifest declares `INTERNET`, `ACCESS_NETWORK_STATE`, and `com.google.android.gms.permission.AD_ID`, which merge into your app at build time.
35
35
 
36
36
  ### Expo
37
37
 
@@ -218,7 +218,7 @@ The native Android SDK reads GAID during install registration, off the main thre
218
218
 
219
219
  The vendored iOS framework ships a `PrivacyInfo.xcprivacy` manifest declaring `UserDefaults` access plus `DeviceID`, `ProductInteraction`, `UserID`, `CoarseLocation`, and `OtherDataTypes` collection, all marked `Tracking: true`, with `api.appsprint.app` listed as a tracking domain.
220
220
 
221
- For Android, include advertising ID collection, device IDs, app activity, and (if you set `customerUserId`) user ID in your Play Console Data safety answers.
221
+ For Android, include advertising ID collection, device IDs, approximate location/network-derived country, device or other identifiers, app activity, and (if you set `customerUserId`) user ID in your Play Console Data safety answers.
222
222
 
223
223
  Don't pass raw PII through `params` or `customerUserId`. Both persist to native storage for retry durability. Use hashed or opaque identifiers instead (SHA-256 of an email, RevenueCat or Superwall `app_user_id`, your internal user UUID).
224
224
 
@@ -265,7 +265,7 @@ import { AppSprint } from "appsprint-react-native";
265
265
  import { NativeAppSprint } from "appsprint-react-native";
266
266
  ```
267
267
 
268
- - `getDeviceInfo()` returns the device fingerprint payload.
268
+ - `getDeviceInfo()` returns the attribution device signal payload.
269
269
  - `getAdServicesToken()` returns Apple's AdServices token on iOS; `null` on Android.
270
270
  - `requestTrackingAuthorization()` shows the ATT prompt on iOS; resolves `true` on Android.
271
271
 
Binary file
@@ -1,5 +1,6 @@
1
1
  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
2
  package="com.appsprint">
3
3
  <uses-permission android:name="android.permission.INTERNET" />
4
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
4
5
  <uses-permission android:name="com.google.android.gms.permission.AD_ID" />
5
6
  </manifest>
@@ -252,6 +252,36 @@ class AppSprintBridgeModule(reactContext: ReactApplicationContext) : ReactContex
252
252
  deviceInfo.deviceModel?.let { info.putString("deviceModel", it) }
253
253
  deviceInfo.screenWidth?.let { info.putInt("screenWidth", it) }
254
254
  deviceInfo.screenHeight?.let { info.putInt("screenHeight", it) }
255
+ deviceInfo.nativeScreenWidth?.let { info.putInt("nativeScreenWidth", it) }
256
+ deviceInfo.nativeScreenHeight?.let { info.putInt("nativeScreenHeight", it) }
257
+ deviceInfo.screenScale?.let { info.putDouble("screenScale", it) }
258
+ deviceInfo.hardwareConcurrency?.let { info.putInt("hardwareConcurrency", it) }
259
+ deviceInfo.processorCount?.let { info.putInt("processorCount", it) }
260
+ deviceInfo.maxTouchPoints?.let { info.putInt("maxTouchPoints", it) }
261
+ deviceInfo.memoryGb?.let { info.putInt("memoryGb", it) }
262
+ deviceInfo.lowPowerMode?.let { info.putBoolean("lowPowerMode", it) }
263
+ deviceInfo.batteryState?.let { info.putString("batteryState", it) }
264
+ deviceInfo.batteryLevelBucket?.let { info.putString("batteryLevelBucket", it) }
265
+ deviceInfo.preferredLanguages?.let { languages ->
266
+ val array = Arguments.createArray()
267
+ languages.forEach { array.pushString(it) }
268
+ info.putArray("preferredLanguages", array)
269
+ }
270
+ deviceInfo.timezoneOffsetMinutes?.let { info.putInt("timezoneOffsetMinutes", it) }
271
+ deviceInfo.deviceManufacturer?.let { info.putString("deviceManufacturer", it) }
272
+ deviceInfo.deviceBrand?.let { info.putString("deviceBrand", it) }
273
+ deviceInfo.deviceProduct?.let { info.putString("deviceProduct", it) }
274
+ deviceInfo.deviceHardware?.let { info.putString("deviceHardware", it) }
275
+ deviceInfo.gpuVendor?.let { info.putString("gpuVendor", it) }
276
+ deviceInfo.gpuRenderer?.let { info.putString("gpuRenderer", it) }
277
+ deviceInfo.connectionType?.let { info.putString("connectionType", it) }
278
+ deviceInfo.networkType?.let { info.putString("networkType", it) }
279
+ deviceInfo.carrierName?.let { info.putString("carrierName", it) }
280
+ deviceInfo.carrierCountryCode?.let { info.putString("carrierCountryCode", it) }
281
+ deviceInfo.mobileCountryCode?.let { info.putString("mobileCountryCode", it) }
282
+ deviceInfo.mobileNetworkCode?.let { info.putString("mobileNetworkCode", it) }
283
+ deviceInfo.sdkPlatform?.let { info.putString("sdkPlatform", it) }
284
+ deviceInfo.sdkVersion?.let { info.putString("sdkVersion", it) }
255
285
  deviceInfo.locale?.let { info.putString("locale", it) }
256
286
  deviceInfo.timezone?.let { info.putString("timezone", it) }
257
287
  deviceInfo.osVersion?.let { info.putString("osVersion", it) }
@@ -202,6 +202,32 @@ class AppSprintBridge: NSObject {
202
202
  if let m = info.deviceModel { dict["deviceModel"] = m }
203
203
  if let w = info.screenWidth { dict["screenWidth"] = w }
204
204
  if let h = info.screenHeight { dict["screenHeight"] = h }
205
+ if let w = info.nativeScreenWidth { dict["nativeScreenWidth"] = w }
206
+ if let h = info.nativeScreenHeight { dict["nativeScreenHeight"] = h }
207
+ if let scale = info.screenScale { dict["screenScale"] = scale }
208
+ if let concurrency = info.hardwareConcurrency { dict["hardwareConcurrency"] = concurrency }
209
+ if let count = info.processorCount { dict["processorCount"] = count }
210
+ if let touch = info.maxTouchPoints { dict["maxTouchPoints"] = touch }
211
+ if let memory = info.memoryGb { dict["memoryGb"] = memory }
212
+ if let lowPower = info.lowPowerMode { dict["lowPowerMode"] = lowPower }
213
+ if let state = info.batteryState { dict["batteryState"] = state }
214
+ if let bucket = info.batteryLevelBucket { dict["batteryLevelBucket"] = bucket }
215
+ if let languages = info.preferredLanguages { dict["preferredLanguages"] = languages }
216
+ if let offset = info.timezoneOffsetMinutes { dict["timezoneOffsetMinutes"] = offset }
217
+ if let value = info.deviceManufacturer { dict["deviceManufacturer"] = value }
218
+ if let value = info.deviceBrand { dict["deviceBrand"] = value }
219
+ if let value = info.deviceProduct { dict["deviceProduct"] = value }
220
+ if let value = info.deviceHardware { dict["deviceHardware"] = value }
221
+ if let value = info.gpuVendor { dict["gpuVendor"] = value }
222
+ if let value = info.gpuRenderer { dict["gpuRenderer"] = value }
223
+ if let value = info.connectionType { dict["connectionType"] = value }
224
+ if let value = info.networkType { dict["networkType"] = value }
225
+ if let value = info.carrierName { dict["carrierName"] = value }
226
+ if let value = info.carrierCountryCode { dict["carrierCountryCode"] = value }
227
+ if let value = info.mobileCountryCode { dict["mobileCountryCode"] = value }
228
+ if let value = info.mobileNetworkCode { dict["mobileNetworkCode"] = value }
229
+ if let value = info.sdkPlatform { dict["sdkPlatform"] = value }
230
+ if let value = info.sdkVersion { dict["sdkVersion"] = value }
205
231
  if let l = info.locale { dict["locale"] = l }
206
232
  if let t = info.timezone { dict["timezone"] = t }
207
233
  if let o = info.osVersion { dict["osVersion"] = o }