- Connecting to a Bluetooth device from iOS, no MFi
- 2 Answers 2
- Are all the devices which support BLE 4.0 can be connected in my iOS devices which support BLE 4.0?
- 2 Answers 2
- В iOS появилась возможность изменить тип устройства Bluetooth. Как это сделать
- Зачем менять тип Bluetooth-устройства на iPhone
- Как изменить тип устройства Bluetooth в iOS
- Нужно ли выключать Wi-Fi и Bluetooth на iPhone
- Лонгриды для вас
- Is there a way to access Bluetooth 4.0 Low Energy devices in iOS?
- 3 Answers 3
Connecting to a Bluetooth device from iOS, no MFi
The vibe I’m getting from Stackoverflow and the internet at large is that unless I’m using an LE device, any Bluetooth device I make for an iOS app must be MFi certified. However, on the MFi FAQ page, I found this line:
. developers of accessories that rely solely on standard technology (e.g., Bluetooth Low Energy or standard Bluetooth profiles) do not need to join the MFi Program.
My device will be able to use the standard Bluetooth profile File Transfer Protocol (FTP). Now this sounds like some conflicting advice to me, or perhaps I’m just not understanding correctly. So, having provided the above evidence, I’m just going to ask outright: Can I write and publish an iOS app that connects to a proprietary Bluetooth device using the standard Bluetooth profile FTP without certifying my device as MFi? And if so, what details, caveats, etc do I need to know?
It seems like everyone says MFi is required. I’m hoping someone can help me figure out what this line in the FAQ means.
2 Answers 2
The new Bluetooth 4.0 Low Energy (hereafter BLE 4.0) specification which is implemented in Apple’s latest iOS devices does allow one to create app-specific profiles and connect to BLE 4.0 devices without jailbreaking, using an approved Bluetooth 2.1 profile, or becoming part of Apple’d MFI program and using the previously required MFI cryptographic chips.
In other words with the proper BLE 4.0 compatible bluetooth radios you can create wireless devices that connect to iOS apps without having the device pre-approved by Apple. However, you must write a custom app for the device, and Apple still holds the ability to reject that app if they want to. So they still control this to a great degree. This is essentially Apple’s answer to the Android ADK, while not fully relinquishing the ability to shut down apps and devices they don’t like.
Your app must include specific XML schema for your app’s bluetooth profile, and use CoreBluetoothFramework APIs, so it’s very obvious to Apple during the app approval process that your app connects to a device. If your app does not work without the device present, then it’s likely to be rejected if you are not part of the MFI program, as Apple cannot test the app without your device. The apps that appear to be successful in passing this test use the device as an accessory to app functionality, rather than a requirement. For instance an exercise app might connect to a BLE 4.0 heart rate monitor, but the app doesn’t depend on it.
Some apps seem to be getting around this by displaying simulated, or online information in place of the device information when no device is present. Thus the app can be tested without the device, and functionally works when the device is present.
You can find out some successful efforts online:
BlueGiga in particular has been pushing their devices specifically for this use, so there are probably forums and support for this elsewhere.
Keep in mind that the devices that currently support BLE 4.0 are limited, and currently only include
- iPhone 4S and later iPhones
- recent MacBook Air, Mac Mini
- iPad (3rd generation and later, and iPad mini)
- Macbook Pro Retina
There may be other Apple devices that support this standard, it’s something Apple is advertising openly on each product’s technical specifications page so it’s easy to find for current products.
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?
2 Answers 2
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.
One thing is not very clear about the UUID. Do you mean I have to know UUID of BLE device (sensor) before I connect? Different BLE devices have different UUIDs? Or in another word when I buy a new BLE device, it should provide a UUID with it so that I can add the id to my program before I can connect to it? Thanks.
@bagusflyer In BLE, everything (Device,Service,Characteristic) is assigned an UUID. But you don’t need to know the device UUID to connect to them. Instead, you can always scan nearby devices and connect to them, and then scan the service on that peripheral. But it will be wise for you to know the service UUID to identify those that provide this service. For example, if you know the UUID for the SERVICE ‘temperature’ is 0xabcd, you can then only deal with those peripheral providing the service buy calling ‘scanForPeripheralsWithServices:’ with UUID 0xabcd as the argument for this function.
В iOS появилась возможность изменить тип устройства Bluetooth. Как это сделать
Одно из нововведений iOS 14.4, которая уже доступна всем пользователям, по непонятной причине осталось почти незамеченным. Хотя эта функция очень полезная, если вы подключаете к iPhone или iPad несколько Bluetooth-устройств. Речь идет о распознавании типа беспроводных устройств для вывода звука. По умолчанию iOS автоматически присваивает тип устройства каждому подключенному по Bluetooth гаджету, однако не всегда распознает его правильно. В частности, это касается медиаплеера в автомобиле, который зачастую определяется как обычная колонка. Начиная с iOS 14.4, вы можете это изменить.
Если тип устройства выбран неправильно, это может вызвать проблемы в его работе
Зачем менять тип Bluetooth-устройства на iPhone
Очень важно, чтобы iOS правильно распознавала подключенное беспроводное устройство. Например, система может не воспринимать микрофон устройства, неверно регулировать его громкость. Также могут не работать продвинутые возможности вроде распознавания автомобиля и автоматического включения режима «Не беспокоить водителя».
Чтобы повысить точность измерений звука в наушниках для сторонних устройств Bluetooth, вы должны классифицировать их как наушники, динамики или устройства другого типа (на iOS 14.4 или новее).
Например, у меня автомобильная медиа система автоматически определилась как наушники, хотя в настройках iOS есть отдельный пункт «Аудио автомобиля». Из-за этого iPhone не предлагал запустить карты, как только подключался к машине по Bluetooth, как раньше, а также не включал сам режим «Не беспокоить водителя».
Как изменить тип устройства Bluetooth в iOS
Чтобы изменить тип, не обязательно подключать устройство в данный момент.
- Откройте Настройки — затем Bluetooth.
- Рядом с нужным устройством нажмите на кнопку «i».
- В разделе Тип устройства выберите нужный вам вариант: аудио автомобиля, наушники, слуховой аппарат, колонка, другое.
Проверьте тип для каждого устройства
В моем случае я изменил тип устройства на аудио автомобиля, и после этого все упомянутые функции снова стали работать.
Нужно ли выключать Wi-Fi и Bluetooth на iPhone
Многие до сих пор считают, что если отключить Wi-Fi или Bluetooth полностью, то это позволит сэкономить зарядку айфона, продлить время его автономной работы. Однако если Wi-Fi не находится в режиме активного использования, адаптер, установленный в iPhone, не потребляет энергию. Единственная его работа, когда смартфон не находится в режиме сна — сканирование доступных сетей каждые 15 секунд.
Что касается Bluetooth, эта технология тоже не потребляет энергию, если не подключена к другому устройству — независимо от того, включена данная функция в настройках или нет. Сканирование Bluetooth-аксессуаров практически не потребляет энергии, как и Wi-Fi.
Поэтому не волнуйтесь, если Bluetooth или Wi-Fi на вашем айфоне включены, и проверьте правильность определения типа Bluetooth-устройства в настройках iOS. А вы отключаете беспроводные интерфейсы на айфоне? По какой причине? Поделитесь в комментариях или в нашем чате в Telegram.
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Лонгриды для вас
Многие пользователи iPhone привыкли, что с помощью боковой кнопки можно заблокировать и включить смартфон. Но что, если это не все ее возможности? В этом материале рассказываем про пять функций кнопки включения iPhone, о которых вы могли не знать.
Отключение сотовых данных и Wi-Fi, авиарежим и активация роуминга — все это позволяет надежно выключить интернет на Айфоне и не только сэкономить трафик, но и сохранить свои нервы. Рассказываем про все способы, с помощью которых можно отключить интернет на Айфоне, и объясняем, зачем это делать.
Платёжный стикер Сбербанка — это не замена Apple Pay. Он конфликтует с NFC в iPhone, часто не срабатывает даже на банкоматах, не поддерживает кредитные счета и ничуть не удобнее, чем оплата обычной картой
Is there a way to access Bluetooth 4.0 Low Energy devices in iOS?
The new iPhone 4S has support for Bluetooth 4.0 Low Energy devices. Is there an API for communicating with these devices in iOS?
3 Answers 3
It is part of the iOS 5.0 SDK. You can download the SDK and check it out.
As someone has mentioned, the APIs are available in the iOS 5.0 SDK. However, bear in mind that those APIs only provide support for ATT client, if you want to add services and act as a server you’re out of luck for now. I truly hope Apple will add server support at some point, since some profiles (Alert Notification or Proximity) would benefit enormously: being able to be notified when you receive a new SMS/email or being able to «ping» your phone to find it would be great.
When you refer to client ATT support, you mean access to server capabilities?For instance, API that can only be used to access data coming from a heart rate low power 4.0 device? because if its like this,i havent found on this API information about how to connect to a server profile like the ones used for sensors (heart rate profile,tempeture sensor profile,etc).thank you very much in advance
I mean that you can use the API to access the database of a remote device acting as an ATT server. iOS 5 is the ATT client and you can read/write characteristics from/to a remote device’s database. To know which characteristics correspond to what data (heart rate, temp, etc) you need to use the UUIDs in bluetooth.org and match them with the iOS APIs. If you read the profile specifications along with the API this should all become clear.
,now i think i got it.What you mean is that IOS5 only supports ATT layer (Attribute Protocol) for raw transactions,but not GAP and GATT frameworks for ATT.I was confused,because on the official spec of HRP profile v10,it demands,as mandatory,GATT profile for this service (HRP in our case)on the sensor device,and at the collector device (phone as central role).But GATT is just a framework that works on ATT,so as you said,the HRP service can be accessed from iphone by ATT transactions.Would be awesome if there was example code for ATT like ChatApp on Android RFCOMM :-).thanks so much.