Sto sviluppando un sistema di chat per web, Android e iOS. Facendo la mia ricerca ho trovato differenze su come GCM e APNS gestiscono le notifiche push.Notifiche push o Socket.io ?, o Entrambi?
Se invio una notifica push a un dispositivo Android tramite GCM, il dispositivo è in grado di decidere se avvisare l'utente o se non è necessario, non lo comunica all'utente. Potrebbe essere solo un aggiornamento dei dati che l'utente non ha bisogno di essere informato. D'altra parte, se invio una notifica push a un dispositivo iOS tramite APNS, il dispositivo non è in grado di decidere se mostrare o meno la notifica, la notifica deve essere mostrata. Inoltre, quando un dispositivo iOS riceve la notifica, i dati di notifica devono contenere la stringa che verrà mostrata all'utente. Su Android, il dispositivo può generare quella stringa.
Quindi, volevo creare un sistema che funzioni allo stesso modo sia per iOS che per Android, e anche per il sito Web (basato su API). Ecco quando ho trovato Socket.io. Socket.io mi dà la libertà di inviare dati al dispositivo (non importa se è iOS o Android) in modo che il dispositivo decida se mostrare o meno le modifiche apportate (potrebbe essere un aggiornamento di un utente, un nuovo messaggio, un invito , o molti altri "eventi"). Ma, facendo la mia ricerca ho trovato alcuni svantaggi sull'utilizzo di Socket.io. Il dispositivo deve essere connesso al socket in modo che le informazioni fluiscano tra il client e il server, ma uno smartphone, nel mondo reale, si connette e disconnette tutto il tempo a reti diverse e interrompe la connessione socket. Inoltre, avendo la connessione aperta, sullo sfondo, c'è un ping pong tra il server e il client per verificare che la connessione sia ancora aperta e che finisca per consumare megas (nel mio paese, paghiamo ogni mega che usiamo , non abbiamo ancora una tariffa fissa) e anche la vita batery. Non so per certo se il consumo è significativo o meno.
Sul lato web, deve funzionare con Socket.io, quindi non è affatto un problema.
Infine, conoscendo i pro e i contro di entrambe le alternative, ho scoperto che posso mescolare entrambe le opzioni e che potrebbe finire per essere la mia migliore opzione. Ad esempio, quando l'app è aperta usa Socket.io e quando è chiuso usa l'APNS o GCM (a seconda del sistema operativo del dispositivo). Ma è una buona pratica? O sarà meglio attaccare solo con una soluzione invece di mescolarle entrambe e perché?
Grazie MOLTO per aver dedicato tempo a leggere questo e ancora di più per rispondere.
Questa è una grande domanda perché qui deve esserci un equilibrio. Sono davvero ispirato dopo aver letto questo perché sto costruendo le notifiche in questo momento su un'app. Userò node.js socket.io per rilevare prima se sono online. In tal caso, utilizzare socket.io per la notifica, altrimenti utilizzare le notifiche per android/ios. Grazie! –
@PDK hai finito per utilizzare entrambi? – ralphgabb
@ralphspoon Ho dovuto usare entrambi, è il modo migliore se vuoi fare la cosa giusta. Ma alla fine, è stato un disastro per gestire il sistema, quindi ho finito per passare a Firebase. – PDK