Existing bluetooth device and Apple MFI - ios

I am developing an App which needs to connect to a bluetooth device. I dont want to deploy this app in the app store. I only need this for personal use. Is there any way to connect to this bluetooth device (which is old as hell and definitely not MFI certified). In the FAQ of the MFI program (http://mfi.apple.com/faqs) it says that it is possible with third party solutions. Does anyone know something about that? I havent found any products which builds a bridge between the iPhone and the bluetooth device.
Furthermore the faq says:
"app developers and 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 bluetooth device uses a standard bluetooth profile, but i can't connect to it.

If your app is not going to app store, you can try using the private framework called BlueToothManager. I haven't worked with it but it can help you.
The MFI compatible devices are registered with Apple and communicate with a Bluetooth Profile registered with Apple. That particular protocol string (Eg. com.apple.ps1) will be given by the MFI device manufacturer, which you will need to include in the info.plist file.

If you are targeting devices which have ios 5 and up you can try using the CoreBluetooth Framework. Here is the link
https://developer.apple.com/library/ios/#documentation/CoreBluetooth/Reference/CoreBluetooth_Framework/_index.html#//apple_ref/doc/uid/TP40011295

Related

Would I be able to pair my iOS device with a custom bluetooth device if it gets MFI license?

The plan is to have a custom built Bluetooth device, which is not part of the standard bluetooth profiles (https://support.apple.com/en-us/HT204387), and also we can't go the BLE way (not my decision) and pair it with either an android or an iOS phone. It works OK for android of course, but cannot be connected to from an iOS phone, due to restrictions of Apple.
I understand we should enroll to the MFI program and have a license for our device so an iphone can be paired with it and a connection can be established. My concern is that how can I be sure that it will work as there seems to be no opportunity to try it without enrollment to MFI program.
Any help would be appreciated as I'm quite a rookie in this topic. Thanks a lot.
You must apply for MFi program just to get access to the Bluetooth APIs that you need. There is no other way without bypassing Apple's legal requirements.

Bluetooth and iOS - what protocols/ profiles are supported?

I am developing an iOS bluetooth app that needs to pair with a peripheral device.
What frame work do I need to use to interact with a device that has support for the following protocols/profiles:
A2DP
HFP
HSP
Are either of these possible with an iOS device without being a member of the the MFI program?
How do I support these profiles:
https://support.apple.com/kb/HT3647
Do I do that using corebluetooth?
These are standard profiles that are supported inherently by iOS. You don't need to add any software to make the phone work with these. At the same time apps running on the phone will have limited access to what device they can use or are using but for example the audio routing can be obtained.
All in all, as long as the device implements the profiles correctly, any application will be able to use it, not just yours.
There are two completely different methods of doing Bluetooth communications. One is with the classic Bluetooth profiles and the latest is using BLE (Bluetooth Low Energy).
Classic Bluetooth can be used with the ExternalAccessory framework and GameKit framework.
BLE uses CoreBluetooth.
The classic profiles supported are listed here:
http://support.apple.com/kb/HT3647

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?
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:
http://blog.makezine.com/2012/03/19/bluetooth-4-0-from-arduino-to-iphone-no-jailbreaking-no-mfi/
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.
That line is referring to standard profiles supported natively by ios devices, such as HFP or A2DP. If you build a headset device that does HFP, the iphone will be able to connect to it and route your call to the headset without the headset being part of MFi.
If you want to write an app that does other things with bluetooth, inlcuding FTP, you would have to use MFi.

CoreBluetooth and MFi

My company creates hardware accessories that are approved through MFi. With iOS 5, Apple has finally made Bluetooth open to BLE devices without using the ExternalAccessory framework. 
I have been unable to find any information on MFi about using CoreBluetooth. 
My question is: Can accessories and apps be created using CB but not use the an authentication chip and still be able to have Made for iPod / iPhone / iPad badges? 
As far as I can tell the certification process has not changed to accommodate CB-only apps and accessories. Any information is appreciated. 
Obviously I'm not expecting people to post MFi information that violates the agreement. I'm simply looking for a general answer and ideally a link or document name to an MFi document that is eluding me. 
This is not an authoritative answer but as far as I know, you can only use the badge if Apple has certified your device, which can only happen if you're in the MFi program. Apple will not allow you into the MFi program if your device only uses CoreBluetooth. And you can only use the authentication chip if you're in MFi.
So I think that no, you cannot use the badge with any arbitrary Bluetooth product. You can only use it with MFi certified products.
CoreBluetooth is only for BTLE. MFI is for Classic Bluetooth apps.

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