Cost of Developing Bluetooth 4.0 BLE applications for iOS or OSX? - ios

I have HW applications that uses BLE i.e. Bluetooth 4.0. I would like to get it working in Apple products such as iOS or OSX. My friend said that earlier developers had to be pay at least some 20k USD + margin of profits to get their hardware device accepted by Apple. The services have online frontend and specific hardware that are supposed be connected via BLE to phones/laptops.
What is the cost currently to develop BLE services for Apple?

BLE devices do not require Apple's MFi Program certification (which is apparently $20k+). Your only costs would be standard iOS Developer Program ($100) and the cost of developing the actual app to communicate with your BLE device.
From Apple's MFi FAQ:
I want to develop an accessory that communicates with an Apple device
using only Bluetooth Low Energy. Do I need to join the MFi Program?
No. Accessories which connect to an Apple device using only Bluetooth
Low Energy/BTLE/Bluetooth 4.0 or standard Bluetooth profiles supported
by iOS are not part of the MFi Program.

Related

What's the difference between the CoreBluetooth and ExternalAccessory frameworks?

Apple provides the following two frameworks for communicating with nearby Bluetooth devices with iOS.
CoreBluetooth:
The Core Bluetooth framework provides the classes needed for your iOS and Mac apps to communicate with devices that are equipped with Bluetooth low energy wireless technology.
ExternalAccessory:
The External Accessory framework provides support for communicating with external hardware connected to an iOS-based device through either the Apple Lightning or 30-pin connector, or wirelessly using Bluetooth.
I have previously used the CoreBluetooth framework to successfully communicate with Bluetooth devices. However, I am now trying to communicate with a Bluetooth printer and it doesn't show up in the scan for nearby devices. Using the ExternalAccessory framework, it does.
How do these two frameworks differ as far as communicating with Bluetooth devices is concerned? Why do different Bluetooth devices require the use of different frameworks?
There are two kinds of Bluetooth, Bluetooth LE which is very limited in bandwidth but that doesn't require any user pairing in the settings app and Bluetooth Classic, which requires the user to pair the device but gives you more functionality and bandwidth. CoreBluetooth supports Bluetooth LE and you can use it with a developer account. Bluetooth Classic requires that you join the Apple MFi program.
Core Bluetooth only allows you to communicate with Bluetooth Low Energy devices using the GATT profile.
The External Accessory framework allows communication with 'legacy' Bluetooth devices using profiles such as the Serial Port Protocol (SPP). In order to communicate with devices using the External Accessory framework, the device must be certified under the MFi program.
I also believe that in order to get an app that can communicate with with an MFi device using the External Accessory Framework approved, the MFi licensee (i.e. the printer vendor) needs to provide some paperwork to authorise your app.

Can the iOS App communicate with the devices of Bluetooth V2.0 through CoreBluetooth.framework?

I'm developing an App, which is required to communicate with the devices of Bluetooth V2.0, V3.0, or V4.0. The communication is completed through the serial service of Bluetooth. The App is for iPad. We develop it with the Xcode V7.3.1 on the MacBook OS X El Capitan V10.11.4. There are many materials about the Bluetooth development for iOS, but lots of them are for CoreBluetooth.framework. I indeed tried to connect a device in hands through CoreBluetooth.framework, but it does not work. I have some basic questions about the CoreBluetooth and the Bluetooth-communication development.
Suppose the iPad, on which our App runs, has the chip of Bluetooth V4.0 (Smart Ready), can the App establish the Bluetooth connection with the devices of Bluetooth V2.0 or V3.0 through CoreBluetooth.framework? and then communicate with them?
If the answer of the 1st question is "No!", are there any other APIs available for the iOS App to communicate with the Bluetooth devices? If there are, what are they? Of course, we suppose that the Bluetooth devices are the MFi Bluetooth devices.
iOS devices which support Bluetooth Low Energy (v4.0) can connect and accept connections from other BLE compatible devices.
However, in order to connect using older protocols, you would need to become a member of the MFI program.
Hope this helps

iOS sample to connect a Bluetooth with MFI

I have an application for Android that communicates via Bluetooth with a hardware we develop. Now I need to develop an application for iOS that connects with the same hardware via bluetooth. This hardware makes serial communication via Bluetooth.
I've been researching quite recently and found two outputs:
- Bluetooth Low Energy (BLE).
- Bluetooth with "MFI Program".
Analyzing the smartphone today, both Android as iOS, the best option would be the MFI. Due to availability on older smartphones. Even already started the enrollment process over MFI program.
My question focuses on the development on iOS. And my question is:
Looking for Objective-C. Is there a difference between connecting to a Bluetooth Low Energy or MFI? Could someone show me an example of connecting via Bluetooth MFI?
As I understand it, devices enrolled in the MFi program use the EAAccessory framework, not CoreBluetooth. Documentation is here: External Accessory Programming Topics.
Sample code here.
MFI is for Bluetooth device Hardware.
Coming to connecting to BLE device from iOS devices, you have to use CoreBluetooth framework.
http://www.raywenderlich.com/52080/introduction-core-bluetooth-building-heart-rate-monitor
Check this link.

Can you obtain WiFi settings from iOS and pass it to a BLE device (similar to Withings)?

The Withings iOS app has the ability to obtain your wifi settings and pass it to the body scale via Classic Bluetooth (see screenshot below). From what I learnt it's a feature only available through the MFi program, which the Withings Scale is.
I'm building an app that talks to external BLE devices. Since MFi is not required for BLE devices, I'm wondering if there's a way to do the same thing with CoreBluetooth or other frameworks?
From Apple's MFi FAQ page:
"Accessories which connect to an Apple device using only Bluetooth Low
Energy/BTLE/Bluetooth 4.0 or standard Bluetooth profiles supported by
iOS are not part of the MFi Program."
Related question on ClassicBluetooth / MFi:
Can you pass WiFi settings from an iOS device to an ExternalAccessory object?

iPhone App - Communicate with Bluetooth Device

I'm tasked with developing an iPhone app whose first bit of functionality is to connect to a bluetooth transmitting device, receive data from that device, and use that data to do other important things. The issue I'm having is that there doesn't seem to be any good sort of SDK to work with, so I'm thinking of using the GameKit framework to search for bluetooth transmitting devices, connect to the (correct) device, and to receive data from this device.
Bullet points:
- search for bluetooth device
- connect to bluetooth device
- receive data only from the device
Tips/advice?
Apple doesn't let just any Bluetooth device to connect to an iOS device. The device must be MFi compliant.
Assuming you've been tasked with writing the app to work with your company's product, start with signing up with the MFi developer program from Apple.
Assuming the opposite, that you've been tasked with writing the app to work with a third party device make sure the product is MFi compliant. Finding a "Made for iPhone" or "Made for iPad" logo on the device or packaging is likely to indicate it is MFi compliant.
From there you should investigate the External Accessory Framework. Try reading External Accessory Programming Topics

Resources