iOS Checklist and FAQ
Integration Checklist
We recommend that you use the following integration test checklist to verify that the integration is working as intended:
Collision Detection Checklist
Test your integration using the
raiseMockAccident
method on theZendriveTest
class. This creates a fake collision and invokes theprocessAccidentDetected
handler in theZendriveDelegateProtocol
. This requires that the SDK is set up and a trip is currently in progress.Invoke the
raiseMockAccident
method on theZendriveTest
class withZendriveAccidentConfidenceHigh
and verify that the workflow implemented is working as expected.Invoke the
raiseMockAccident
method onZendriveTest
class withZendriveAccidentConfidenceLow
and verify that the workflow implemented is working as expected.Help improve Zendrive by providing collision detection information by calling the
addEventOccurrenceWithDriveId
method on theZendriveFeedback
class.Refer to the sample workflow for collision detection below and verify that the implementation is as per your business needs. If you use the dual notification system, refer to our full Collision guide.

Best Practices
1. Don't switch to the main thread for callbacks.
Zendrive provides all callbacks on the main thread. Therefore the user should avoid switching to the main thread for handling callbacks, since it might cause a deadlock.
2. Use the recommended version of AWS libraries.
AWS is known to break APIs even on minor version updates. Please ensure that your application is using the recommended version of AWS Libraries for Zendrive 7.2.0
is AWS 2.11.1 or greater
.
3. Keep Geofences Free for Zendrive SDK.
Zendrive SDK requires at least 1 geofence for trip detection. If you're using advanced trip detection (on-demand service), the SDK requires 9 geofences to operate.
4. Upload Debug Data.
Debug data helps us improve the Zendrive SDK. Your application should contain a prompt or a CTA for the user to upload debug data.
Call the function below to send a debug report of the current driver to Zendrive. Zendrive SDK will create a background task to ensure completion of this upload task.
//Swift
Zendrive.uploadAllDebugDataAndLogs()
//Objective-C
[Zendrive uploadAllDebugDataAndLogs];
App Store Checklist
Add
NSLocationAlwaysUsageDescription
in yourInfo.plist
. This key contains text which is shown to the user while requesting access to location. It should explain why your application is asking for the Always authorization location permission.Include your reason for needing to access location services in the metadata when uploading your app for review. Otherwise, Apple might reject it. According to the App Store Review Guidelines, using background mode should enhance the functionality of an application. Zendrive SDK requires you to declare the support for location in the
UIBackgroundModes
key in yourInfo.plist
. Let Apple reviewers know which feature in your app requires real-time location updates via the Zendrive SDK, and explain why this cannot be replaced by the significant-change location service or the region monitoring location service.
For example, suppose your app helps users keep track of their trips for expense reporting. You could say that you need to always know the user's location because you need to track every trip, so the user doesn't need to fiddle with your application before each one. This justifies the need to use the Always location authorization.
Or, if you are an on-demand flower delivery service, you might always need to know the driver's location even when they're not actively using the application so that you know where they are.
Having trouble with the App Store review process? Contact us.
Was this helpful?