2012-02-03 29 views
10

Sto lavorando a un'importante release di prodotto per la mia azienda. Stiamo progettando un nuovo dispositivo che vorremmo integrare in un'app iOS. (FYI, siamo stati recentemente accettati nel programma Apple MFi quindi siamo passati a questo passo.)Qual è il modo più semplice per connettere un dispositivo a un iPad da un'applicazione?

Ciò che desideriamo è creare un ecosistema hardware/software in cui i nostri utenti possano avviare la nostra app per iPad (sì, è specifico per l'iPad e per i dispositivi non iPhone o iPod Touch) e l'applicazione scoprirà automaticamente e collegherà qualsiasi hardware di prossimità che abbiamo sviluppato.

Ciò significa che sarà necessario implementare una qualche forma di processo di connessione del dispositivo sia sull'iPad che all'interno dell'hardware.

C'è un modo per codificare la connettività automatica a un dispositivo Bluetooth dall'interno di un'applicazione iOS?

Sono a conoscenza del Core Bluetooth Framework che ha questa funzionalità, tuttavia funziona solo con il nuovo iPhone 4S. Questa non è un'opzione.

Ho anche studiato l'External Accessory Framework, che può essere utilizzato per connettersi a dispositivi esterni sia che siano collegati tramite la porta iPod o Bluetooth. Questa è un'opzione ma, se la mia comprensione è corretta, il nostro hardware deve essere già associato a iPad prima che il software iOS possa connettersi ad esso. Questo è meno che preferibile perché anche se molti dei nostri dispositivi potrebbero non essere nelle immediate vicinanze in un determinato momento, i nostri clienti potrebbero potenzialmente possedere i dispositivi di 100 che potrebbero desiderare di connettersi con il nostro software.

Quali sono le mie opzioni o alternative ragionevoli? L'obiettivo finale è fornire agli utenti un mezzo molto semplice per connettersi ai nostri dispositivi, dal nostro software, su un iPad.

NOTA: NON DEVO eseguire il jailbreak dell'iPad o interrompere qualsiasi accordo TOS di Apple.

UPDATE (2012/03/07) ho visto oggi che il 'nuovo iPad' (come viene ufficialmente chiamato) sarà Bluetooth 4.0 capable. Presumo questo significa che questo dispositivo iPad sarà in grado di utilizzare il Core Bluetooth Framework. Questo non risolve immediatamente il mio problema perché vogliamo rimanere compatibili almeno con il dispositivo iPad di "ultima generazione", ma vale la pena segnalarlo per altri che potrebbero cercare una risposta del genere.

+0

Mi chiedo se riceverete qualche risposta, dato che tutto questo è (come di solito) in termini NDA.E per il logo "Made for iPad": questo ricorda la vecchia CPU Intel 486 con l'impronta "Compatibile con Windows" :-) –

+0

Sì, praticamente tutto ciò che puoi fare per sviluppare l'hardware per un dispositivo iOS è coperto da una NDA . Tuttavia, in questo caso sto parlando di comunicare con un dispositivo da iOS. Immagino che ci possano essere delle opzioni che possono essere discusse perché il software scritto per un dispositivo iOS non è coperto dagli accordi MFi poiché sono strettamente correlati allo sviluppo dell'hardware. – RLH

+0

Ho leggermente modificato questa domanda in modo che sia chiaro che non sto cercando risposte su come farlo dal lato hardware. La mia domanda è specifica per le opzioni di connettività software iOS. Cosa posso fare dal mio progetto iOS per connettermi facilmente all'hardware Bluetooth che posso controllare. – RLH

risposta

1

Non è possibile connettere un dispositivo iOS a un dispositivo Bluetooth senza prima l'associazione. È stato progettato appositamente da Apple per ridurre la probabilità che qualcuno possa connettere un dispositivo bluetooth senza che l'utente ne sia a conoscenza. Se l'associazione di ciascun dispositivo non è accettabile (e sembra che lo sia) e non si desidera sviluppare una chiave hardware, l'unico percorso rimanente che riesco a vedere è quello di rendere i dispositivi in ​​grado di trasmettere dati tra di loro come una rete mesh. In questo modo l'utente dovrebbe solo accoppiarsi con un singolo dispositivo, e quell'unità accoppiata dovrebbe trasmettere le comunicazioni tra gli altri dispositivi e l'iPad.

1

Una delle vostre alternative sarebbe andare WiFi (AdHoc o Infrastruttura) con Bonjour. Ad esempio, sarete in grado di rilevare il dispositivo nelle vicinanze (se sta mantenendo il proprio AdHoc quindi da SSID, se è nella rete di infrastruttura e quindi dal servizio annunciato). Un grande svantaggio sarebbe che non si poteva connettersi direttamente (dall'app) alla rete del dispositivo - l'utente avrebbe dovuto farlo manualmente.

Come per BT: il grande svantaggio è la mancanza di un protocollo seriale (non implementato in iPhone/iPod/iPad).

+0

Abbiamo bisogno di questo meccanismo Bluetooth come mezzo di comunicazione secondario per vari motivi. L'hardware che sviluppiamo può connettersi a una rete locale e, di fatto, fa la nostra versione attuale del prodotto. Tuttavia, non tutti i clienti hanno la possibilità di collegare in rete i propri dispositivi a causa di vincoli fisici, di posizione (WiFi o cablati). Inoltre, questa applicazione avrà una modalità super-utente per i nostri tecnici di supporto. Utilizzeranno anche questa app, o simile, per connettersi ai nostri dispositivi, per risolvere eventuali problemi. Per esperienza, i nostri tecnici hanno bisogno dei mezzi più semplici per connettersi a questi dispositivi. – RLH

+0

A, ok. Quando stavi chiedendo delle alternative non ho visto che doveva essere BT. Il problema con i dispositivi iOS è che supportano (nel migliore dei casi) solo i profili HFP 1.5, PBAP, A2DP, AVRCP, PAN, HID (http://support.apple.com/kb/HT3647) ... questo è quanto posso dire senza infrangere NDA –

+0

si potrebbe rendere un dispositivo rilevabile via BT e quindi andare per BT audio modem (e un modem in codice sul lato iOS) ma questo è come reinventare la ruota –