Search code examples
iosapp-storecore-locationappstore-approval

Apple disallowing background location tracking which is critical to business use case


We have an app that tracks riders in the field and as per their current location and some other parameters assign them deliveries. For this, even when the user is not currently using the app, background mode or device locked, we need to keep track of their location after every x seconds.

Now, we have explained the complete business use case to Apple but they keep coming back with the same response:

Thank you for information. We still need a demo video that shows a “Background Location” feature (Such as: turn-by-turn navigation, bread-crumbing) when the app runs in the background.

We still do not see a “Background Location” feature (Such as: turn-by-turn navigation, bread-crumbing) within your app in the demo video your provided. If the app does not have this feature, please kindly use the foreground location instead. please remove the “location” setting from the UIBackgroundModes key if your app does not require persistent real-time location updates. You may wish to use the significant-change location service or the region monitoring location service if persistent real-time location updates are not required for your app features.

I wonder how does Uber and other ride sharing/location based apps go around this app for their drivers


Solution

  • You haven't really asked a question above (likely why someone downvoted). You've mostly just posted a complaint about Apple's review process. You've not explained why it's critical to get it every few seconds. And you haven't mentioned why Apple's suggestions don't work/aren't good enough.

    Here are some general points around the area you have mentioned that should be useful

    1. Background location:
      If you want to allow your app users to close your app, you can use "significant-change location service" to allow your app to detect when the device has moved a lot, in a much more battery efficient way. You get ~10 seconds to ping a server and restart the request for the next time. Apple mentioned this in their response to you, please check it out: https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/LocationAwarenessPG/CoreLocation/CoreLocation.html

    2. "I wonder how does Uber and other ride sharing/location":
      They don't do what you are trying to do first of all, they encourage their drivers to keep the app open at all times for optimal performance. Again Apple mentioned this in their response. Your app is not providing any use to the app user while in the background and tracking location. So either keep the app open and track location (How to prevent screen lock on my application with swift on iOS) or, rely on significant change location events in the background

    3. Again as Apple said in their response, if 1 or 2 above doesn't address your needs (likely they do), you need to implement a feature such as turn by turn directions in the background, in order to justify why you need this data. Users also need the ability to turn this off, so that it can't be abused by the developers.

    Apple doesn't allow apps to just track whatever they want due to privacy issues. There is no way to get around this, you'll have to do one of the above.