The app uses Bluetooth to discover other users and uses the internet for subsequent communication between those users. This functionality is enabled by Google Nearby messages, in the app.
The Core Bluetooth background execution modes were declared by adding the UIBackgroundModes key to the Info.plist file and setting the key’s value to bluetooth-central & bluetooth-peripheral.
The intent is to enable the app to act as a beacon (advertising BLE message) while it is in the background. While in the foreground, the app is both transmitting and receiving.
Apple’s review notes
“Your app declares support for bluetooth-central and
bluetooth-peripheral in the UIBackgroundModes key in your Info.plist, but does not provide Bluetooth Low Energy functionality. The Bluetooth Background modes are for applications that communicate to other devices using Bluetooth Low Energy and the Core Bluetooth framework.
To resolve this issue, please revise your app to add support for Bluetooth Low Energy communication through Core Bluetooth in your application or remove the bluetooth- values from the UIBackgroundModes key.”
Purpose : Users must be able to be discovered even when their phone is sleeping, or tucked away in their pocket, or when the app is in the background. So long as the USER CHOOSES to be discoverable (by switching on discoverability) other users should be able to detect and interact with them.
Reason for using Bluetooth in the background : When discoverability is turned on and the app is moved to the background, Bluetooth background is used only for advertising (advertising transmission under Bluetooth protocol) to other users in proximity – this enables the core functionality of being discoverable to users near you. Does anyone have an idea why the rejection cites given the core functionality of the app is to detect users in proximity.
We currently have both bluetooth-central and bluetooth-peripheral are key values. Since the background use of the app is limited to broadcasting only and not scanning for others, if we use bluetooth-peripheral only instead of both bluetooth-central and bluetooth-peripheral – would that be more aligned with the app’s proposition ?
This is our working theory. Any guidance would be very helpful.
The Core Bluetooth background execution modes were declared by adding the UIBackgroundModes key to the Info.plist file and setting the key’s value to bluetooth-central & bluetooth-peripheral.
The intent is to enable the app to act as a beacon (advertising BLE message) while it is in the background. While in the foreground, the app is both transmitting and receiving.
Apple’s review notes
“Your app declares support for bluetooth-central and
bluetooth-peripheral in the UIBackgroundModes key in your Info.plist, but does not provide Bluetooth Low Energy functionality. The Bluetooth Background modes are for applications that communicate to other devices using Bluetooth Low Energy and the Core Bluetooth framework.
To resolve this issue, please revise your app to add support for Bluetooth Low Energy communication through Core Bluetooth in your application or remove the bluetooth- values from the UIBackgroundModes key.”
Purpose : Users must be able to be discovered even when their phone is sleeping, or tucked away in their pocket, or when the app is in the background. So long as the USER CHOOSES to be discoverable (by switching on discoverability) other users should be able to detect and interact with them.
Reason for using Bluetooth in the background : When discoverability is turned on and the app is moved to the background, Bluetooth background is used only for advertising (advertising transmission under Bluetooth protocol) to other users in proximity – this enables the core functionality of being discoverable to users near you. Does anyone have an idea why the rejection cites given the core functionality of the app is to detect users in proximity.
We currently have both bluetooth-central and bluetooth-peripheral are key values. Since the background use of the app is limited to broadcasting only and not scanning for others, if we use bluetooth-peripheral only instead of both bluetooth-central and bluetooth-peripheral – would that be more aligned with the app’s proposition ?
This is our working theory. Any guidance would be very helpful.