In che modo un'applicazione Web può inviare notifiche push a dispositivi iOS? [chiuso]


121

Sto lavorando a un'app Web. Come posso inviare notifiche push agli utenti iOS quando sono presenti nuovi contenuti?


Quale notifica adesso?


Stai cercando con il suono? Quindi se vuoi una notifica sonora mentre il cellulare è bloccato in modalità; il suo nome è Specific Push.
mrbengi

Risposte:


93

Per essere più specifici, affinché un'applicazione web possa inviare notifiche push a un dispositivo mobile, come l'iPhone, il dispositivo mobile deve essere registrato per ricevere notifiche push per una particolare applicazione. La registrazione per la notifica push viene effettuata tramite un'app nativa e può essere eseguita solo tramite un'app nativa. Una volta che l'app nativa è stata registrata per la notifica push, può inviare il token di autorizzazione al server, che può essere utilizzato insieme al certificato utilizzato per il provisioning del client nativo, per inviare le notifiche push al dispositivo mobile.

Come specificato in un'altra risposta, un'opzione è "racchiudere" la tua applicazione web in un'applicazione nativa. Significa che creeresti un'applicazione nativa che fondamentalmente presenta una UIWebView (per iPhone dev) all'utente che mostra la tua applicazione web. Sebbene funzioni più o meno allo stesso modo del browser nativo, potresti aggiungere la possibilità di registrarti per le notifiche push utilizzando i controlli nativi.

Sarebbe utile per te rivedere il documento di notifica push di Apple in quanto fornisce alcune informazioni piuttosto buone su come funziona la messaggistica push su iPhone.

Vedi questi link forniti da Peter Hosey:


Grazie per questa risposta, stavo cercando lo stesso. Questo vale anche quando hai aggiunto un meta tag "apple-mobile-web-app-ready"?
Mark Knol

1
Questo sta cambiando il modo in cui avvengono le notifiche push developers.google.com/web/updates/2015/03/…
Daniel Luca CleanUnicorn

1
a partire dal 02/2016, FF, Chrome e Safari possono registrarsi per il push dalla webapp.
Yvon Huynh

9
Questo non è più vero nel 2016, puoi inviare notifiche dalle app web. Leggi la mia risposta di seguito.
collimarco

Ma la visualizzazione web non funziona alla grande, manca di alcune funzionalità e ha più bug di Safari
Nero

46

No, solo le applicazioni iOS native supportano le notifiche push.

AGGIORNAMENTO: i
siti Web di Mac OS X 10.9 e Safari 7 ora possono anche inviare notifiche push, ma questo non si applica ancora a iOS. Leggi la Guida alla programmazione delle notifiche per i siti web . Controlla anche WWDC 2013 Session 614 .


1
ora puoi su Maverix e Safari 7!
themihai


Safari 7 può sicuramente ricevere queste notifiche push e, a seconda del backend in esecuzione sulla tua app web, ci sono alcuni servizi che lo consentono: pushwoosh.com , pushmonkey.launchrock.com oppure potresti distribuire il tuo server, che è molto simile a Notifiche push iOS.
Tudor

Ho sentito che si chiama Specific Push.
mrbengi

3
La domanda OP riguarda specificamente iOS. Il supporto OSX / macOS per questo è bello, ma le notifiche push funzionano ancora solo su iOS da un'app nativa.
squarecandy

44

Sebbene non siano ancora supportati su iOS (a partire da iOS 10), i siti Web possono inviare notifiche push a Firefox e Chrome (desktop / Android) con l' API Push .

L'API Push viene utilizzata insieme alle notifiche Web precedenti per visualizzare il messaggio. Il vantaggio è che le Push API consentono di recapitare la notifica anche quando l'utente non sta navigando nel tuo sito, perché sono costruite su Service Workers (script che vengono registrati dal browser e possono essere eseguiti in background in un secondo momento anche dopo il tuo utente ha lasciato il tuo sito web).

Il processo di invio di una notifica prevede quanto segue:

  1. un utente visita il tuo sito web (deve essere protetto tramite HTTPS): chiedi il permesso di visualizzare le notifiche push e registri un service worker (uno script che verrà eseguito quando viene ricevuta una notifica push)
  2. se l'utente ha concesso l'autorizzazione, è possibile leggere il token del dispositivo (endpoint) che deve essere inviato al server e archiviato
  3. ora puoi inviare notifiche all'utente: il tuo server effettua una richiesta HTTP POST all'endpoint (che è un URL che contiene il token del dispositivo). Il server che riceve la richiesta è di proprietà del produttore del browser (es. Google, Mozilla): il browser è costantemente connesso ad esso e può leggere le notifiche in arrivo.
  4. quando il browser dell'utente riceve una notifica esegue il service worker, che è responsabile della gestione dell'evento, recuperando i dati di notifica dal server e visualizzando la notifica all'utente

L'API Push è attualmente supportata su desktop e Android da Chrome , Firefox e Opera .

Puoi anche inviare notifiche push ad Apple / Safari desktop utilizzando gli APN. L'approccio è simile, ma con molte complicazioni (certificati per sviluppatori Apple, pacchetti push, connessione TCP di basso livello agli APN).

Se vuoi implementare le notifiche push da solo, inizia con questi tutorial:

Se stai cercando una soluzione alternativa , ti suggerisco Pushpad , che è un servizio che ho creato.

Aggiornare (settembre 2017): Apple ha iniziato a sviluppare i lavoratori dell'assistenza per WebKit ( stato ). Poiché i service worker sono una tecnologia fondamentale per il web push, questo è un grande passo avanti.


3
A partire da iOS 10 (beta pubblica), Mobile Safari non supporta le notifiche push.
Robin Daugherty

1
Non è stata una correzione della tua risposta, stavo fornendo informazioni a persone in cerca di supporto per Safari Mobile. Un giorno forse supporteranno le notifiche push, ma non lo fanno a partire dal rilascio che ho menzionato.
Robin Daugherty

14
Safari è il nuovo Internet Explorer. Apple è la nuova Microsoft. Uffa ...
Costa

1
@Kevincore No, purtroppo non ci sono aggiornamenti. Safari su iOS non supporta il web push al momento (maggio 2017).
collimarco

1
Facciamo pressione su Apple: ho scritto alcuni paragrafi che puoi copiare e inviare all'Apple Bug Tracker per chiedere ad Apple di aggiungere il web push a iOS.
collimarco



9

EFFETTIVAMENTE .. Questo è nuovo di zecca si badi bene .. Su l'ultima versione di OS X (Mavericks) si POTETE inviare notifiche push da una pagina Web al desktop. Ma secondo la documentazione, NON iPhone:

Note: This document pertains to OS X only. Notifications for websites do not appear on iOS.

Attualmente Apple ha in programma di consentire 2 tipi di notifiche push: notifiche push del sito Web OS X e notifiche locali.

L'ovvio ostacolo qui è che questo non funzionerà sui PC, né ti permetterà di fare notifiche push Android.

Inoltre, con versioni vecchie come Snow Leapord, puoi effettivamente inviare notifiche push da un sito Web purché tale sito Web sia aperto e attivo. Il nuovo sistema operativo Mavericks consentirà le notifiche push anche se il sito non è aperto, supponendo che tu abbia già dato il permesso a detto sito di inviare notifiche push.

Dalla bocca di Apple:

In OS X v10.9 e versioni successive, è possibile inviare notifiche push del sito Web OS X dal server Web direttamente agli utenti OS X utilizzando il servizio di notifica push (APN) di Apple. Da non confondere con le notifiche locali, le notifiche push possono raggiungere i tuoi utenti indipendentemente dal fatto che il tuo sito web o il loro browser web sia aperto ...

Per integrare le notifiche push nel tuo sito web, devi prima presentare un'interfaccia che consente all'utente di scegliere di ricevere le notifiche. Se l'utente acconsente, Safari contatta il tuo sito web richiedendone le credenziali sotto forma di un file chiamato pacchetto push. Il pacchetto push contiene anche risorse di notifica utilizzate in OS X e dati utilizzati per comunicare con un servizio Web configurato. Se il pacchetto push è valido, riceverai un identificatore univoco per l'utente sul dispositivo noto come token del dispositivo. L'utente riceve la notifica quando invii la combinazione di questo token del dispositivo e il tuo messaggio, o payload, agli APN.

Dopo aver ricevuto la notifica, l'utente può fare clic su di essa per aprire una pagina Web di tua scelta nel browser predefinito dell'utente.

Nota: se hai bisogno di un aggiornamento sugli APN, leggi il capitolo "Servizio di notifica push Apple" nella Guida alla programmazione delle notifiche push e locali. Sebbene il documento sia specifico per le notifiche push iOS e OS X, i paradigmi del servizio di notifica push sono ancora validi.


5
Questo, si spera, significa che vedremo notifiche push basate sul web da iOS 8 o 9. Incrociamo le dita.
Travis

5
I documenti degli sviluppatori dicono esplicitamente che le notifiche web non si applicano a iOS attualmente. Proprio come un chiarimento del tuo primo paragrafo.
Daniel Sellers

1
Conoscendo Apple, lo permetteranno per una versione di iOS e lo rimuoveranno per la successiva
Alexander Derck

6

No, non è possibile che un'app Web riceva una notifica push. Quello che potresti fare è avvolgere la tua webapp in un'app nativa con notifiche push.


cosa intendi quando dici "racchiudi la tua webapp in un'app nativa"?
Frankie

1
Frankie: Beh, solo un'app nativa che mostra una UIWebView che poi carica il tuo sito. Ciò ti consente di avere la tua webapp come app nativa sul telefono.
JustSid

quindi immagino che in xcode questo sarebbe "WindowBase Aplication" per l'app nativa, giusto?
Frankie

ora puoi su Maverix e Safari 7!
themihai

1
@DanDascalescu Perché dovrei? E 'ancora non è possibile su iOS, che è ciò che la domanda riguardava. La risposta non è sbagliata.
JustSid

2

Il W3C ha avviato nel 2010 un gruppo di lavoro per implementare le notifiche:
http://www.w3.org/2010/web-notifications/

Questo gruppo di lavoro sviluppa API che espongono tali meccanismi alle applicazioni Web, in modo che gli sviluppatori Web che creano, ad esempio, client di posta elettronica basati sul Web e client di messaggistica istantanea possano integrare più strettamente il comportamento delle loro applicazioni Web con le funzionalità di notifica dei sistemi operativi dei loro utenti finali.

Infine il risultato è come un brutto scherzo in quanto funziona solo se il sito web specifico è aperto: http://alxgbsn.co.uk/notify.js/

Penso che non abbiano implementato la possibilità di aggiungere URL push in modo che il browser possa chiedere notifiche mentre è in esecuzione in background - e soprattutto - se tutte le schede sono state chiuse.


2

È possibile utilizzare Websocket HTML5 per introdurre i propri messaggi push. Da Wikipedia :

"Per il lato client, WebSocket doveva essere implementato in Firefox 4, Google Chrome 4, Opera 11 e Safari 5, così come la versione mobile di Safari in iOS 4.2. Anche il browser BlackBerry in OS7 supporta WebSocket."

Per fare ciò, è necessario il proprio server provider per inviare i messaggi ai client.
Se si desidera utilizzare APN (Apple Push Notification) o C2DM (Cloud to Device Message), è necessario disporre di un'applicazione nativa che deve essere scaricata tramite il negozio online.


6
beh, funzionerebbe solo se il browser è aperto e nella pagina webapp. a differenza delle notifiche push, che funzionano anche quando l'applicazione è disattivata.
Hagai L

2

Pushbullet è un'ottima alternativa per questo.

Tuttavia, l'utente deve avere un account Pushbullet e l'app installata (iOS, Android) o il plug-in installato (Chrome, Opera, Firefox e Windows).

Puoi utilizzare l' API creando un'app Pushbullet e connettere l'utente della tua applicazione all'utente Pushbullet utilizzando oAuth2.

Usare una libreria renderebbe tutto molto più semplice, per PHP potrei raccomandare ivkos / Pushbullet-for-PHP .


1

Dai un'occhiata alle notifiche push Web Xtify. http://getreactor.xtify.com/ Questo strumento ti consente di spingere il contenuto su una pagina web e di indirizzare i visitatori, nonché di attivare i messaggi in base agli eventi DOM del browser. È progettato specificamente pensando ai dispositivi mobili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.