Background BLE beacon region monitoring not working in iOS 15 which was previously working on iOS 14

My iOS app has BLE beacons detection in it. Which means If user has bluetooth and location on and if user enters the range of a beacon, system automatically awakes the app If it was not running (killed state).

This was working fine on iOS 14 and below. Yesterday I updated my device to iOS 15 and app no longer gets awoken while entering a BLE beacon region even If I have enabled "Always" location permission in the settings.

Any thoughts ?

Post not yet marked as solved Up vote post of aliraza0801 Down vote post of aliraza0801
6.4k views
  • Apple has just confirmed this to me that this is a known issue in iOS 15 and it should be fixed in iOS 15.1. We are experiencing the same issue, so fingers crossed.

  • Hey @Scott,

    How did you get to know from Apple that this is an issue in iOS 15 ? Did you mean 15.1 or 15.0.1 which has just been released.

  • Hey @Scott--R,

    Did you hear back from Apple on this issue? Have you found any solution ?

Replies

I have the same issue and it is not yet fixed in iOS 15.1.

Post not yet marked as solved Up vote reply of Onit Down vote reply of Onit

Same issue here. Very inconsistent behaviour, which we also hear from our users.

Our app starts in the background when it enters our Bluetooth beacon region and starts scanning. When the iPhone is right next to the device, it still finds zero peripherals sometimes. Our users also give this feedback, where on iOS 14 versions it worked near-100% of the time, where now it is very inconsistent.

So concretely, it doesn't call didDiscover peripheral after using scanForPeripherals. We give the service identifier of the device to the init of the CBCentralManager via the CBCentralManagerOptionRestoreIdentifierKey and also use that identifier as a parameter withServices for the scanForPeripherals method.

I've reproduced this locally a couple of times on iOS 15.1, where the scanning doesn't return anything for more than 20 seconds. Then, a couple of seconds after that, we get a trigger again didEnterRegion and start scanning, which finds the same device within a couple of seconds.

  • Going to report the bug, but it's hard to reproduce so a demo project would be hard to do. Probably need to send a TSI and try to reproduce the issue a lot with some extra logging profiles for a sysDiagnose

Add a Comment

I have the same issue with our app. I'm testing with iOS 15.2 beta right now and the problem still exists. Usually you can turn off location services and turn it back on and it works again for a few hours (which of course is not the solution). (I have the same problem with Location Events since iOS 15, I suspect this is related).

The issue is still not fixed in iOS 15.2 final. :(

In our extensive bug report about this issue (beacon monitoring specifically) the status has been updated to 'Potential fix identified - For a future OS update'.

Same problem here. Still persists in iOS 15.2.

It is now update ios 15.3 version. My app still has that problem. Any solution?

Still not working on iOS 15.4. Are there any release notes from Apple restricting this feature from running in the background?

Just tested: still not fixed as of 15.5. If you manually kill the app, it immediately stops scanning, unlike in pre-iOS15 times.

We have same issues.

Sometimes a correct iBeacon does not start the app :(

When it fails it is often after many hours of not using our app.

Before iOS 15 if worked every time.

In AppDelegate's 'func application(_ application: UIApplication, didFinishLaunchingWithOptions             launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {'

I log the list of ibeacons the app is listening for, and if i start the app manually, after it did not automatically start, our ibeacon is listed. So the Phone knows it should react, but is not.

We have same trouble with iBeacon and iOS 15.5. Sometimes the app is startet in the background and didEnterRegion is working fine. But without any changes, some hours later, the app is not triggered when the app comes into the region of the iBeacon

Same Problem here ... Ranging/Scanning beacons seems to stop after a few minutes when the app is placed in background (even if we don't kill it).

Does anyone have found a solution or know if this "problem" is gonna be resolved in IOS16 ?

Same issue here with multiple iOS 15.X phones while iOS 14.2 does work (instant when pluggin in an iBeacon). On iPhone 15 it only sometimes(!) work if you keep the app open/in the foreground and turn off the screen.

I've also tried to figure out if Apple changed policy and doesnt allow background iBeacon scanning any more (which would be very bad), but so far I did not find such release notes.

How unbelievable it might be, it seems like (background) beacon scanning is just completely broken for almost 1 year already. Back then Apple also didnt address the major geofence issues that happened back then. Fixing that geofence bug took months (it broken smart homes, security apps, door lock apps, etc, it was insane) and Apple also never took responsibility for it. No release note or bug update mentioned it.

I guess this Bluetooth iBeacon monitoring bug is very similair since it's part of the same monitoring logic with in the 'core location' framework.