2016-04-01 22 views
7

Sto lavorando con un team su un'app cross platform (Android e iOS).Connettività multipeer: iOS e Android

Questa applicazione ha lo scopo di utilizzare il concetto di beacons e/o mesh networking o multipeer-connectivity. Al momento il nostro team utilizza Xamarin come IDE per creare una base di codice singolo.

Dopo una ricerca significativa (ovviamente non abbastanza significativo), sono stato solo in grado di trovare le seguenti risorse ..

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/

Un paio di domande:

fa AltBeacon consentire la comunicazione tra le piattaforme?

Esiste un modo integrato per stabilire il networking Multipeer/Mesh in Xamarin/C#?

L'Estimote richiede l'uso di adesivi/stimote beacons o uno smartphone può fungere da faro?

Quello che sto cercando:

  1. Un modo per stabilire connessioni tra iOS e dispositivi Android in cui gli utenti non hanno alcuna connessione WiFi o "dati".

  2. In sostanza, ogni dispositivo fungerà da "faro" l'uno dall'altro.

  3. Xamarin/C# è un must (anche se devo sentire altre soluzioni se sono convincenti)

  4. Questo scenario:

due individui a piedi passano l'un l'altro. Entrambi hanno l'app in esecuzione sui loro telefoni. Un individuo ha un iphone e l'altro ha un androide. Le loro app sono in esecuzione in background (i loro telefoni sono nelle loro tasche o nelle mani e sono bloccati .. significato non in "uso"). Come gli individui a piedi oltre a vicenda i loro telefoni rilevano l'un l'altro e inviare/ricevere messaggi di testo da un altro

Prima di questo posto prendendo evento, utente 1 usato l'applicazione per salvare una nota contenente le seguenti informazioni .. .

"Fontana di acqua di funzionare correttamente"

Mentre utente 2 utilizzato l'app sul proprio dispositivo per salvare una nota contenente le seguenti informazioni ...

"rail a mano un po ' danneggiato "


Dopo gli utenti hanno superato l'un l'altro, la prossima volta che aprono la loro applicazione si dovrebbe vedere una sola nota aggiornato a leggere ...

"Fontana di acqua di funzionare correttamente

ferroviario a mano leggermente danneggiato"


Possibili soluzioni: TBD

Solutions rifiutate: TBD

-

conclusioni attuali: applicazioni attualmente esistenti, come FireChat, ViewRanger (credo), o l'esempio Xamarin "Find the Monkey". Apple usa iBeacons nei loro negozi e altri usano AltBeacon per dispositivi Android. Ho concluso che è sicuramente possibile ma sono alla ricerca di come eseguirlo al meglio mentre entrambe le piattaforme fungono da fari reciproci.

+0

Quali conclusioni hai trovato? Hai davvero scritto un'applicazione di proof-of-concept? – t0mm13b

+0

Buone domande, ho aggiornato il mio post. – captainrad

+0

Su iOS il dispositivo non può fungere da faro in background. Anche iBeacons ecc pubblicizzano solo 3 identificatori. Non scambiano informazioni. Sarà necessario implementare i ruoli periferici e centrali di BLE. Su iOS questo è tramite Core Bluetooth. Non uso Xamarin, ma ho visto domande di base Bluetooth su di esso, quindi è supportato. Presumo che questo sia vero anche per Xamarin su Android tramite le librerie Android appropriate anche se non ho idea di quanto portatile sarebbe il codice C#. Sospetto che sia necessaria un'implementazione specifica per ogni piattaforma – Paulw11

risposta

3

dalla descrizione di il tuo scenario ios si può rompere verso il basso per 2 semplici passaggi:

  1. Alla scoperta di dispositivi nelle vicinanze
  2. Scambio di dati semplici al momento della scoperta

richiesto: questo dovrebbe funzionare iOS x-piattaforma e Android

I Credo che il modo migliore per avvicinarsi a questo è usare BLE, che è supportato da entrambe le piattaforme (alcune migliori di altre).

Su iOS un dispositivo può agire sia come periferica BLE Central che come periferica BLE allo stesso tempo, su Android la situazione è più complessa in quanto non tutti i dispositivi supportano lo stato della periferica BLE. Anche lo stack BLE di Android è molto instabile.

Se il tuo caso d'uso è basato sulle funzionalità, ti suggerirei di consultare Framework e librerie che possono ottenere ciò per te, senza che tu debba crearlo da zero.

Ad esempio: http://www.p2pkit.io, http://www.intromi.co e http://www.underdark.io o Google vicina

Per quanto riguarda l'uso di codice nativo con Xamarin semplice è possibile creare un ponte (Rilegatura: https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/).

Disclaimer: Lavoro per Uepaa, sviluppo p2pkit.io per Android e iOS.

+0

Fantastico! In realtà ho iniziato a utilizzare il sottosquadro prima di pubblicare questo. Verificando p2pkit.io e intromi.co ora. Lo vedrò come la risposta tra un paio di giorni dato che ora fornisce le informazioni più utili per me. – captainrad

2

"Quello che sto cercando: Un modo per stabilire connessioni tra iOS e dispositivi Android in cui gli utenti non hanno alcuna connessione WiFi o 'dati'. Collegamento Essenzialmente ogni dispositivo agirà come un 'faro' per l'altro. Xamarin/C# è un must (anche se devo sentire altre soluzioni se sono convincenti)"

BLE (Bluetooth Low Energy) è ciò che stai cercando, non solo IBeacon parte di esso.

iBeacon è costruito sopra lo stack BLE, impostando "dati specifici del produttore" (che Apple ha fatto) del pacchetto di annunci BLE. iBeacon funziona in modalità "broadcast" BLE e trasferisce solo tre UUID del campo dati, maggiore (16 bit), minore (16 bit). Inoltre RSSI (l'intensità del segnale viene trasmessa/calcolata).

La cosa brutta è che se si utilizza la posizione principale iOS o qualsiasi altra libreria iBeacon funzionerà con UUID, maggiore, minore, RSSI. Non è possibile trasferire alcun dato addizionale sul protocollo standard iBeacon.

  1. Quello che stai cercando è CoreBluetooth per iOS o Bluetooth Low Energy library su Android.
  2. Probabilmente avete per creare il tuo profilo personalizzato utilizzando strati GATT/ATT BLE (dato che nessuno di existing probabilmente non adatto alla vostra richiesta)
  3. È necessario sviluppare app sul tuo BLE profili di installazione

Tenete a importa che BLE è potere basso e di comunicazione a bassa velocità, dove ci si può aspettare (dal mio test su molte piattaforme differenti) fino a 20 byte ogni 25-30ms

Spero che questo aiuti ...

Problemi correlati