2013-07-02 24 views
11

Vorrei creare un'app che gli utenti possano utilizzare in un'area/luogo in cui è presente NO GSM/3G o qualsiasi tipo di ricezione di celle . Forniamo anche una rete WiFi chiusa senza un uplink internet, quindi è una LAN dove i dispositivi (PC e smartphone) possono comunicare tra loro ma non con il mondo esterno (non chiedere perché :)Invia notifiche push a iOS/Android su nework WiFi chiuso (senza connessione Internet)

Gli utenti essere istruito a scaricare l'app prima che arrivino alla sede.

La mia app deve essere in grado di ricevere notifiche push, ma ovviamente non può raggiungere gli APN di Apple oi servizi di cloud computing di Google. L'app tuttavia registra sul nostro server centrale sulla LAN con un IP. (accede quando l'utente è connesso alla rete WiFi e abbiamo il numero di telefono che appartiene a un telefono registrato.)

Ora la mia domanda è: c'è un modo per inviare una notifica push quando viene attivato un evento e l'app deve svegliarsi senza utilizzare o connettersi ai servizi di notifica online di Google o di Google ?? Per esempio. un servizio di notifica push locale che può essere utilizzato per inviare una notifica a un telefono degli utenti in base a un evento attivato dal nostro server?
Qualche suggerimento?

Aggiornamento: Giusto per chiarire, è una semplice applicazione VoiP che si connette al nostro server sip e gli utenti si chiamano l'un l'altro, quindi deve essere abbastanza in tempo reale per le due chiamate da connettere. Ma a quanto pare puoi solo svegliare l'app tramite notifica push e quindi bisogno di internet.

risposta

4

E.g. un servizio di notifica push locale che può essere utilizzato per inviare una notifica a un telefono degli utenti in base a un evento attivato dal nostro server?

Rispetto ad Android, la risposta è "non proprio". Le opzioni disponibili sono:

  • implementare il meccanismo "push", sotto forma di una certa coda di messaggi, in cui i dispositivi sondaggio alla ricerca di messaggi di tanto in tanto, o

  • Utilizzare un WakeLock e WifiLock per mantenere il dispositivo (e WiFi) acceso costantemente, quindi utilizzare qualcosa come MQTT per il messaggio push

uno di questi sarà male per la batteria, anche se il primo è più configurabile in termini di assorbimento di energia (per esempio, Se controlli solo i messaggi una volta all'ora, non sarà male).

Il motivo per cui GCM può mantenere basso l'assorbimento di corrente è dovuto ai ganci speciali per le connessioni dati mobili all'interno del sistema operativo e del chipset, in modo che la CPU possa spegnersi mantenendo una connessione socket aperta al server push, dove i pacchetti in ingresso da quel server si riattiva il dispositivo. Questo non è disponibile per il WiFi.

+0

Potrebbe spiegare perché sono necessari WakeLock e WifiLock? – Naxos84

+0

@ Naxos84: se il dispositivo si addormenta o la radio WiFi viene disattivata, i messaggi MQTT non vengono recapitati. – CommonsWare

+0

Grazie. Un'altra domanda su questo. Facebook utilizza MQTT (senza GCM?) Ma non penso che utilizzino WakeLock e WifiLock. Quindi deve esserci un altro modo per ottenere queste notifiche ... – Naxos84

3

E per iOS la risposta è NO. Non è possibile inviare notifiche a un dispositivo senza utilizzare il server APNS di Apple. La tua unica opzione sarebbero le notifiche locali attivate in qualche altro modo sul dispositivo tramite WiFi, anche se avresti ancora bisogno di tenere il dispositivo sveglio per riceverle o magari aggiungere il servizio VOIP o un altro servizio compatibile per consentire l'elaborazione in background continua.

Local Notifications iOS

+1

L'app è un'app Voip quindi è necessario essere in tempo reale per connettere le due chiamate. È una semplice app, si connette semplicemente al nostro server sip ma apparentemente non riesco a far scattare l'app senza notifiche push. Ho trovato anche questo http://stackoverflow.com/questions/4184655/apns-spoof-fake ... che ne dici? – user2542225

0

probabilmente avete da tempo risolto o rinunciato a vostro problema specifico. Ma per riferimento iOS si è evoluto nel corso degli anni e now supports il tipo esatto di funzionalità VOIP che descrivi.

A Voice over Internet Protocol (VoIP) applicazione permette all'utente di effettuare telefonate utilizzando una connessione Internet, invece di servizio di telefonia cellulare del dispositivo. Tale app deve mantenere una connessione di rete permanente al servizio associato in modo che possa ricevere chiamate in entrata e altri dati rilevanti. Anziché mantenere le app VoIP sveglie tutte le volte , il sistema consente loro di essere sospese e fornisce le strutture per il monitoraggio dei loro socket. Quando viene rilevato il traffico in entrata , il sistema riattiva l'app VoIP e restituisce il controllo dei suoi socket.