Intestazioni di richiesta e risposta del servizio di notifica push (app di Windows Runtime)
Questo argomento descrive le API Web da servizio a servizio e i protocolli necessari per inviare una notifica push.
Per una descrizione concettuale dei concetti, dei requisiti e del funzionamento, vedere la panoramica relativa aiWindows Push Notification Services (WNS).
Richiesta e ricezione di un token di accesso
Questa sezione descrive i parametri di richiesta e risposta coinvolti quando si esegue l'autenticazione con WNS.
Access token request (Richiesta di token di accesso)
Una richiesta HTTP viene inviata a WNS per autenticare il servizio cloud e recuperare un token di accesso in cambio. La richiesta viene inviata all'uso https://login.live.com/accesstoken.srf
di Secure Sockets Layer (SSL).
Parametri della richiesta del token di accesso
Il servizio cloud invia questi parametri obbligatori nel corpo della richiesta HTTP, usando il formato "application/x-www-form-urlencoded". È necessario assicurarsi che tutti i parametri siano codificati in URL.
Parametro | Richiesto | Descrizione |
---|---|---|
grant_type | TRUE | Deve essere impostato su client_credentials . |
client_id | TRUE | ID di sicurezza del pacchetto (SID) per il servizio cloud assegnato al momento della registrazione dell'app in Microsoft Store. |
client_secret | TRUE | Chiave privata per il servizio cloud assegnato al momento della registrazione dell'app in Microsoft Store. |
ambito | TRUE | Deve essere impostato su notify.windows.com |
Risposta del token di accesso
WNS autentica il servizio cloud e, se ha esito positivo, risponde con "200 OK", incluso il token di accesso. In caso contrario, WNS risponde con un codice di errore HTTP appropriato, come descritto nella bozza di protocollo OAuth 2.0.
Parametri di risposta del token di accesso
Se il servizio cloud è stato autenticato correttamente, viene restituito un token di accesso nella risposta HTTP. Questo token di accesso può essere usato nelle richieste di notifica fino alla scadenza. La risposta HTTP usa il tipo di supporto "application/json".
Parametro | Richiesto | Descrizione |
---|---|---|
access_token | TRUE | Token di accesso che il servizio cloud userà quando invia una notifica. |
token_type | FALSE | Viene restituito sempre come bearer . |
Codice della risposta
Codice di risposta HTTP | Descrizione |
---|---|
200 OK | La richiesta è stata completata. |
400 Richiesta non valida | L'autenticazione non è riuscita. Per i parametri di risposta, vedere la bozza OAuth Request for Comments (RFC). |
Esempio
Il seguente mostra un esempio della risposta di autenticazione riuscita:
HTTP/1.1 200 OK
Cache-Control: no-store
Content-Length: 422
Content-Type: application/json
{
"access_token":"EgAcAQMAAAAALYAAY/c+Huwi3Fv4Ck10UrKNmtxRO6Njk2MgA=",
"token_type":"bearer",
"expires_in": 86400
}
Invio di una richiesta di notifica e ricezione di una risposta
Questa sezione descrive le intestazioni coinvolte in una richiesta HTTP a WNS per recapitare una notifica e quelle coinvolte nella risposta.
- Inviare una richiesta di notifica
- Inviare una risposta di notifica
- Funzionalità HTTP non supportate
Inviare una richiesta di notifica
Quando si invia una richiesta di notifica, l'app chiamante effettua una richiesta HTTP tramite SSL, indirizzata all'URI (Uniform Resource Identifier) del canale. "Content-Length" è un'intestazione HTTP standard che deve essere specificata nella richiesta. Tutte le altre intestazioni standard sono facoltative o non supportate.
Inoltre, le intestazioni di richiesta personalizzate elencate qui possono essere usate nella richiesta di notifica. Alcune intestazioni sono obbligatorie, mentre altre sono facoltative.
Parametri della richiesta
Nome intestazione | Obbligatorio | Descrizione |
---|---|---|
Autorizzazione | TRUE | Intestazione di autorizzazione HTTP standard usata per autenticare la richiesta di notifica. Il servizio cloud fornisce il token di accesso in questa intestazione. |
Content-Type | TRUE | Intestazione di autorizzazione HTTP standard. Per le notifiche di tipo avviso popup, riquadro e badge, questa intestazione deve essere impostata su text/xml . Per le notifiche non elaborate, questa intestazione deve essere impostata su application/octet-stream . |
Content-Length | TRUE | Intestazione di autorizzazione HTTP standard per indicare le dimensioni del payload della richiesta. |
Tipo X-WNS | TRUE | Definisce il tipo di notifica nel payload: riquadro, avviso popup, badge o non elaborato. |
Criteri di cache X-WNS | FALSE | Abilita o disabilita la memorizzazione nella cache delle notifiche. Questa intestazione si applica solo a riquadri, notifiche e notifiche non elaborate. |
X-WNS-RequestForStatus | FALSE | Richiede lo stato del dispositivo e lo stato della connessione WNS nella risposta di notifica. |
X-WNS-Tag | FALSE | Stringa usata per fornire una notifica con un'etichetta di identificazione, usata per i riquadri che supportano la coda di notifica. Questa intestazione si applica solo alle notifiche dei riquadri. |
X-WNS-TTL | FALSE | Valore intero, espresso in secondi, che specifica la durata (TTL). |
MS-CV | FALSE | Valore del vettore di correlazione usato per la richiesta. |
Note importanti
- Content-Length e Content-Type sono le uniche intestazioni HTTP standard incluse nella notifica recapitata al client, indipendentemente dal fatto che nella richiesta siano state incluse altre intestazioni standard.
- Tutte le altre intestazioni HTTP standard vengono ignorate o restituiscono un errore se la funzionalità non è supportata.
- A partire da febbraio 2023, WNS memorizza nella cache una sola notifica di riquadro quando il dispositivo è offline.
Autorizzazione
L'intestazione di autorizzazione viene usata per specificare le credenziali dell'entità chiamante, seguendo il metodo di autorizzazione OAuth 2.0 per i token di connessione .
La sintassi è costituita da un valore letterale stringa "Bearer", seguito da uno spazio, seguito dal token di accesso. Questo token di accesso viene recuperato eseguendo la richiesta di token di accesso descritta in precedenza. Lo stesso token di accesso può essere usato nelle richieste di notifica successive fino alla scadenza.
Questa intestazione è obbligatoria.
Authorization: Bearer <access-token>
Tipo X-WNS
Questi sono i tipi di notifica supportato da WNS. Questa intestazione indica il tipo di notifica e il modo in cui WNS deve gestirla. Dopo che la notifica raggiunge il client, il payload effettivo viene convalidato rispetto a questo tipo specificato. Questa intestazione è obbligatoria.
X-WNS-Type: wns/toast | wns/badge | wns/tile | wns/raw
valore | Descrizione |
---|---|
wns/badge | Notifica per creare una sovrimpressione badge nel riquadro. L'intestazione Content-Type inclusa nella richiesta di notifica deve essere impostata su text/xml . |
wns/riquadro | Notifica per aggiornare il contenuto del riquadro. L'intestazione Content-Type inclusa nella richiesta di notifica deve essere impostata su text/xml . |
wns/toast | Notifica per generare un avviso popup nel client. L'intestazione Content-Type inclusa nella richiesta di notifica deve essere impostata su text/xml . |
wns/raw | Notifica che può contenere un payload personalizzato e viene recapitata direttamente all'app. L'intestazione Content-Type inclusa nella richiesta di notifica deve essere impostata su application/octet-stream . |
Criteri di cache X-WNS
Quando il dispositivo di destinazione delle notifiche è offline, WNS memorizza nella cache una notifica, un riquadro e una notifica di tipo avviso popup per ogni URI del canale. Per impostazione predefinita, le notifiche non elaborate non vengono memorizzate nella cache, ma se la memorizzazione nella cache delle notifiche non elaborate è abilitata, viene memorizzata nella cache una notifica non elaborata. Gli elementi non vengono mantenuti nella cache per un periodo illimitato e verranno eliminati dopo un periodo di tempo ragionevole. In caso contrario, il contenuto memorizzato nella cache viene recapitato quando il dispositivo diventa online.
X-WNS-Cache-Policy: cache | no-cache
valore | Descrizione |
---|---|
cache | Predefinito. Le notifiche verranno memorizzate nella cache se l'utente è offline. Questa è l'impostazione predefinita per le notifiche di tipo riquadro e badge. |
no-cache | La notifica non verrà memorizzata nella cache se l'utente è offline. Questa è l'impostazione predefinita per le notifiche non elaborate. |
X-WNS-RequestForStatus
Specifica se la risposta deve includere lo stato del dispositivo e lo stato della connessione WNS. Questa intestazione è facoltativa.
X-WNS-RequestForStatus: true | false
valore | Descrizione |
---|---|
vero | Restituisce lo stato del dispositivo e lo stato della notifica nella risposta. |
false | Predefinito. Non restituire lo stato del dispositivo e lo stato della notifica. |
X-WNS-Tag
Assegna un'etichetta di tag a una notifica. Il tag viene usato nei criteri di sostituzione del riquadro nella coda di notifica quando l'app ha optato per il ciclo delle notifiche. Se nella coda esiste già una notifica con questo tag, viene eseguita una nuova notifica con lo stesso tag.
Nota
Questa intestazione è facoltativa e usata solo quando si inviano notifiche di riquadri.
X-WNS-Tag: <string value>
valore | Descrizione |
---|---|
valore stringa | Stringa alfanumerica di non più di 16 caratteri. |
X-WNS-TTL
Specifica la durata (ora di scadenza) per una notifica. Questo non è in genere necessario, ma può essere usato se vuoi assicurarti che le notifiche non vengano visualizzate in un secondo momento. La durata (TTL) viene specificata in secondi ed è relativa al tempo in cui WNS riceve la richiesta. Quando viene specificato un TTL, il dispositivo non visualizzerà la notifica dopo tale ora. Si noti che ciò potrebbe comportare che la notifica non venga mai visualizzata se la durata (TTL) è troppo breve. In generale, un'ora di scadenza verrà misurata in almeno minuti.
Questa intestazione è facoltativa. Se non viene specificato alcun valore, la notifica non scade e verrà sostituita nello schema di sostituzione delle notifiche normale.
X-WNS-TTL: <integer value>
valore | Descrizione |
---|---|
valore intero | Durata della notifica, in secondi, dopo che WNS riceve la richiesta. |
X-WNS-SuppressPopup
Nota
Per le app di Windows Telefono Store, hai la possibilità di eliminare l'interfaccia utente di una notifica di tipo avviso popup, invece di inviare la notifica direttamente al centro notifiche. In questo modo la notifica viene recapitata automaticamente, un'opzione potenzialmente superiore per notifiche meno urgenti. Questa intestazione è facoltativa e usata solo nei canali di Windows Telefono. Se includi questa intestazione in un canale Windows, la notifica verrà eliminata e riceverai una risposta di errore da WNS.
X-WNS-SuppressPopup: true | False
valore | Descrizione |
---|---|
vero | Inviare la notifica di tipo avviso popup direttamente al centro notifiche; non generare l'interfaccia utente di tipo avviso popup. |
false | Predefinito. Generare l'interfaccia utente di tipo avviso popup e aggiungere la notifica al centro notifiche. |
X-WNS-Group
Nota
Il centro notifiche per le app di Windows Telefono Store può visualizzare più notifiche di tipo avviso popup con lo stesso tag solo se sono etichettate come appartenenti a gruppi diversi. Si consideri, ad esempio, un'app libro di ricette. Ogni ricetta viene identificata da un tag. Un avviso popup che contiene un commento su tale ricetta avrebbe il tag della ricetta, ma un'etichetta di gruppo di commenti. Un avviso popup che contiene una classificazione per tale ricetta avrebbe di nuovo il tag della ricetta, ma avrebbe un'etichetta di gruppo di classificazione. Queste etichette di gruppo diverse consentono di visualizzare entrambe le notifiche di tipo avviso popup contemporaneamente nel centro notifiche. Questa intestazione è facoltativa.
X-WNS-Group: <string value>
valore | Descrizione |
---|---|
valore stringa | Stringa alfanumerica di non più di 16 caratteri. |
X-WNS-Match
Nota
Usato con il metodo HTTP DELETE per rimuovere un avviso popup specifico, un set di avvisi popup (tramite tag o gruppo) o tutti gli avvisi popup dal centro notifiche per le app di Windows Telefono Store. Questa intestazione può specificare un gruppo, un tag o entrambi. Questa intestazione è necessaria in una richiesta di notifica HTTP DELETE. Qualsiasi payload incluso in questa richiesta di notifica viene ignorato.
X-WNS-Match: type:wns/toast; group=<string value>
; tag=<string value>
| type:wns/toast; group=<string value>
| type:wns/toast; tag=<string value>
| type:wns/toast; Tutti
valore | Descrizione |
---|---|
type:wns/toast; group=<string value> ; tag=<string value> |
Rimuovere una singola notifica etichettata con il tag e il gruppo specificati. |
type:wns/toast; group=<string value> |
Rimuovere tutte le notifiche etichettate con il gruppo specificato. |
type:wns/toast; tag=<string value> |
Rimuovere tutte le notifiche etichettate con il tag specificato. |
type:wns/toast; Tutti | Cancella tutte le tue notifiche app dal centro notifiche. |
Inviare una risposta di notifica
Dopo che WNS elabora la richiesta di notifica, invia un messaggio HTTP in risposta. In questa sezione vengono illustrati i parametri e le intestazioni disponibili in tale risposta.
Parametri di risposta
Nome intestazione | Obbligatorio | Descrizione |
---|---|---|
X-WNS-Debug-Trace | FALSE | Informazioni di debug che devono essere registrate per risolvere i problemi durante la segnalazione di un problema. |
X-WNS-Device Connessione ionStatus | FALSE | Lo stato del dispositivo, restituito solo se richiesto nella richiesta di notifica tramite l'intestazione X-WNS-RequestForStatus. |
Descrizione dell'errore X-WNS | FALSE | Stringa di errore leggibile che deve essere registrata per facilitare il debug. |
X-WNS-Msg-ID | FALSE | Identificatore univoco per la notifica, utilizzato a scopo di debug. Quando si segnala un problema, queste informazioni devono essere registrate per facilitare la risoluzione dei problemi. |
X-WNS-Status | FALSE | Indica se WNS ha ricevuto ed elaborato correttamente la notifica. Quando si segnala un problema, queste informazioni devono essere registrate per facilitare la risoluzione dei problemi. |
MS-CV | FALSE | Informazioni di debug che devono essere registrate per risolvere i problemi durante la segnalazione di un problema. |
X-WNS-Debug-Trace
Questa intestazione restituisce informazioni di debug utili come stringa. È consigliabile registrare questa intestazione per aiutare gli sviluppatori a eseguire il debug dei problemi. Questa intestazione, insieme all'intestazione X-WNS-Msg-ID e a MS-CV, è necessaria quando si segnala un problema a WNS.
X-WNS-Debug-Trace: <string value>
valore | Descrizione |
---|---|
valore stringa | Una stringa alfanumerica. |
X-WNS-Device Connessione ionStatus
Questa intestazione restituisce lo stato del dispositivo all'applicazione chiamante, se richiesto nell'intestazione X-WNS-RequestForStatus della richiesta di notifica.
X-WNS-Device Connessione ionStatus: connesso | disconnesso | tempdisconnected
valore | Descrizione |
---|---|
connected | Il dispositivo è online e connesso a WNS. |
disconnesso | Il dispositivo è offline e non è connesso a WNS. |
tempconnected (deprecato) | Il dispositivo perde temporaneamente la connessione a WNS, ad esempio quando viene eliminata una connessione 3G o viene generata l'opzione wireless su un portatile. La piattaforma client di notifica viene considerata come un'interruzione temporanea anziché una disconnessione intenzionale. |
Descrizione dell'errore X-WNS
Questa intestazione fornisce una stringa di errore leggibile che deve essere registrata per facilitare il debug.
Descrizione dell'errore X-WNS: <string value>
valore | Descrizione |
---|---|
valore stringa | Una stringa alfanumerica. |
X-WNS-Msg-ID
Questa intestazione viene usata per fornire al chiamante un identificatore per la notifica. È consigliabile registrare questa intestazione per facilitare il debug dei problemi. Questa intestazione, insieme all'intestazione X-WNS-Debug-Trace e a MS-CV, è necessaria quando si segnala un problema a WNS.
X-WNS-Msg-ID: <string value>
valore | Descrizione |
---|---|
valore stringa | Stringa alfanumerica di non più di 16 caratteri. |
X-WNS-Status
Questa intestazione descrive come WNS ha gestito la richiesta di notifica. Questa operazione può essere usata invece di interpretare i codici di risposta come esito positivo o negativo.
X-WNS-Status: ricevuto | eliminato | channelthrottled
valore | Descrizione |
---|---|
ricevuti | La notifica è stata ricevuta ed elaborata da WNS. Nota: ciò non garantisce che il dispositivo abbia ricevuto la notifica. |
dropped | La notifica è stata eliminata in modo esplicito a causa di un errore o perché il client ha rifiutato esplicitamente queste notifiche. Le notifiche di tipo avviso popup verranno eliminate anche se il dispositivo è offline. |
channelthrottled | La notifica è stata eliminata perché il server app ha superato il limite di frequenza per questo canale specifico. |
MS-CV
Questa intestazione fornisce un vettore di correlazione correlato alla richiesta usata principalmente per il debug. Se un CV viene fornito come parte della richiesta, WNS userà questo valore, altrimenti WNS genererà e risponderà con un CV. Questa intestazione, insieme all'intestazione X-WNS-Debug-Trace e X-WNS-Msg-ID, è necessaria quando si segnala un problema a WNS.
Importante
Si prega di generare un nuovo CV per ogni richiesta di notifica push se si sta fornendo il proprio CV.
MS-CV: <string value>
valore | Descrizione |
---|---|
valore stringa | Segue lo standard del vettore di correlazione |
Codici di risposta
Ogni messaggio HTTP contiene uno di questi codici di risposta. WNS consiglia agli sviluppatori di registrare il codice di risposta da usare nel debug. Quando gli sviluppatori segnalano un problema a WNS, devono fornire codici di risposta e informazioni sull'intestazione.
Codice di risposta HTTP | Descrizione | Azione consigliata |
---|---|---|
200 OK | La notifica è stata accettata da WNS. | Non necessari. |
400 Richiesta non valida | Una o più intestazioni sono state specificate in modo non corretto o in conflitto con un'altra intestazione. | Registrare i dettagli della richiesta. Esaminare la richiesta e confrontare la documentazione. |
401 - Non autorizzato | Il servizio cloud non ha presentato un ticket di autenticazione valido. Il ticket OAuth potrebbe non essere valido. | Richiedere un token di accesso valido autenticando il servizio cloud usando la richiesta del token di accesso. |
403 Negato | Il servizio cloud non è autorizzato a inviare una notifica a questo URI anche se sono autenticati. | Il token di accesso fornito nella richiesta non corrisponde alle credenziali dell'app che ha richiesto l'URI del canale. Assicurarsi che il nome del pacchetto nel manifesto dell'app corrisponda alle credenziali del servizio cloud specificate all'app nel dashboard. |
404 Not Found | L'URI del canale non è valido o non è riconosciuto da WNS. | Registrare i dettagli della richiesta. Non inviare ulteriori notifiche a questo canale; le notifiche a questo indirizzo avranno esito negativo. |
405 Method Not Allowed | Metodo non valido (GET, CREATE); è consentito solo POST (Windows o Windows Telefono) o DELETE (solo Windows Telefono). | Registrare i dettagli della richiesta. Passare all'uso di HTTP POST. |
406 - Non accettabile | Il servizio cloud ha superato il limite di limitazione. | Inviare la richiesta dopo il valore dell'intestazione Retry-After nella risposta |
410 - Non disponibile | Il canale è scaduto. | Registrare i dettagli della richiesta. Non inviare ulteriori notifiche a questo canale. Chiedere all'app un nuovo URI del canale. |
410 Dominio bloccato | Il dominio di invio è stato bloccato da WNS. | Non inviare ulteriori notifiche a questo canale. Il dominio di invio è stato bloccato da WNS per l'abuso di notifiche push. |
413 Entità della richiesta troppo grande | Il payload di notifica supera il limite di dimensioni di 5000 byte. | Registrare i dettagli della richiesta. Esaminare il payload per assicurarsi che sia entro le limitazioni delle dimensioni. |
500 Errore interno del server | Un errore interno ha causato l'esito negativo del recapito delle notifiche. | Registrare i dettagli della richiesta. Segnalare questo problema tramite i forum per sviluppatori. |
503 Servizio non disponibile | Il server non è attualmente disponibile. | Registrare i dettagli della richiesta. Segnalare questo problema tramite i forum per sviluppatori. Se viene osservata l'intestazione Retry-After, inviare la richiesta dopo il valore dell'intestazione Retry-After nella risposta. |
Funzionalità HTTP non supportate
L'interfaccia Web WNS supporta HTTP 1.1, ma non supporta le funzionalità seguenti:
- Suddivisione in blocchi
- Pipelining (POST non è idempotente)
- Anche se supportato, gli sviluppatori devono disabilitare Expect-100 perché introduce la latenza durante l'invio di una notifica.