1. THE MESSAGE FROM APPLE
2.16 - Multitasking Apps may only use background services for their intended purposes: VoIP, audio playback, location, task completion, local notifications, etc.
Your app declares support for location in the UIBackgroundModes key in your Info.plist file but does not declare any features that require persistent location. Apps that declare support for location in the UIBackgroundModes key in your Info.plist file must have features that require persistent location.
Please revise your app to include features that require the persistent use of real-time location updates while the app is in the background. Please also add the following battery use disclaimer in your Application Description:
"Continued use of GPS running in the background can dramatically decrease battery life."
If your app does not require persistent real-time location updates, please remove the "location" setting from the UIBackgroundModes key. 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.
2. WHY APPLE SENT THIS MESSAGE
Apple sent you this message because the Geofence add-on is enabled in your app.
The background location is used so that your users can receive Geofence related push notifications even when the app is closed or in background (not just when the user is browsing it).
This is not visible for Apple, who may think the user of the background location is not justified.
3. TO VERIFY FIRST
If the Geofence add-on is activated in your app, you need to have at least one active geofence in the back office.
Verify in Users > GeoAlert > Geofences: you must have at least one active geofence with a green badge.
If there is no geofence or if all the geofences have an orange badge (meaning they are in draft), your app may be rejected. In this case, it's better to deactivate the Geofence add-on as long as it's not used (Add-Ons > Management).
When you have created the active location or deactivated the add-on, you will have to rebuild the app and submit the newest .ipa file to Apple.
The same goes if the iBeacon add-on is activated but no UUID has been set: you must set a UUID or deactivate the iBeacon add-on (Add-Ons > Management), then rebuild the app and submit the newest .ipa file to Apple.
4. IF YOU USE THE GEOFENCE ADD-ON
If the Geofence add-on is activated and everything is correctly set, you can answer Apple that:
“This app declares support for location in the UIBackgroundModes of the Info.plist file.
This is used by the app in order to send geo-targetted local notifications to the users who have enabled the notifications on their phone.
Besides, the user has a choice when he downloads the app to enable the background location settings all the time, only when the app is active, or never, without it affecting the general usage of the app.”
If the Beacon add-on is also activated, add this to the previous paragraph:
"This isn't related to beacon monitoring, and is only used for location monitoring."
Make sure you also explain Apple why the iBeacon is used in your app and what is the user experience when they receive a beacon-related notification. Answer in the Resolution Center and also put the explanation in the Notes on iTunes Connect.
Finally, follow Apple’s recommendation and include the following warning in your description on iTunes Connect : "Continued use of GPS running in the background can dramatically decrease battery life."
After that, just resubmit your existing app in your iTunes Connect account, and wait for Apple to review your app again.
5. IF YOU DON’T NEED THE GEOFENCE ADD-ON
If you haven't set any location / are currently not using the Geofence add-on, delete it from the menu ADD ONS > MANAGEMENT it must be removed completely from your add-ons, not just deactivated then compile the app again.
Then, send the newest .ipa file to Apple, and make sure you submit the latest file (which won’t contain the Geofence add-on anymore).