@doorstepai/dropoff-sdk 1.0.10 → 1.0.12
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.
- package/README.md +22 -9
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/doorstepai/dropoffsdk/DoorstepAIModule.kt +5 -0
- package/ios/DoorstepAI.swift +105 -92
- package/ios/DoorstepDropoffSDK.xcframework/Info.plist +5 -5
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/DoorstepDropoffSDK.framework/DoorstepDropoffSDK +0 -0
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/DoorstepDropoffSDK.framework/Headers/DoorstepDropoffSDK.h +1 -1
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/DoorstepDropoffSDK.framework/Info.plist +0 -0
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/arm64-apple-ios.abi.json +285 -184
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/arm64-apple-ios.private.swiftinterface +8 -15
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/arm64-apple-ios.swiftinterface +8 -15
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/DoorstepDropoffSDK.framework/_CodeSignature/CodeResources +13 -13
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/dSYMs/DoorstepDropoffSDK.framework.dSYM/Contents/Resources/DWARF/DoorstepDropoffSDK +0 -0
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/dSYMs/DoorstepDropoffSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/DoorstepDropoffSDK.yml +737 -823
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/DoorstepDropoffSDK +0 -0
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Headers/DoorstepDropoffSDK.h +1 -1
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Info.plist +0 -0
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/arm64-apple-ios-simulator.abi.json +285 -184
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +8 -15
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +8 -15
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/x86_64-apple-ios-simulator.abi.json +285 -184
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +8 -15
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/Modules/DoorstepDropoffSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +8 -15
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/DoorstepDropoffSDK.framework/_CodeSignature/CodeResources +23 -23
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/DoorstepDropoffSDK.framework.dSYM/Contents/Resources/DWARF/DoorstepDropoffSDK +0 -0
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/DoorstepDropoffSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/DoorstepDropoffSDK.yml +737 -823
- package/ios/DoorstepDropoffSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/DoorstepDropoffSDK.framework.dSYM/Contents/Resources/Relocations/x86_64/DoorstepDropoffSDK.yml +738 -823
- package/lib/module/DoorstepAI.js.map +1 -1
- package/lib/module/RootDoorstepAI.js +2 -2
- package/lib/module/RootDoorstepAI.js.map +1 -1
- package/lib/typescript/src/DoorstepAI.d.ts.map +1 -1
- package/lib/typescript/src/RootDoorstepAI.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/DoorstepAI.tsx +4 -1
- package/src/RootDoorstepAI.tsx +10 -3
package/README.md
CHANGED
|
@@ -31,7 +31,11 @@ import { RootDoorstepAI } from "@doorstepai/dropoff-sdk"
|
|
|
31
31
|
const App = () => {
|
|
32
32
|
return (
|
|
33
33
|
<View>
|
|
34
|
-
<RootDoorstepAI
|
|
34
|
+
<RootDoorstepAI
|
|
35
|
+
apiKey="YOUR_API_KEY_HERE"
|
|
36
|
+
notificationTitle="Some Notification Title"
|
|
37
|
+
notificationText="Some Notification Text"
|
|
38
|
+
/>
|
|
35
39
|
{/** Your App Components */}
|
|
36
40
|
)
|
|
37
41
|
}
|
|
@@ -39,6 +43,8 @@ const App = () => {
|
|
|
39
43
|
|
|
40
44
|
This sets the API key and initializes the SDK when the app launches.
|
|
41
45
|
|
|
46
|
+
The notification title/text is meant to be passed into the Foreground Service for Android. This alows for greater customization over exact text.
|
|
47
|
+
|
|
42
48
|
---
|
|
43
49
|
|
|
44
50
|
## 📲 Example Usage
|
|
@@ -176,17 +182,21 @@ To use the `@doorstepai/dropoff-sdk` effectively, you must include the appropria
|
|
|
176
182
|
In your `Info.plist`, include the following usage descriptions:
|
|
177
183
|
|
|
178
184
|
```xml
|
|
185
|
+
<!-- Location Usage Descriptions -->
|
|
179
186
|
<key>NSLocationWhenInUseUsageDescription</key>
|
|
180
|
-
<string>This app requires access to your location
|
|
181
|
-
|
|
182
|
-
<
|
|
183
|
-
<string>This app requires continuous location access to ensure accurate delivery tracking.</string>
|
|
184
|
-
|
|
185
|
-
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
|
|
186
|
-
<string>This app requires location access at all times to support delivery tracking.</string>
|
|
187
|
+
<string>This app requires access to your location for delivery tracking.</string>
|
|
188
|
+
<key>NSLocationAlwaysAndWhenInUseUsage</key>
|
|
189
|
+
<string>This app requires access to your location to provide continuous tracking even in the background.</string>
|
|
187
190
|
|
|
191
|
+
<!-- Optional: Motion & Sensor Data (if applicable) -->
|
|
188
192
|
<key>NSMotionUsageDescription</key>
|
|
189
|
-
<string>This app uses motion data to
|
|
193
|
+
<string>This app uses motion data to enhance delivery tracking accuracy.</string>
|
|
194
|
+
|
|
195
|
+
<!-- Background Location Mode -->
|
|
196
|
+
<key>UIBackgroundModes</key>
|
|
197
|
+
<array>
|
|
198
|
+
<string>location</string>
|
|
199
|
+
</array>
|
|
190
200
|
```
|
|
191
201
|
|
|
192
202
|
### 🤖 Android
|
|
@@ -200,6 +210,9 @@ In your `AndroidManifest.xml`, include the following permissions:
|
|
|
200
210
|
<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
|
|
201
211
|
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
|
|
202
212
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
213
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
214
|
+
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
215
|
+
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
203
216
|
|
|
204
217
|
<uses-feature android:name="android.hardware.sensor.accelerometer" />
|
|
205
218
|
<uses-feature android:name="android.hardware.sensor.gyroscope" />
|
package/android/build.gradle
CHANGED
|
@@ -86,7 +86,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion")
|
|
|
86
86
|
dependencies {
|
|
87
87
|
implementation "com.facebook.react:react-android"
|
|
88
88
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
89
|
-
implementation("ai.doorstep.com:doorstepai-dropoff-sdk:1.0.
|
|
89
|
+
implementation("ai.doorstep.com:doorstepai-dropoff-sdk:1.0.5")
|
|
90
90
|
api "org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1"
|
|
91
91
|
}
|
|
92
92
|
|
|
@@ -122,6 +122,11 @@ class DoorstepAIModule(private val reactContext: ReactApplicationContext) :
|
|
|
122
122
|
DoorstepAI.setAPIKey(key)
|
|
123
123
|
}
|
|
124
124
|
|
|
125
|
+
@ReactMethod
|
|
126
|
+
fun setDevMode(enabled: Boolean) {
|
|
127
|
+
DoorstepAI.devMode = enabled
|
|
128
|
+
}
|
|
129
|
+
|
|
125
130
|
companion object {
|
|
126
131
|
const val NAME = "DoorstepAI"
|
|
127
132
|
}
|
package/ios/DoorstepAI.swift
CHANGED
|
@@ -1,115 +1,128 @@
|
|
|
1
1
|
import Foundation
|
|
2
2
|
import React
|
|
3
3
|
import DoorstepDropoffSDK
|
|
4
|
+
import CoreLocation
|
|
4
5
|
|
|
5
6
|
@objc(DoorstepAI)
|
|
6
7
|
class DoorstepAIBridge: NSObject {
|
|
8
|
+
private let locationManager = CLLocationManager()
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
override init() {
|
|
11
|
+
super.init()
|
|
12
|
+
locationManager.showsBackgroundLocationIndicator = true
|
|
13
|
+
locationManager.allowsBackgroundLocationUpdates = true
|
|
14
|
+
locationManager.pausesLocationUpdatesAutomatically = false
|
|
15
|
+
|
|
16
|
+
// Request authorization
|
|
17
|
+
locationManager.requestAlwaysAuthorization()
|
|
18
|
+
|
|
19
|
+
}
|
|
12
20
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
21
|
+
@objc
|
|
22
|
+
static func requiresMainQueueSetup() -> Bool {
|
|
23
|
+
return true
|
|
24
|
+
}
|
|
17
25
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
26
|
+
@objc
|
|
27
|
+
func setDevMode(_ devModeEnabled: Bool) {
|
|
28
|
+
DoorstepAI.devMode = devModeEnabled
|
|
29
|
+
}
|
|
22
30
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
27
|
-
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
28
|
-
// Use Swift's concurrency support to call the async method.
|
|
29
|
-
Task {
|
|
30
|
-
do {
|
|
31
|
-
try await DoorstepAI.startDeliveryByPlaceID(placeID: placeID as String, deliveryId: deliveryId as String)
|
|
32
|
-
resolve(nil)
|
|
33
|
-
} catch {
|
|
34
|
-
reject("E_START_DELIVERY", "Failed to start delivery by Place ID: \(error.localizedDescription)", error)
|
|
35
|
-
}
|
|
31
|
+
@objc
|
|
32
|
+
func setApiKey(_ apiKey: String) {
|
|
33
|
+
DoorstepAI.setApiKey(key: apiKey)
|
|
36
34
|
}
|
|
37
|
-
}
|
|
38
35
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
36
|
+
@objc
|
|
37
|
+
func startDeliveryByPlaceID(_ placeID: NSString,
|
|
38
|
+
deliveryId: NSString,
|
|
39
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
40
|
+
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
41
|
+
// Use Swift's concurrency support to call the async method.
|
|
42
|
+
Task {
|
|
43
|
+
do {
|
|
44
|
+
try await DoorstepAI.startDeliveryByPlaceID(placeID: placeID as String, deliveryId: deliveryId as String)
|
|
45
|
+
resolve(nil)
|
|
46
|
+
} catch {
|
|
47
|
+
reject("E_START_DELIVERY", "Failed to start delivery by Place ID: \(error.localizedDescription)", error)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
51
50
|
}
|
|
52
|
-
}
|
|
53
51
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
let locality = address["locality"] as? String,
|
|
66
|
-
let administrativeAreaLevel1 = address["administrativeAreaLevel1"] as? String,
|
|
67
|
-
let postalCode = address["postalCode"] as? String else {
|
|
68
|
-
reject("E_INVALID_ADDRESS", "Missing or invalid fields in address dictionary.", nil)
|
|
69
|
-
return
|
|
52
|
+
@objc
|
|
53
|
+
func startDeliveryByPlusCode(_ plusCode: NSString,
|
|
54
|
+
deliveryId: NSString,
|
|
55
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
56
|
+
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
57
|
+
Task {
|
|
58
|
+
do {
|
|
59
|
+
try await DoorstepAI.startDeliveryByPlusCode(plusCode: plusCode as String, deliveryId: deliveryId as String)
|
|
60
|
+
resolve(nil)
|
|
61
|
+
} catch {
|
|
62
|
+
reject("E_START_DELIVERY", "Failed to start delivery by Plus Code: \(error.localizedDescription)", error)
|
|
70
63
|
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
71
66
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
67
|
+
@objc
|
|
68
|
+
func startDeliveryByAddress(_ address: [String: Any],
|
|
69
|
+
deliveryId: NSString,
|
|
70
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
71
|
+
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
72
|
+
Task {
|
|
73
|
+
print("Starting delivery by address: \(address)")
|
|
74
|
+
do {
|
|
75
|
+
guard let streetNumber = address["streetNumber"] as? String,
|
|
76
|
+
let route = address["route"] as? String,
|
|
77
|
+
let subPremise = address["subPremise"] as? String,
|
|
78
|
+
let locality = address["locality"] as? String,
|
|
79
|
+
let administrativeAreaLevel1 = address["administrativeAreaLevel1"] as? String,
|
|
80
|
+
let postalCode = address["postalCode"] as? String else {
|
|
81
|
+
reject("E_INVALID_ADDRESS", "Missing or invalid fields in address dictionary.", nil)
|
|
82
|
+
return
|
|
83
|
+
}
|
|
78
84
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
let addressStruct = AddressType(streetNumber: streetNumber,
|
|
86
|
+
route: route,
|
|
87
|
+
subPremise: subPremise,
|
|
88
|
+
locality: locality,
|
|
89
|
+
administrativeAreaLevel1: administrativeAreaLevel1,
|
|
90
|
+
postalCode: postalCode)
|
|
91
|
+
|
|
92
|
+
try await DoorstepAI.startDeliveryByAddressType(address: addressStruct, deliveryId: deliveryId as String)
|
|
93
|
+
resolve(nil)
|
|
94
|
+
} catch let error as DoorstepAIError {
|
|
95
|
+
reject("E_START_DELIVERY", "Failed to start delivery by address: \(error.localizedDescription)", error)
|
|
96
|
+
} catch {
|
|
97
|
+
reject("E_UNKNOWN", "An unexpected error occurred: \(error.localizedDescription)", error)
|
|
98
|
+
}
|
|
85
99
|
}
|
|
86
|
-
|
|
87
|
-
}
|
|
100
|
+
}
|
|
88
101
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
@objc
|
|
103
|
+
func newEvent(_ eventName: NSString,
|
|
104
|
+
deliveryId: NSString,
|
|
105
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
106
|
+
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
107
|
+
Task {
|
|
108
|
+
do {
|
|
109
|
+
try await DoorstepAI.newEvent(eventName: eventName as String, deliveryId: deliveryId as String)
|
|
110
|
+
resolve(nil)
|
|
111
|
+
} catch {
|
|
112
|
+
reject("E_NEW_EVENT", "Failed to send event: \(error.localizedDescription)", error)
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
103
116
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
117
|
+
@objc
|
|
118
|
+
func stopDelivery(_ deliveryId: NSString,
|
|
119
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
120
|
+
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
121
|
+
Task {
|
|
122
|
+
// stopDelivery does not throw so we simply await its completion
|
|
123
|
+
await DoorstepAI.stopDelivery(deliveryId: deliveryId as String)
|
|
124
|
+
resolve(nil)
|
|
125
|
+
}
|
|
112
126
|
}
|
|
113
|
-
}
|
|
114
127
|
|
|
115
128
|
}
|
|
@@ -10,15 +10,18 @@
|
|
|
10
10
|
<key>DebugSymbolsPath</key>
|
|
11
11
|
<string>dSYMs</string>
|
|
12
12
|
<key>LibraryIdentifier</key>
|
|
13
|
-
<string>ios-
|
|
13
|
+
<string>ios-arm64_x86_64-simulator</string>
|
|
14
14
|
<key>LibraryPath</key>
|
|
15
15
|
<string>DoorstepDropoffSDK.framework</string>
|
|
16
16
|
<key>SupportedArchitectures</key>
|
|
17
17
|
<array>
|
|
18
18
|
<string>arm64</string>
|
|
19
|
+
<string>x86_64</string>
|
|
19
20
|
</array>
|
|
20
21
|
<key>SupportedPlatform</key>
|
|
21
22
|
<string>ios</string>
|
|
23
|
+
<key>SupportedPlatformVariant</key>
|
|
24
|
+
<string>simulator</string>
|
|
22
25
|
</dict>
|
|
23
26
|
<dict>
|
|
24
27
|
<key>BinaryPath</key>
|
|
@@ -26,18 +29,15 @@
|
|
|
26
29
|
<key>DebugSymbolsPath</key>
|
|
27
30
|
<string>dSYMs</string>
|
|
28
31
|
<key>LibraryIdentifier</key>
|
|
29
|
-
<string>ios-
|
|
32
|
+
<string>ios-arm64</string>
|
|
30
33
|
<key>LibraryPath</key>
|
|
31
34
|
<string>DoorstepDropoffSDK.framework</string>
|
|
32
35
|
<key>SupportedArchitectures</key>
|
|
33
36
|
<array>
|
|
34
37
|
<string>arm64</string>
|
|
35
|
-
<string>x86_64</string>
|
|
36
38
|
</array>
|
|
37
39
|
<key>SupportedPlatform</key>
|
|
38
40
|
<string>ios</string>
|
|
39
|
-
<key>SupportedPlatformVariant</key>
|
|
40
|
-
<string>simulator</string>
|
|
41
41
|
</dict>
|
|
42
42
|
</array>
|
|
43
43
|
<key>CFBundlePackageType</key>
|
package/ios/DoorstepDropoffSDK.xcframework/ios-arm64/DoorstepDropoffSDK.framework/DoorstepDropoffSDK
CHANGED
|
Binary file
|