bluetooth-le
bluetooth-le copied to clipboard
iOS 16.4.1 Scan doesn't return service uuids
Up to iOS version 16.4.1 a BLE Scan without setting a filter for service ids would return devices with the service uuids from the advertisement. This behavior has changed and in version 16.4.1 the uuids are no longer returned.
Applying a filter for service uuids fixes thew problem. For background: we have a cross platform app and had to disable filters, because some older Android devices do not support filtering for services (they will simply not find any devices).
It may be related to my #527 issue (missing local name in scan response). Somebody made the suggestion of trying allowDuplicates=true in the scan options. You will get duplicates but I am now able to see the local name.
Thanks for the quick reply, I can confirm that I do have the issue with local name as well, but it's not a problem in my case. Thanks for the hint with allowDuplicates. I use it sometimes for a subset of devices that send state info in the advertisments, but I wouldn't want to use it for everything. Gladly, I was able to fix my problem by applying a uuid filter when on iOS. I hope that the App Store review is fast this time, because we have angry customers and it costs us real money.
One of the problems with the issue is, that it doesn't occur on all devices. On my iPhone 11 Pro Max that I usually use for testing the issue doesn't appear. I think the reason might be that Apple caches some information about devices like the device name and service uuids. If you have scanned the device before the upgrade to 16.4.1 the information is in the cache and everything seems to work, whereas new users of the app would experience the issue.
I was only able to reproduce the issue after I used an iPhone that didn't have our app installed before.
I suspect this and the local name issue is not a bug in bluetooth-le, but rather in iOS bluetooth core: https://developer.apple.com/forums/thread/728842
@eppleton iOS caches a lot of data about previously seen Bluetooth devices. To fully clear the caches, I believe you need a full phone factory reset to avoid the caching behaviour there for advertising packets.
Still an issue, is there any workaround on this?
Somebody made the suggestion of trying allowDuplicates=true in the scan options. You will get duplicates but I am now able to see the local name.
Yeah tried that one but still the same Name is partially correct and when adding any other type of filter like optionalServices devices wont be visible anymore
Hi, I am facing a similar issue. The number of UUIDs returned from iOS is smaller than from Android. Is there any progress on this? Is there anything I can help with?