Hide BLE devices from Genric BLE scanner apps - ios

Is there any way to hide BLE devices from Generic BLE scanning apps like BleExplr, LightBlue etc?

You can configure your peripheral to use service solicitation. In this mode the central offers services and the peripheral scans for them -refer to page 21 of this document - https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?doc_id=245130.
Note that even with service solicitation a Bluetooth analyser will be able to receive the service advertisement from the central but apps like LightBlue won't see it.

There is no way to hide BLE devices, The BLExplr and LightBlue are application using as center mode, these apps can find devices as BLE peripheral mode. As the BLE concept, the peripheral devices broadcast and allow to any center mode devices range to see them. Please see this link to get more information

Related

swift how to develop an app performing an actual bluetooth pair

The actual bluetooth pair I am talking about is: let the app shows up in the searching list of Bluetooth of System Settings and other devices can pair to it (like we pair our device to Apple Air Pods).
But all articles I find online are talking about BLE/CoreBluetooth, I don't think these methods could make a device name shows up in the Bluetooth of System Settings.So how to develop an app performing an actual bluetooth pair? Any ideas?
The Bluetooth preferences screen only shows legacy Bluetooth peripherals. Devices advertising BLE services do not appear.
Apps on iOS do not have the ability to create and advertise legacy Bluetooth services.
If you create an app that acts as a BLE peripheral, using Core Bluetooth, and specify that encryption is required for a characteristic then you will trigger a pairing process when an app acting as a Bluetooth central on the other device connects and attempts to read/write that characteristic. Note that this requires cooperating apps on both devices.

I want to connect to iPhone's BLE through my BLE device

The purpose of this task is to connect to iPhone's BLE through BLE device to access ANCS of iphone. Please note that there is no app installed in iPhone to turn ON BLE of iPhone.
So, If we enable Bluetooth from iPhone setting, will it enable BLE along with BT classic?
Yes, if you enable BLE on an iPhone, you are enabling BT classic as well. The reason for this is that BLE is just a subset of the whole Bluetooth radio, along with BT classic. Since they use the same physical radio and chip, there is no way to enable BLE without turning on BT classic or vice versa. That being said, there is very limited functionality of BT classic on iPhones and most of that is restricted to developers unless you join the MFi program.
For more information on the different Bluetooth subsets, please see this answer:-
Can a Bluetooth LE powered device discover a classic Bluetooth device and vice-versa?
Please note that you will always have to enable Bluetooth manually on an iPhone and there is no way to enable this automatically.
I hope this helps.

bluetooth low energy on standby mode in iOS?

I have read the docs about the BLE for iOS, and i could see that every device has its UUID instead of mac adress for the BLE.
My question ,in which there is no answer to on the docs, is- when you turn on the bluetooth on the device ( without opening any app) , so the device's bluetooth is on , what does it advertise then, and could I discover that device or get its UUID, while his bluetooth is on,but without any app that is open.
I am pretty sure that when the BLE is on, you can discover that device, or awake him, but I wonder what data can I get from him while its on without an app .
(same for Android.. )
iOS does not advertise any Bluetooth Low Energy services that are visible to another iOS device without an app running. Once an app advertises a service you will see additional services available - device information, time service, battery level.
If you are using different Bluetooth hardware to scan then you may see some advertisements without an app but the reported UUID of an iOS device changes every 15 minutes for privacy reasons - See this answer - Corebluetooth, How to get a unique UUID?

Is there work background services for Bluetooth low energy (BLE) on iOS?

I would like do coding in ios with Bluetooth low energy(BLE). i wanting to show notification of new BLE device while app background. is possible do it? I bought BLE Device from sensor tag site.
Yes, it is possible both in central and peripheral mode. You should declare the necessary permissions in your Info.plist and then you can search for one specific service in the background with the standard method scanForPeripheralsWithServices:options: of CBCentralManager Start with reading the docs of Apple.

Are all the devices which support BLE 4.0 can be connected in my iOS devices which support BLE 4.0?

About Bluetooth Low Energy. I know iPhone 4S, iPhone 5, iPad 3 with iOS 5.1 and above support BLE 4.0. And I read the sample code TemperatureSensor from Apple. My question is what is the requirement for the sensors? In another words, what kind of sensors can be connected in this application? Are all the devices which support BLE 4.0 can be connected in my iOS devices which support BLE 4.0?
BLE communication is based on GATT (General Attributes), which is essentially an exchanges of the values of different characteristics under a service. If you've read the TemperatureSensor sample code, you must have seen that it starts to discover devices according to a service UUID, and then read/write characteristics, still based on UUID, under the service. Therefore, as long as the sensor supports BLE and you know about its services (its UUID, its characteristics and properties), you can program your iOS app to communicate with it. Some of the services are 'pre-defined' by Bluetooth SIG, so you can find the information of these services on Bluetooth SIG website.
Yes, you can connect any BLE device to a BLE supported iOS device.
In regards to the example code you're talking about, it looks for a specific service UUID for temperature sensors:
[centralManager scanForPeripheralsWithServices:uuidArray options:options];
Being as there are no temperature sensors on the market that I could find, you may want to use nil to scan for any and all devices:
[centralManager scanForPeripheralsWithServices:nil options:options];
To experiment with this, you can use the app LightBlue or iTunes Link which lets you turn your iPhone into a peripheral with any services / characteristics you define.

Resources