Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 5 years ago.
Improve this question
Target of my bachelors thesis will be to connect optoserial devices via bluetooth adapter to an iPad. Currently I'm struggling with Apples restrictions. I read often in the web that I can use the supported profiles to connect to any devices that support at least on of those. But Apples technical FAQ points points out that "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". I dont think that those people writing here are just lying for fun.
Can anybody tell me out of experience if it works or not in conjunction, and thats the point, with non-MFi accessories?
The External Accessory framework is indeed for MFi only, but you have two options:
Jailbreak (I can't give you any advice there).
Use CoreBluetooth instead.
I've used CoreBluetooth in my own applications and it can get the job done, depending on how much data you're looking at transmitting. I don't know what an optoserial device is, how how much data you would need, but we're talking data transmission on the order of bytes efficiently. CoreBluetooth operates with Bluetooth 4.0 LE devices, right now that is any iOS device released after (and including) the iPhone 4S.
Certain types of BT devices (ie. hands-free modules, BT headsets) of course don't need to be MFi.
Serial communication, on the other hand, is completely different story. BT accessory has to implement an identification process - usually by using identification chip.
Interesting thing is that SPP (Serial Port Profile) is not even listed under supported profiles.
But sill you can find some MFi GPS modules.
And this module is also interesting: OEM Bluetooth iPhone / iOS Accessory Module OBS414
You have to enter the MFi program before you can even get technical specifications though. Otherwise manufacturer would be breaching NDA.
There is one more workaround on how to communicate via BT: you can always implement hardware FSK (or similiar modem) on one side (audio BT link) and a software counterpart in the app.
Related
how to make iOS app with bluetooth?
I need an app which connects and exchange data via bluetooth with other devices, laptop for example.
Many packages for BLE and cant find for classic bluetooth
If you want to use the classic Bluetooth interface of an Apple iOS device, you have to comply with/accept Apple's MFi licensing programme (Made for iPhone/iPod/iPad), which is a major hurdle and the reason for the lack of corresponding libraries.
Short answer: you don't want classic Bluetooth for this. You want BLE. It supports everything you want for this kind of use case. See Core Bluetooth.
Much too long answer about classic Bluetooth and iPhones from my years building earbuds:
Continuing from Risto's answer, even with MFi certification (which requires adding an extra chip to your device, not just licensing), you still don't get general access to the BR/EDR ("classic") interface. You only get access to iAP2, which is an SPP-like serial protocol, but is not SPP. If you're porting from Android, you probably are using SPP, and sorry, that's just not available. You're going to need to switch to BLE.
MFi certification is a useful if you build an audio device that also needs a non-audio control channel. It makes it easy to ensure that both the audio connection and control connection are connected to the same device. This is extremely difficult to do with BLE. But iAP2 isn't a particularly nice protocol, and has weird corner cases. You should not go through the cost and trouble of MFi just to get a SPP-like serial protocol.
On iPhones, access to BR/EDR non-audio profiles is limited to the proprietary iAP2 and GATT over BR/EDR (which is less useful than it sounds since most chips don't support it). Classic audio profiles are limited to what Apple's audio frameworks support, which is not very flexible.
If you make a Bluetooth audio device, have a little extra room on your board, enough margin to add a chip to your BOM, and your SoC supports it, MFi is definitely worth exploring. You can improve the pairing experience marginally and it makes it a bit easier to manage an extra control channel. Plus, you get to add that "Made for iPhone" logo to your packaging. For hearing aids (which I have less experience with), I expect that MFi is a must-have today. From my casual investigation, it looks like it adds some really nice capabilities.
For everyone else, you want BLE.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 1 year ago.
Improve this question
I am trying to find the best way for the Apple Watch to transfer data with the iPhone even when they are not near each other. An example would be how do water tracking apps sync data with the watch. Do they use CloudKit or something else?
Your Apple Watch uses Bluetooth when your iPhone is near, which conserves power.
If Bluetooth isn’t available, your Apple Watch will try to use Wi-Fi. For example, if compatible Wi-Fi is available and your iPhone isn't in Bluetooth range, your Apple Watch uses Wi-Fi.
Apple watches can use wifi, bluetooth, and cellular (if the device is compatible). As the Apple website states (Read this to learn more), an Apple watch uses bluetooth for short range communication, like when an iphone is nearby as it uses BLE (Bluetooth low energy) which helps preserve battery. For long range communication it uses wifi. Or otherwise if the Apple watch is cellular compatible it can use cellular data.
Based on what I can understand from your question, I'd say you can think of this as two-way communication between your Apple Watch app and the paired iPhone app.
There's an interesting sample project from Apple that you can download and play with here
On the sample project you can see how this is accomplished but handling Watch Connectivity Background Tasks in which you could transfer user info and manage the outstanding transfers, transfer files, view transfer progress, and manage the outstanding transfers.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I need to automate iPhones (6s) that are in a radiated screen room to place VoLTE calls to each other. I have already done this with Android, I set a laptop in the screen room and connect the Android phones via USB and then run scripts from the command line using ADB which automates the native-layer on the phones. I need similar capability for iPhones. Apple says no solution exists. I have looked into other software (Ranorex, TestPlant, Conflair, etc.) but they cannot meet my needs as they are unable to access or automate the native-layer, only the application-layer. But I am not trying to automate an app, I need to automate the phones.
I would prefer not to jail break, and my iPhones need to be running the latest iOS version. So, is it possible? How can I get equivalent functionality of ADB for iOS?
No, Apple does not expose the ability to place phone calls to third party apps. They specifically block all such access from third party apps. You would need to build a rig that operated the screen like a user, which would not be easy or very reliable.
You need to do this externally, not over USB or via software. Possible external mechanisms might include a robotically controlled touch stylus and an emulated audio headset. If needed to avoid RF interference, you may need to find/build an pneumatically actuated robotic interface for the touch stylus.
Added: Another possibility: It may be possible to set it up (in the Settings app) so that Siri via Bluetooth or wired-headset audio can place a phone call.
An emulated wired-headset with a prerecorded message and "Hey Siri" enabled in Settings might work. Also disable Auto-Lock in Settings.
Like what duncan said, it is not possible with ios. I sometimes miss androids 'freedom' when i code in ios, at the same time as an end user happy that ios is 'strict' about this kind of stuff
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed last year.
Improve this question
I need to integrate a solution into my application that allows the user to use a handheld barcode scanner that is connected to an iPad via Bluetooth to scan data into the app. I currently have the Motorola CS3070, but I was hoping to find a library/framework that works with multiple devices.
I've done quite a bit of looking around and have only been able to find libraries that utilize the built-in camera for barcode scanning. I have found a few third party libraries for hand held devices, but these libraries only work with specific readers.
So my question is has anyone come across of a library/framework that will allow an iOS device to accept data from a bluetooth barcode scanner such as the Motorola 3070?
Thanks
Miken,
Socket Mobile (full disclosure, my employer) can supply and SDK for the Socket Mobile Bluetooth Cordless Handheld Scanners (CHS) for iOS. We have a full set of API's that will allow you full control over our scanners. Our SDK does only support the Socket Scanners however.
Also, when looking for a scanner to use with iOS, you should look for one that is Apple MFI approved, that allows the scanner to operate in Serial Port Profile mode, which is much more efficient than the Bluetooth HID mode.
Socket has a low end scanner that will only read 1D barcodes, on up to an imager scanner that can read almost all 2D barcodes.
Using the SDK allows you to connect to any of our cordless scanners.
Please see the Socket Mobile web site for more information http://www.socketmobile.com/support/developers
Regards,
Len
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
How can I make a Bluetooth Mac app that connects with an iOS app and sends messages ?
Or an iOS app that connects with a Mac app via a local WiFi network ?
NOTE: this answer is now outdated as with the introduction of CoreBluetooth (Bluetooth LE v4) since iOS6 and OSX 10.7 any iOS device is open to any kind of communication with any other BLE compatible device, either a Mac or PC or external hardware.
The answer below is still valid if you cannot support BLE, due to old hw or specific requirements (e.g. required bandwidth)
As far as I know, this is almost impossible. Bluetooth connection between iOS devices is well supported with the GameKit framework but there is no support for connection with other OSes, OSX included. The only connection between Mac and iPHone I have ever seen is with the hotspot feature (when it works).
Consider for example the Keynote Remote app. This app allows you to control a Keynote presentation using your iPhone as a remote. It allows this control when the two devices are Keynote-paired on the WiFi, but this connection is not allowed using Bluetooth, while with Bluetooth you can control a Keynote presentation between two iOS devices. And you can find this statement in Apple tech note 2152:
An important consequence of the first point is that Bluetooth peer-to-peer networking can only be used to communicate between iOS devices; you can't use it, for example, to communicate between an iOS device and a computer running Mac OS X.
As far as the WiFi question (I forgot to reply to it in my first question) essentially you to kind of problems to solve: discoverability and data transfer. In order to determine if two devices are in the same network, you can use the Bonjour protocol. Essentially one of the machines publish itself as service-provider for a specific service (you can create your own service: e.g. "_mytype._myprotocol") and the would-be client will search for a server. Besides Bonjour takes care of other things like addressing and DNS without the two apps to know the details of the local network they are in. This is explained in Apple docs here: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/NetServices/Articles/about.html
Note that Bonjour is at the base of features like AirPlay (Apple TV), AirPrint and probably also AirDrop but it is supported by a lot of devices, e.g. some NAS. In the SampleCodes section of the Apple developers site you will find a great example, called "BonjourWeb" that shows how service discovery works. You can easily try it in your iPhone simulator or device and if you have some Bonjour-enabled device you will see it in the list.
The second problem of course is then real data communication between the two devices, is up to you to define a custom client/server or use a standard web-server based approach. This depends on the application and the data flow. The first approach is better as it is highly customized, you must study the NetworkStreams concepts and check out the SimpleNetworkStreams code in the apple library (this is a simple communication app between a Mac and an iPhone; not always working but it is a good starting point)