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:
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)
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.
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.
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.
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.
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.
From the description of your scenarios one can break it down to 2 simple steps:
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.
"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.
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...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With