Is there any framework that connects an iOS device to an Android device using a mesh network?
There are apps like FireChat that ables users to speak to each other using only Bluetooth and wifi (via Apple's multipeer connectivity framework). But is there any way to connect iOS devices to Android devices using multipeer connectivity of some kind?
I'm trying to build an app like FireChat to be used by some friends here in college, but it needs to connect iOS devices to Android devices. If there would only be iOS devices, multipeer connectivity framework would be just fine, but in this case, I don't know which framework to use in order to connect all these devices.
I believe the Open Garden SDK may be able to meet your needs.
Basically it is an SDK for multipeer communication, by the creators of Firechat. And they claim that it is the same technology that Firechat uses, so I believe it will work with Bluetooth.
They also claim it works on Android and iOs, and as Firechat works on Android too now, I would believe that it is true.
Sorry for all the hypotheticals, but I have not been granted access to it yet so I can´t confirm any of these facts.
Yes, try http://p2pkit.io.
Its a cross platform p2p sdk which allows you to discover, estimate range and exchange information with nearby devices using p2p technologies (WiFi, BLE).
Disclaimer: i work for Uepaa developing p2pkit for iOS and Android.
Related
I want to use Apple's Multipeer Connectivity framework in an upcoming app. My problem is that this app should also be available for Android, and iOS users should be able to use it communicate with Android users. The Multipeer Connectivity framework does not appear to be cross platform, and I have been unable to find any implementations of it for Android.
It seems that Android has a package for creating P2P Wi-Fi connections, a package for Near Field Communication, and a package for Bluetooth Low Energy communication. What's missing is something like Multipeer Connectivity that abstracts these services into a single API. So I don't see any kind of a platform independent alternative.
So what should I do? What is the normal way for nearby devices to communicate across platforms?
Well I'm working on this app to send data between android and iOS and I got it to work between iOS devices with Apple's Multipeer Connectivity framework, but I am currently wondering how do you achieve it between both platforms? even if you are willing to write it from scratch.
How come Firechat is able to do it? As I remember, you can exchange data between both platforms with their app.
Edit: https://www.opengarden.com/meshkit.html It seems the MeshKit SDK used in Firechat is now available (for large organisations).
I am very interested in this subject as well and I came across these links
AllJoyn
AllJoyn® is a collaborative open-source software framework that makes
it easy for developers to write applications that can discover nearby
devices, and communicate with each other directly regardless of
brands, categories, transports, and OSes without the need of the cloud
Source: https://github.com/alljoyn/alljoyn.github.com/wiki
OpenPeer SDK
Open Peer is an open P2P signalling protocol
Source: http://openpeer.org/open-peer-sdk-for-ios/
Microsoft's Project Rome
"Project Rome" is a project code name for Microsoft's cross-device
experiences platform using the Microsoft Graph. Source: https://learn.microsoft.com/en-us/windows/uwp/launch-resume/communicate-with-a-remote-app-service
Mutipeer connectivity cannot connect iOS and Android devices. Firechat is using its own implementation.
More information here:
A couple of weeks after its iOS launch, FireChat made its debut on Android. Since Android doesn’t support Apple’s Multipeer Connectivity Framework, developer Open Garden had to build its own mesh networking technology to enable off-the-grid messaging across Android devices.
However, FireChat messaging hasn’t been possible between iOS and Android. That is, until now.
Open Garden has just updated FireChat to allow for off-the-grid messaging even between iOS and Android devices.
While it declines to reveal the exact details of how it managed to make Apple’s multi-peer framework and its Android mesh network connect with each other, Open Garden has told TechCrunch that its cross-platform capability uses peer-to-peer Wi-Fi and Bluetooth personal area networking.
Source: http://appadvice.com/appnn/2014/06/firechat-now-supports-off-the-grid-messaging-between-ios-and-android
Something like text chat can be done over BLE, which is open on both platforms. Sending images would be slow, though, since it doesn't have the throughput of Bluetooth Classic.
You'll want to look into iotivity. https://iotivity.org/ This is the new upcoming inter-device library that the Open Connectivity Foundation is focusing on.
AllJoyn is only being maintained now, and has some significant underlying threading problems that will never be fixed, making call-response type workflows between devices prone to crashing and deadlocking the application code. I don't recommend using it.
So I'm trying to build an app that uses iOS 7 Multipeer Connectivity framework on the iPhone, but I'm now trying to connect the iPhone to an Android device using the same technology. Is this possible?
Is there something like Apple's multipeer connectivity framework for Android, or is there any way of connecting an iPhone to an Android device without using internet or mobile services, but using Wifi and bluetooth only?
Maybe a bit delayed, but technologies have evolved since so there is certainly new info around.
As iOS has yet to open up an API for WiFi Direct and Multipeer Connectivity is iOS only, I believe the best way to approach this is to use BLE, which is supported by both platforms (some better than others).
On iOS a device can act both as a BLE Central and BLE Peripheral at the same time, on Android the situation is more complex as not all devices support the BLE Peripheral state. Also the Android BLE stack is very unstable (to date).
If your use case is feature driven, I would suggest to look at Frameworks and Libraries that can do cross platform p2p for you, without you needing to build it up from scratch.
For example: p2pkit.io or google nearby
Disclaimer: I work for Uepaa, developing p2pkit.io for Android and iOS.
There is currently no way to connect with android over bluetooth, but you can connect with wifi using the Multipeer framework I believe. I know the developer of spaceteam accomplished this with his game. I'm not sure how exactly but it is possible.
Mutipeer connectivity cannot connect iOS and Android devices. Firechat & Spaceteam are using their own implementation.
More information here:
A couple of weeks after its iOS launch, FireChat made its debut on Android. Since Android doesn’t support Apple’s Multipeer Connectivity Framework, developer Open Garden had to build its own mesh networking technology to enable off-the-grid messaging across Android devices. However, FireChat messaging hasn’t been possible between iOS and Android. That is, until now. Open Garden has just updated FireChat to allow for off-the-grid messaging even between iOS and Android devices. While it declines to reveal the exact details of how it managed to make Apple’s multi-peer framework and its Android mesh network connect with each other, Open Garden has told TechCrunch that its cross-platform capability uses peer-to-peer Wi-Fi and Bluetooth personal area networking.
Source: http://appadvice.com/appnn/2014/06/firechat-now-supports-off-the-grid-messaging-between-ios-and-android
Google Nearby can do it. To cross platform, Google Nearby Message Api can do it.
I've been reading up on how to transfer data between iOS devices over Bluetooth using GameKit. I'm not writing a game, per se, but do have a need to transfer a small amount of binary data between two devices. Between two iOS devices, this is easy enough. However, I was wondering if it is possible to transfer data between an iOS device and an Android device via the same mechanism.
Has anyone come across documentation/tutorial that would explain how to do this? Is it even technically possible? Or has Apple put in some sort of restriction that would prevent this?
The other option I discovered was Bonjour over Bluetooth. Would this be a more suitable option for this type of operation?
This question has been asked many times on this site and the definitive answer is: NO, you can't connect an Android phone to an iPhone over Bluetooth, and YES Apple has restrictions that prevent this.
Some possible alternatives:
Bonjour over WiFi, as you mentioned. However, I couldn't find a comprehensive tutorial for it.
Some internet based sync service, like Dropbox, Google Drive, Amazon S3. These usually have libraries for several platforms.
Direct TCP/IP communication over sockets. (How to write a small (socket) server in iOS)
Bluetooth Low Energy will be possible once the issues on the Android side are solved (Communicating between iOS and Android with Bluetooth LE)
Coolest alternative: use the Bump API. It has iOS and Android support and really easy to integrate. For small payloads this can be the most convenient solution.
Details on why you can't connect an arbitrary device to the iPhone. iOS allows only some bluetooth profiles to be used without the Made For iPhone (MFi) certification (HPF, A2DP, MAP...). The Serial Port Profile that you would require to implement the communication is bound to MFi membership. Membership to this program provides you to the MFi authentication module that has to be added to your hardware and takes care of authenticating the device towards the iPhone. Android phones don't have this module, so even though the physical connection may be possible to build up, the authentication step will fail. iPhone to iPhone communication is possible as both ends are able to authenticate themselves.
Maybe a bit delayed, but technologies have evolved since so there is certainly new info around which draws fresh light on the matter...
As iOS has yet to open up an API for WiFi Direct and Multipeer Connectivity is iOS only, I believe the best way to approach this is to use BLE, which is supported by both platforms (some better than others).
On iOS a device can act both as a BLE Central and BLE Peripheral at the same time, on Android the situation is more complex as not all devices support the BLE Peripheral state. Also the Android BLE stack is very unstable (to date).
If your use case is feature driven, I would suggest to look at Frameworks and Libraries that can achieve cross platform communication for you, without you needing to build it up from scratch.
For example: http://p2pkit.io or google nearby
Disclaimer: I work for Uepaa, developing p2pkit.io for Android and iOS.
You could use p2pkit, or the free solution it was based on: https://github.com/GitGarage. Doesn't work very well, and its a fixer-upper for sure, but its, well, free. Works for small amounts of data transfer right now.
I've been looking at iOS 7's new P2P networking framework, MultipeerConnectivity, and from the description, it seems to me that it uses a combination of some kind of Wi-Fi Direct technology and Bluetooth PANs.
Is the Wi-Fi Direct technology in this framework compatible with Android's Wi-Fi Direct? Can this framework actually be used for cross-platform P2P networking?
This is what we know:
There's no BTLE/Bluetooth 4.0 advertisement visible on my Texas Instruments Bluetooth Low energy scanner.
No WiFi Direct activity seen by JuJoDi.
Talkkr app can connect while WiFi is off and the connection takes about 10 seconds.
My working theory: the MultiPeer uses Bluetooth Classic, based on the above.
iOS Bluetooth Classic is known to be under the Apple MFA Accessory API's tight control and lockdown, including the MFA authentication challenge-response. Apple controls the MFA encryption keys (either in software or by the accessory authentication chips). It makes it inaccessible to other platforms.
The device is not found by either when advertising or browsing with MultipeerConnectivity. Tried on Galaxy Tab 2:
No, the two are not compatible.
The MultipeerConnectivity documentation you linked to explicitly states (emphasis mine):
The Multipeer Connectivity framework provides support for discovering
services provided by nearby iOS devices
Although you may be able to hack together a workaround akin to the short-lived iMessage app for Android, I wouldn't recommend it.
Based on my experimentation with iOS 7 AirDrop, it doesn't seem to be using WiFi Direct. The transfer rates are very low indicating that it may only be legacy Adhoc WiFi (capped at 11 Mbps). Did you ever read Apple claiming to support Wifi Direct explicitly? Please read my blog post for details.
I am very interested in this subject as well and I came across these rather old links
AllJoyn
AllJoyn® is a collaborative open-source software framework that makes it easy for developers to write applications that can discover nearby devices, and communicate with each other directly regardless of brands, categories, transports, and OSes without the need of the cloud Source: https://allseenalliance.org/developers/learn
OpenPeer SDK
Open Peer is an open P2P signalling protocol Source: http://openpeer.org/open-peer-sdk-for-ios/
I haven't used any of these libraries but I am interested to add them to my simple game for the fun of it.
source
Peer to peer android and iOS with Wifi direct (multipeer connectivity?)
Maybe a bit delayed, but technologies have evolved since so there is certainly new info around.
As iOS has yet to open up an API for WiFi Direct and Multipeer Connectivity is iOS only, I believe the best way to approach this is to use BLE, which is supported by both platforms (some better than others).
On iOS a device can act both as a BLE Central and BLE Peripheral at the same time, on Android the situation is more complex as not all devices support the BLE Peripheral state. Also the Android BLE stack is very unstable (to date).
If your use case is feature driven, I would suggest to look at Frameworks and Libraries that can achieve this for you, without you needing to build it up from scratch.
For example: p2pkit.io or google nearby
Disclaimer: I work for Uepaa, developing p2pkit.io for Android and iOS.