Mac Bluetooth MAP profile - ios

Having heard that Apple has included the Bluetooth MAP profile in iOS 6 I was wondering how I could implement the client side of that on a Mac.
I have spent a while Goggling but I haven't found any documentation on how to use it. Is it built into the OS or will I have to use an external library. (I know there is a Bluetooth API in Mac OS but I don't know if it supports the MAP profile)
Are there any code samples or documentation that I could use?

Apple does not support Bluetooth MAP natively in OSX. See http://support.apple.com/kb/PH10549 for a list of supported profiles in Mountain Lion. You can create new profiles for OSX, though, within some bounds. See https://developer.apple.com/library/mac/#documentation/devicedrivers/conceptual/bluetooth/BT_Develop_BT_Apps/BT_Develop_BT_Apps.html for details.
Since MAP is on top of SPP/RFCOMM (see http://developer.bluetooth.org/KnowledgeCenter/TechnologyOverview/Pages/MAP.aspx), you should be able to implement this profile on OSX.

I have implemented Bluetooth MAP on Mac OS X in Phone Amego (allowing users to get on-screen SMS). MAP is built on OBEX which Mac OS X supports. The Bluetooth MAP spec is quite good but takes a while to grok.
You basically create two OBEX sessions: A Message Access Service (MAS) which then registers with the device to receive notifications using the Message Notification Service (MNS). Once you register, the device will open a MNS session with you and notify you of incoming messages. You'll also need to advertise your MNS service using Bluetooth SDP.
Enjoy!
http://www.sustworks.com/pa_guide/sms.html

Related

Does iOS 8.3 now support Wifi debugging?

I updated iOS on my phone to 8.3 and I saw this message popup on first boot, but I have not seen it since:
I have been searching all day for information and I can't find a single reference to this message or to Xcode supporting wifi debug.
I am using a macbook pro 2009 model, and I have read that this is not compatible with the new continuity features (as well as airdrop etc). I am wondering if this is part of the wifi debug (and also if BTLE is involved at all). Of course it is all speculation since I cannot find any documentation about this.
Has anybody used wifi debug, or can point me to any documentation?
No, the feature was disabled as it causes serious security flows, for example when debugging you can fake location for any app, access confidential data like your number, udid etc. WiFi can be used now only to sync using iTunes.
It's restricted to USB only. You would need to write a bridge between USB and WiFi. You could in theory connect iPhone to Raspberry Pi, use open source crossplatform libMobileDevice. And mirror all USB requests from your XCode to this device USB.

CBPeripheral interaction with Windows

I have an app in my iPhone device. The app is advertising CBPeripheral service. I already created one app on mac which allows it to interact with MAC desktop using CBCentral. It basically exchanges some data with MAC initiated handshake. I wanted to make interact the Windows 7 PC to interact with the iPhone app in the similar manner. I am unable to find any proper way to do it.
I have found this, but it is minimum supported in Windows 8. Is there any way to do it?
There is no support from Microsoft for Bluetooth 4.0 AKA BTLE prior to Windows 8.

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.

Can I make my Mac as a Bluetooth Peripheral?

I'm working on an idea which requires my Mac to send some data to my iOS device. I know CoreBluetooth framework is not there for Mac OS and only for iOS, so is there any way that I can get my Mac to pose a peripheral ?
I've done some Googling around - haven't got a straight answer :(
The CoreBluetooth.Framework is there for OSX. It's embedded inside of the IOBluetooth.framework. Download the sample mac apps from the Apple Dev Site. The one difference is that the OSX version of the CoreBluetooth.Framework does not contain the CBPeripheralManager class. You should just have your iOS device act as the peripheral and the Mac as the central. The iOS device can act as both at the same time and data can be sent both ways.
If you are comfortable with writing JavaScript, you can use bleno. It is a node.js module for implementing BLE (Bluetooth Low Energy) peripherals, and it support Mac OS X 10.9 or later, Linux and Windows.
You can find an example for implementing a Battery Service in peripheral mode in their github repository:
https://github.com/sandeepmistry/bleno/tree/master/examples/battery-service

OS X to iOS communication via USB?

Is there currently an Apple-approved (or at least tolerated) strategy to transfer high-bandwidth data over USB from an iOS device to OS X? Is this even allowed as an MFi program developer?
Maybe peertalk is interesting. "PeerTalk is a iOS and OS X Cocoa library for communicating over USB and TCP."
I would take a look at this project from iOSDevCamp 2010 if you want to transfer data over USB:
http://maxweisel.com/blog/2010/08/iosdevcamp2010-hackathon-ios-usb-sync/
Perhaps this doesn't map to what you're actually trying to do, though.
There is no legitimate way to do this using the public iOS SDK at the moment.
It is also impossible to do that within the MFi, unless you want to put a peripheral in between.

Resources