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

  1. Test your integration using the raiseMockAccident method on the ZendriveTest class. This creates a fake collision and invokes the processAccidentDetected handler in the ZendriveDelegateProtocol. This requires that the SDK is set up and a trip is currently in progress.

  2. Invoke the raiseMockAccident method on the ZendriveTest class with ZendriveAccidentConfidenceHigh and verify that the workflow implemented is working as expected.

  3. Invoke the raiseMockAccident method on ZendriveTest class with ZendriveAccidentConfidenceLow and verify that the workflow implemented is working as expected.

  4. Help improve Zendrive by providing collision detection information by calling the addEventOccurrenceWithDriveId method on the ZendriveFeedback class.

  5. 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.

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

  1. Add NSLocationAlwaysUsageDescription in your Info.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.

  2. 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 your Info.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?