NXT 2.0 iPhone app - iphone

well its saturday night at my place and i was thinking of an app that could control the nxt. Well the iPhone connects with the nxt via bluetooth and sends signals via bluetooth. Now is my problem i found a tutorial on how to connect to other bluetooth devices, but none of them says how the iPhone can send commands to the device or how to receive/read them and show the user the commands it receives. So my question is: is the iPhone capable of this? can it send signals and commands over bluetooth? if yes how ?
Thanks!

It is possible
You have to join the Apple Accessory program - MFi and develop as per the guidelines
More information is available after joining the program here - MFi Program

Related

Create an iPad app that can send/receive data via the USB cable?

I want to create an iPad app that connects to another machine, laptop or otherwise, via USB and communicates to some other application I develop running there.
I know that this is easy to achieve via Bluetooth or WiFi but this particular set of solutions must be done via a USB cable.
Is it possible to do so without access to the Apple MFi program? (I am about 5 weeks in and the response is not looking good).
iOS App --> USB Cable --> Mac OSX --> Desktop App (without MFi access)
Thanks
To use USB communication Apple does not provide any API within IOS SDK. The only option right now is MFI. I don't think Apple will allow this in near future.
To use serial communication, you need MFI as you may have discovered. However, there is a poor man's way of achieving this. I have done so during development.
Enable "Internet sharing" on your device and connect to it. Use "ifconfig" on your Mac to find out the interface to use. You do not need to use this as the default connection, but it needs to be active. If I remember correctly, only one end can initiate connections (it was a while so I am sorry that I don't remember the details).
EDIT: I would also like to point out that I did this on an iPhone, not an iPad.
Not over USB but over RS232 (serial port)
Look here: http://www.redpark.com/c2db9.html
But:
The cable uses the old 30 pin connector, but according to them it's compatible with the Lightning adapter
The application won't be accepted on the AppStore, it's for internal use only.
There is a (small) book that explains how to use this cable to connect an iPhone directly to an Arduino, it's been published in late 2011. "iOS Sensor Apps with Arduino Wiring the iPhone and iPad into the Internet of Things" http://shop.oreilly.com/product/0636920021179.do

Is there a way to read data from a Non-Apple Bluetooth Device with the iPhone?

I really searched on this topic for a while now. Especially when iOS 3 was the latest software version on the iPhone.
I wonder if there is a possibility to connect the iPhone to an external device via Bluetooth using the SDK and retrieve measured data?
Thanks for your help!
Greeting!
mary
If the Bluetooth device can masquerade as a Bluetooth keyboard, then it can send data to an iOS device encoded as keystrokes.
If the Bluetooth device is or can masquerade as a headset, then it might be able to send data encoded by an audio modulation scheme, such as FSK. A matching modem/codec will need to be running in the iOS app.
For the newest iOS devices (4S) you can use the new Bluetooth LE protocol to send data (older Bluetooth data communication protocols are not available to apps unless you are in Apple's NDA MFi program).
You have to look into the MFi Program by apple since you want your devices communicating. It provides support on using an external accessory with your iPhone, though you have to register/pay for it.

iPhone Bluetooth Communication Examples

I've been trying to find examples on communicating with bluetooth devices on iOS and have been coming up short. As I understand it SPP is not yet supported. At the simplest level, I'd like to send a simple 1 or 0 signal to the bluetooth device I'm creating. (It's a bluetooth switch that would turn something on and off). Is there a way to cleverly do this through the HID or HFP profiles?
The short answer to your question is that you can't connect to an arbitrary Bluetooth device you may happen to have, you can only connect to a Bluetooth device that has come through Apple's licensing program (i.e. the "Made for iPod/iPhone" label). From Apple's documentation:
Q: [The External Accessory framework allows] my application to communicate with Bluetooth devices. So why doesn't my application see the Bluetooth accessory sitting next to my iPhone?
A: The External Accessory framework is designed to allow iOS applications to communicate only with hardware accessories that are developed under Apple's MFi licensee program.
So there is no public API for accessing an arbitrary Bluetooth device from within iOS: you have to go through the External Accessory Framework to communicate via Bluetooth, and the EAF's mission is "communicate with MFi devices," not "communicate with arbitrary external devices." A sufficiently ingenious developer could probably hack something in there, but -
it's a non-trivial undertaking
you are spectacularly unlikely to get past the App Store approval process
So there's just not much percentage in it - the effort of doing so is unlikely to reward you.
If there already exists an MFi device that can be coerced into doing something that you want, that's probably your best chance - short of going through the MFi approval/licensing process yourself, of course. If you want to do so, have at it and good luck.
I'm answering this question late because Zeroxide's answer is incorrect (you can use a random Bluetooth keyboard with your iOS device because Apple implemented that connection, which is different from giving you a public API path to doing likewise) and I find Rokridi's answer to be incomplete-though-headed-in-the-right-direction.
Edit: A caveat has since been added to the linked Apple page about Bluetooth Low-Energy devices. So there's a loophole, but it's not a big one because very, very few Bluetooth LE devices have actually been produced as yet.
As far as i know, if your external device is non iOs device then you should use External Accessory Framework to communicate your application with it. Threfore, you external device should be certified by Apple through the Made for Ipod program (MFI). Hope this helps.
If you want to use classic Bluetooth (not BLE), then you have to first PAIR the iOS device to the Bluetooth device (in Settings). If you can't do that then you can't communicate with it with your app.
NO. whether device is MFi certified or not, you can connect device to iphone if bluetooth profile is HFP, or HID's (ordinary profiles. not iAP profile). Think about bluetooth headset or keyboard. does it need MFi mark on it to use? NO. Never.

Sending data via bluetooth on Iphone (iOS 5.x)

I have been searching and searching, but found nothing yet. Is it really true that there isn't a straightforward way to establish a BT connection from my iPhone to another (3rd party) BT device, i.e. an audio receiver. I know this is possible through the OS (I own a Belkin BT music receiver that works this way - it appears in Settings and from there I can connect to it). Note that I am not interested in pairing to iOS-devices, but an iPhone and my custom made hardware.
I've managed to find Google's BTStack at code.google.com, iBlueNova, Celeste and more, which all must be run through Cydia or similar and also I stumbled upon Apple's MFI-program, which seems fairly complicated.
Does anyone have any experience with bluetooth and iOS, if so, how and where do I get started?
If one might be interested, the project I am developing involves a piece of hardware with a BT device attached on it. The app should be able to send simple commands via bluetooth (basically just ASCII characters) to the device, which will react depending on what it receives.
If you are developing accessories that need to connect to iOS devices and want to use your own communication mechanism then your only option is to join the Apple MFi program.

iPhone Bluetooth application to connect to a Bluetooth printer

Has anybody succeeded in developing a bluetooth application on the iPhone that prints to a Bluetooth printer?
I have been investigating the feasibility of developing an iPhone application that could print to a Bluetooth-enabled printer. I've gone through the most of the postings in this thread and was confused by the mail exchanges.
As per my analysis:
Gamekit - can be used for bluetooth connectivity between iPhones and IPods ONLY
Bonjour - can be used for wi-fi connectivity between iPhones/IPods and bonjour-enabled printer
We can use an external accessory to connect to a third party Bluetooth-enabled printer provided the 3rd-party printer complies with the necessary regulations from Apple (registering for either “Made for iPod”/ “Works with iPhone”, and also customizing their printer with specific hardware/software, etc.)
Could someone please share their experiences?
You want their external accessory framework. Not GameKit. Happy coding!
The External Accessory framework provides support for communicating with external hardware connected to an iPhone OS–based device through the 30-pin dock connector or wirelessly using Bluetooth.
(This is exactly what you were looking for)
To detect and connect to external devices ExternalAccessoryFramework should be used.Me too developing an application for connecting iphone to other hardware devices via bluetooth .A'm facing the problem with the protocol.The protocol should be the hardware supported ones and the protocol should be given in the info plist file..
Happy coding.
You can want to try this Bluetooth printer, which is Apple MFI approved
http://www.bluebamboo.com/other_file/P25i%20Datasheet%20%28EN%29%20v1.0%2009-Oct-2011.pdf
I would bet that you would need to use Bonjour and Wi-Fi for this application. The bluetooth hardware is restricted to gameplay from what I've seen.
well i have sucsessfully accomplished bt printing on a customers I-phone both devices have to be in discovery mode to do so and then the combination wireless and bt will allow only photo printing though otherwise you will need an app