2016-04-01 8 views
7

Ich arbeite mit einem Team auf einer Cross-Plattform-App (Android und iOS).Multipeer Connectivity: iOS und Android

Diese App soll das Konzept von beacons und/oder mesh networking oder multipeer-connectivity verwenden. Im Moment nutzt unser Team Xamarin als unsere IDE zum Erstellen einer einzelnen Codebasis.

Nach bedeutender Forschung (offensichtlich nicht signifikant genug ist), habe ich nur in der Lage gewesen, die folgenden Ressourcen zu finden ..

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/

Ein paar Fragen:

Does AltBeacon Kommunikation zwischen Plattformen erlauben?

Gibt es eine integrierte Möglichkeit zum Einrichten von Multipeer/Mesh-Netzwerken in Xamarin/C#?

Benötigt Estimote die Verwendung von Aufklebern/Beacons, oder kann ein Smartphone als Leuchtfeuer fungieren?

Was ich suche:

  1. Eine Möglichkeit, Verbindungen zwischen iOS und Android-Geräte zu schaffen, wenn die Nutzer haben keine WiFi oder „Daten“ Verbindung.

  2. Im Wesentlichen wird jedes Gerät als "Beacon" für einander fungieren.

  3. Xamarin/C# ist ein Muss (obwohl ich andere Lösungen hören, wenn sie überzeugend sind)

  4. Dieses Szenario:

Zwei Personen sie zu Fuß passieren. Beide haben die App auf ihren Handys laufen. Eine Person hat ein iPhone und die andere hat einen Android. Ihre Apps laufen im Hintergrund (ihre Telefone sind in ihren Taschen oder Händen und sind gesperrt. Bedeutet nicht in "verwenden"). Da die Menschen aneinander vorbei laufen ihre Telefone erkennen einander und Senden/Empfangen von Text voneinander

Vor diesem Ereignis stattfindet, User 1 verwendet, um die Anwendung, um eine Notiz zu speichern folgende Informationen enthalten .. .

"Wasserbrunnen gut funktionieren"

Während Benutzer 2 die App auf ihrem Gerät verwendet, um eine Notiz mit folgenden Informationen ...

„Handlauf leicht zu sparen beschädigt "


Nachdem die Benutzer haben sie übergeben, das nächste Mal, wenn sie ihre App öffnen sollten sie ein einziger aktualisierte siehe Hinweis zu lesen ...

„Brunnen Wasser gut funktionierten

Handlauf leicht beschädigt“


Mögliche Lösungen: TBD

Abgelehnt Lösungen: TBD

-

Aktuelle Schlussfolgerungen: Apps sind derzeit wie Firechat, Viewranger (glaube ich), oder das Xamarin Beispiel "Find the Monkey". Apple verwendet iBeacons in ihren Geschäften und andere verwenden AltBeacon für Android-Geräte. Ich bin zu dem Schluss gekommen, dass dies höchstwahrscheinlich möglich ist, aber ich bin auf der Suche nach der besten Ausführung, während beide Plattformen als diese Beacons füreinander dienen.

+0

Welche Schlussfolgerungen haben Sie gefunden? Haben Sie tatsächlich eine Proof-of-Concept-Anwendung geschrieben? – t0mm13b

+0

Gute Fragen, ich habe meinen Beitrag aktualisiert. – captainrad

+0

Auf iOS kann das Gerät nicht als Beacon im Hintergrund fungieren. Auch iBeacons usw. werben nur 3 Bezeichner. Sie tauschen keine Informationen aus. Sie müssen BLE-Peripheriefunktionen und zentrale Rollen implementieren. Bei iOS ist dies über Core Bluetooth. Ich benutze Xamarin nicht, aber ich habe Kern-Bluetooth-Fragen darauf gesehen, daher wird es unterstützt. Ich nehme an, dies gilt auch für Xamarin auf Android über die entsprechenden Android-Bibliotheken, obwohl ich keine Ahnung habe, wie tragbar der C# -Code wäre. Ich vermute, dass Sie spezifische Implementierung für jede Plattform benötigen – Paulw11

Antwort

3

aus der Beschreibung erwarten dein Szenario ios man kann es brechen zu 2 einfachen Schritten:

  1. Entdeckung Geräte in der Nähe
  2. Austausch von einfachen Daten nach Entdeckung

erforderlich: dies sollte x-Plattform iOS und Android arbeitet

I Ich glaube, der beste Weg, dies zu erreichen, ist die Verwendung von BLE, das von beiden Plattformen unterstützt wird (einige besser als andere).

Auf iOS kann ein Gerät gleichzeitig als BLE Central und BLE Peripheral funktionieren, auf Android ist die Situation komplexer, da nicht alle Geräte den BLE Peripheral State unterstützen. Auch der Android BLE Stack ist sehr instabil.

Wenn Ihr Anwendungsfall Feature-getrieben ist, würde ich vorschlagen, Frameworks und Bibliotheken zu betrachten, die dies für Sie erreichen können, ohne dass Sie es von Grund auf neu aufbauen müssen.

Zum Beispiel: http://www.p2pkit.io, http://www.intromi.co und http://www.underdark.io oder Google in der Nähe

Im Hinblick auf die Verwendung von nativen Code mit Xamarin können Sie einfach eine Brücke erstellen (Bindung: https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/).

Haftungsausschluss: Ich arbeite für Uepaa und entwickle p2pkit.io für Android und iOS.

+0

Super! Wirklich angefangen, Underdark zu benutzen, bevor du das gepostet hast. Jetzt p2pkit.io und intromi.co auschecken. Ich werde das als Antwort in ein paar Tagen überprüfen, da es die nützlichsten Informationen für mich jetzt bietet. – captainrad

2

„Was ich suche: Eine Möglichkeit, Verbindungen zwischen iOS und Android-Geräten zu schaffen, wenn die Benutzer keine WiFi oder haben‚Daten Leuchtfeuer ‚miteinander‘. Verbindung Im Wesentlichen jedes Gerät als handeln‘. Xamarin/C# ist ein Muss (obwohl ich andere Lösungen hören, wenn sie überzeugend sind)“

BLE (Bluetooth Low Energy) ist das, was Sie suchen, nicht nur IBeacon Teil davon.

iBeacon ist auf dem BLE-Stack aufgebaut, indem "herstellerspezifische Daten" (was Apple getan hat) des BLE-Advertisement-Pakets gesetzt wurden. iBeacon arbeitet im BLE- "Broadcast" -Modus und überträgt nur drei Datenfelder UUID, Major (16 Bit), Minor (16 Bit). Zusätzlich RSSI (Signalstärke wird übertragen/berechnet).

Die schlechte Sache ist, dass, wenn Sie iOS Core Location oder eine andere iBeacon-Bibliothek verwenden, es mit UUID, Major, Minor, RSSI funktioniert. Sie können keine zusätzlichen Daten über das Standard-iBeacon-Protokoll übertragen.

  1. Was Sie suchen, ist CoreBluetooth für iOS oder Bluetooth Low Energy Bibliothek auf Android.
  2. Sie müssen wahrscheinlich Ihr eigenes Profil erstellen Sie sich mit der GATT/ATT BLE Schichten (da keine existing wahrscheinlich passen auf Ihre Anfrage wont)
  3. Sie müssen sich entwickeln App über Ihre BLE Profile Setup

Halten beachten Sie, dass BLE niedrige Leistung und niedrige Geschwindigkeit Kommunikation ist, wo man (aus meinen Tests auf vielen verschiedenen Plattformen) bis zu 20 Byte jeden 25-30ms

Hope this helps ...