Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multipeer Connectivity: iOS and Android [closed]

I am working with a team on a cross platform app (Android and iOS).

This app is meant to use the concept of beacons and/or mesh networking or multipeer-connectivity. At the moment our team is using Xamarin as our IDE for creating a single code base.

After significant research (obviously not significant enough), I have only been able to find the following resources..

http://altbeacon.org/

http://altbeacon.github.io/android-beacon-library

https://github.com/octoblu/meshblu

https://github.com/octoblu/MeshbluKit-iOS

https://github.com/octoblu/MeshbluKit-Android

https://github.com/CharruaLab/AltBeacon

https://blog.xamarin.com/play-find-the-monkey-with-ios-7-ibeacons/

A couple of questions:

Does AltBeacon allow communication between platforms?

Is there a built-in way to establish Multipeer/Mesh networking in Xamarin/C#?

Does Estimote require the use of stickers/estimote beacons, or can a smartphone act as a beacon?

What I am looking for:

  1. A way to establish connections between iOS and Android devices when the users have no WiFi or "data" connection.

  2. Essentially each device will act as a "beacon" to each other.

  3. Xamarin/C# is a must (though I will hear other solutions if they are convincing)

  4. This scenario:

Two individuals walk pass one another. Both have the app running on their phones. One individual has an iphone and the other has an android. Their apps are running in the background (their phones are in their pockets or hands and are locked.. meaning not in "use"). As the individuals walk past each other their phones detect one another and send/receive text from one another

Prior to this event taking place, User 1 used the app to save a note containing the following information...

"Water fountain working properly"

While User 2 used the app on their device to save a note containing the following information...

"Hand rail slightly damaged"


After the users have passed each other, the next time they open their app they should see a single updated note reading...

"Water fountain working properly

Hand rail slightly damaged"


Possible Solutions: TBD

Rejected Solutions: TBD

--

Current conclusions: Apps currently exist such as FireChat, ViewRanger (I believe), or the Xamarin example "Find the Monkey". Apple uses iBeacons in their stores and others use AltBeacon for android devices. I have concluded that it is most certainly possible but am in search of how to execute it best while having both platforms serve as those beacons to each other.

like image 667
captainrad Avatar asked Apr 01 '16 21:04

captainrad


People also ask

What is Multipeer connectivity?

Apple's Multipeer Connectivity framework introduces a way to send and receive data between users of your app. Multipeer Connectivity uses your device's networking hardware, such as Bluetooth and Wi-Fi, without requiring an internet connection.

Can iOS communicate with Android?

FaceTime link In iOS 15, Apple introduced the addition of FaceTime links with their update to the application. For the first time, non-Apple devices could take part in FaceTime calls via the web. You can send a link either to start a call or while in a live FaceTime call.

Does iOS support Wi-Fi Direct?

You can connect an iPhone or iPad directly to your product without using a wireless router or access point. To use this feature, your iOS device must have the following installed: iOS 11 or later.

What is nearby interactions iPhone?

The Nearby Interaction framework streams distance and direction between opted-in Apple devices containing the U1 chip. Discover how this powerful combination of hardware and software allow you to create intuitive spatial interactions based on the relative position of two or more devices.


2 Answers

From the description of your scenarios one can break it down to 2 simple steps:

  1. Discovering nearby devices
  2. Exchanging simple data upon discovery

Required: this should work x-platform iOS and Android

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.

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: http://www.p2pkit.io, http://www.intromi.co and http://www.underdark.io or google nearby

With regards to the use of native code with Xamarin you can simple create a bridge (Binding: https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/ ).

Disclaimer: I work for Uepaa, developing p2pkit.io for Android and iOS.

like image 121
p2pkit Avatar answered Oct 09 '22 20:10

p2pkit


"What I am looking for: A way to establish connections between iOS and Android devices when the users have no WiFi or "data" connection. Essentially each device will act as a "beacon" to each other. Xamarin/C# is a must (though I will hear other solutions if they are convincing)"

BLE (Bluetooth Low Energy) is what are you looking for, not just iBeacon part of it.

iBeacon is built on top of BLE stack, by setting "manufacturer specific data" (which Apple did) of BLE advertisement packet. iBeacon works in BLE "broadcast" mode and it transfers only three data field UUID, major (16-bit), minor (16-bit). Additionally RSSI (signal strength is transmitted/calculated).

The bad thing is that if you use iOS core location or any other iBeacon library it will work with UUID, major, minor, RSSI. You can not transfer any additonal data over standard iBeacon protocol.

  1. What you are looking is CoreBluetooth for iOS or Bluetooth Low Energy library on Android.
  2. You probably have to create your custom profile using GATT/ATT BLE layers (since none of existing probably wont fit to your request)
  3. You need to develop app over your BLE profiles setup

Keep in mind that BLE is low power and low speed communication, where you can expect (from my tests on many different platforms) up to 20 bytes every 25-30ms

Hope this helps...

like image 24
Darko Djuric Avatar answered Oct 09 '22 20:10

Darko Djuric