dotnet-bluetooth-le icon indicating copy to clipboard operation
dotnet-bluetooth-le copied to clipboard

Device name not visible with iOS 16.4+

Open carlh98 opened this issue 2 years ago • 7 comments

Hi, in the app, I use await _bluetoothLE.Adapter.StartScanningForDevicesAsync(); to search for devices.

Since I updated my iPhone with iOS 16.4.1, I can't see my ble device in the discovered list. When I test with my another iPhone with iOS 15, I can see the name of the ble device.

Expected behavior

I should see the name of the device I want to connect

Actual behavior

I do not see the name of the device I want to connect

Configuration

Version of the Plugin: e.g. 3.0.0-beta.3

Platform: e.g. iOS 16.4.1

carlh98 avatar Jun 15 '23 22:06 carlh98

Hi @carlh98,

I'm the friendly issue checker. It seems like (37.50 %) you haven't used our issue template :cry: I think it is very frustrating for the repository owners, if you ignore them.

If you think it's fine to make an exception, just ignore this message. But if you think it was a mistake to delete the template, please close the issue and create a new one.

Thanks!

smsissuechecker avatar Jun 15 '23 22:06 smsissuechecker

Looking online, iPhone made a Bluetooth security fix, I think it's related to the issue that I'm having.

carlh98 avatar Jun 15 '23 22:06 carlh98

I have not seen any problems with device discovery on iOS 16. IIUC the problem only occurs with a specific remote device? (If yes, which kind of device is that?) Or do you have problem discovering any remote device?

janusw avatar Jul 03 '23 07:07 janusw

@janusw yes it's a specific device, it's a custom BLE sensor. I'll send a message to the manufacturers to see if they can do something about it.

Looks like iOS 16.4+ is causing issue to other devs https://developer.apple.com/forums/thread/728842

carlh98 avatar Jul 18 '23 17:07 carlh98

If there's nothing we can do on the side of Plugin.BLE, we can close this issue

carlh98 avatar Jul 18 '23 17:07 carlh98

Looks like my issue is related to https://github.com/dotnet-bluetooth-le/dotnet-bluetooth-le/issues/468

carlh98 avatar Aug 10 '23 20:08 carlh98

Esteemed Quorum, please permit me to post a question related to iOS operations with the Bluetooth Plugin. Firstly, my client and I use your product successfully on both Android and iOS 15. Sadly, on iOS 16, our scans fail to return the device names.

Steps to reproduce

I have already read up a bit on the Apple forums, and this seems to be a widely known problem. For solving it, it is said that a parameter allowing duplicate results has to be set.

Having looked for the parameter, I found this file: https://github.com/dotnet-bluetooth-le/dotnet-bluetooth-le/blob/master/Source/Plugin.BLE/Apple/Adapter.cs

Sadly, I am not sure how to affect the allowDuplicates flag:


        protected override async Task StartScanningForDevicesNativeAsync(ScanFilterOptions scanFilterOptions, bool allowDuplicatesKey, CancellationToken scanCancellationToken)
        {
#if NET6_0_OR_GREATER || MACCATALYST
            await WaitForState(CBManagerState.PoweredOn, scanCancellationToken).ConfigureAwait(false);
#else

Furthermore, I also saw the @janusw commit at https://github.com/dotnet-bluetooth-le/dotnet-bluetooth-le/pull/711. Sadly, neither me nor my client know how to use GitHub well, and are desperate.

How can we aid in fixing the issue at hand? We have already raised issues with both Espressif and Apple.

Expected behavior

The iOS 16 version of the app should behave like iOS 15

Actual behavior

No device names are returned

Crashlog

n/a. No crash takes place

Configuration

Version of the Plugin: e.g. 1.0.0 / 1.0.1-alpha3 3.0.0 rc1

Platform: iOS 15 and Android 13 work iOS 16 does not work

Device: American iPhone SE running iOS 16

TAMHAN avatar Oct 01 '23 00:10 TAMHAN