Xamarin.iOS and RFComm - ios

I was exploring codes for bluetooth communication using rfcomm. I was able to implement this in xamarin.android native, but for xamarin.ios I was not even able to find a sample, just found samples with BLE. So can you please forward me or even better- answer if the rfcomm is possible with xamarin.ios? Many thanks

iOS devices do not implement the Bluetooth RFCOMM (SPP) profile
• Instead Bluetooth accessories can use iAP profile to exchange data with iOS devices
– iAP is RFCOMM based connection (similar to SPP)
– It uses Apple proprietary iAP application protocol
– Allows data exchange between Apps and the accessory
Via: Silicon Labs Wireless and RF Solutions website
If your bluetooth device is MFi (Made For iPhone) compatible:
Apple's MFi Program
CoreBluetooth

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.

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?

Arduino and iPhone connection with Bluetooth 3.0

I would like to build an app that requires bluetooth connection. The Bluetooth HC05 module is connected to Arduino. I want to know what framework (or other related things) that I need to build an app that can connect to this Bluetooth module.
Still have no idea how to start. Anyone could help?
Unfortunately the answer might be "you can't do that".
iOS only supports the following Bluetooth profiles: HFP, PBAP, A2DP, AVRCP, PAN, HID and MAP. None of those can be used inside an app to communicate to your Arduino.
For the useful profiles like Serial Port Profile (SPP) and all arbitrary bluetooth communication you have to add an authentication chip to your Arduino. Unfortunately you can't buy these chips unless you have a MFi membership. And you won't get into the MFi program unless you are a company with a concrete product (mass market scale) in mind.
Fortunately, we now have Bluetooth Low Energy. Bluetooth LE can easily be used in iOS apps, without all the MFi hassle. So you should get a Bluetooth 4.0 module for your Arduino.
The framework that is used for Bluetooth 4.0 communication is called CoreBluetooth. You will find documentation, sample code and WWDC videos in the iOS Developer Center. Start with the Core Bluetooth Programming Guide

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

Resources