Simulating HID on OSX : IOBluetooth or CoreBluetooth? - ios

I'm intending on doing some simple experiments sending simulated key strokes from mac to IOS and I'm trying to decide which framework to spend my effort on.
The impression I get is that CoreBluetooth is too high level for this and that IOBluetooth would be the best choice.
Is IOBluetooth the most suitable framework to use for simulating HID commands?
Thankyou

CoreBluetooth is for Bluetooth low energy (BLE), whereas IOBluetooth is for classic Bluetooth.
iOS devices can connect to HID devices over either transport: the BLE profile is called HOGP: HID over GATT Profile.
CoreBluetooth/BLE should be easier to work with, but you'll still need to implement the HID protocol yourself.
Note that Apple does prevent iOS applications from publishing HID over GATT but I assume that limitation is not present on OS X.

Related

Bluetooth vs BLE and proper usage of them

I am doing a project that uses BLE(CoreBluetooth).
In the mean time we use a mock in the form of android device.
My question is this:
Why does the CoreBluetooth doesn't recognise the android device? (i read about BLE GATT but still didn't understand it).
Also if i go in the iPhone to settings->bluetooth it recognises it and even connect to the android device ,how can i implement this in my app?
Programming with CoreBluetooth
IMHO, CoreBluetooth is quite cumbersome. I suggest using a library like RxBluetoothKit which takes away a lot of the boilerplating involved with handling the GATT profiles yourself.
Devices, mockups
Cool BLE devices are around 30$ nowadays. I use PuckJS - a JS supporting programmable BLE board.
Apple requires MFI certification for devices that connect to iOS devices via Bluetooth.
The exceptions are:
BLE devices.
Bluetooth devices which exclusively support either of these profiles.
So your Android mockup would have to advertise itself as one of these.

Test Bluetooth on iOS

I'd really like to start testing my iOS apps Bluetooth capabilities, but have run into a few problems:
I have a device made with a RN-42 module, but it's not the Apple version and I don't have the Apple authentication module at the moment (I ordered it, but shipping from China can take a while). I know what the messages will look like, but can't send them to my iPhone!
I can use the module with my Macbook, but not in the iOS simulator! Apple has taken down all of the documentation related to getting the iOS < 7.0 to use a separate bluetooth dongle, and my efforts have left my 6.1 simulator endlessly spinning on the bluetooth screen.
I'm new to using Bluetooth, so this may be a dumb question...
Is there a way of getting a bluetooth client device (I have a Mac, another iPhone, and an Android tab) to act as a server module that can send (and receive) Bluetooth data to my iPhone?
Client/Server as per developer.bluetooth.org
Thanks!
Not 100% sure your meaning of "server module". But in CoreBluetooth, you can use CBPeripheralManager to broadcast data to other iOS or Mac apps.
https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CBPeripheralManager_Class/Reference/CBPeripheralManager.html
If you're using standard Bluetooth (i.e. not Bluetooth LE or Bluetooth Smart or whatever you want to call it), you'll need to enroll in the MFI program or work with an MFI certified device (such as a Redpark cable) and use the External Accessories library provided by Apple. If you're using Bluetooth LE, you can use the Core Bluetooth library provided by Apple. If you fall into neither of those cases, sorry, you can't use Bluetooth on iOS.

How to send file from iPhone to mac over bluetooth

I have created universal device application to transfer any kind of files via bluetooth using GameKit Framework.
My question is how to create on Desktop Application with same process or there any Framework? That can communicate also on the device. Can i have any sample please or tips how to do it.
There is Core Bluetooth that used low energy protocol. But i don't know how?
Anyone please give some idea or anything that i can use it.
Thank you
The Bluetooth functionality of the GameKit framework is iOS-only (see GKSession), so you won’t be able to use that on a Mac.
The CoreBluetooth framework on the other hand is available on both Mac and iOS devices supporting Bluetooth LE, with the one difference that the CBPeripheralManager is not available on Mac, so you can’t advertise a service on Mac. However you can have your iOS device act as a peripheral and connect from the Mac acting as a central. Data transfer should still work both ways.
The BTLE Central Peripheral Transfer sample code should be a good starting point.

Can CoreBluetooth framework pair and talk to a slave bluetooth 2.0 serial module?

I would like to write an app for iPhone 4s that can talk to a slave bluetooth 2.0 serial module such as the HC-06, BC417, or EGBT-046S. Is this possible? Can anyone provide some sample code?
No, CoreBluetooth is for Bluetooth Low Energy. The External Accessory Framework can be used for Classic Bluetooth connection. But to be able to open on a serial link from the iPhone, you need a peripheral that complies with the Made For iPhone (MFi) program, and you need to be an MFi member to be able to buy one. Look at this question for more info: What's needed to use the Apple Accessory Protocol?

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