Condividi tramite


Usare le notifiche WNS per implementare la ripresa tra dispositivi (XDR)

Questa guida dettagliata per prime e terze parti fornisce una panoramica dettagliata su come integrare la continuità dell'applicazione (ripresa) con le notifiche non elaborate di Windows Push Notification Service (WNS). Include prerequisiti, riferimenti alla documentazione pubblica pertinente e frammenti di codice per l'esecuzione di richieste POST all'URI del canale.

Riprendere l'Introduzione in Windows

Resume è una funzionalità di accesso limitato (LAF). Per ottenere l'accesso a questa funzionalità, è necessario ottenere l'approvazione da Microsoft per abilitare l'applicazione in Windows.

Per richiedere l'accesso, inviare un messaggio di posta elettronica wincrossdeviceapi@microsoft.com con le informazioni seguenti:

  • Stato della registrazione WNS della tua applicazione e fornisci il "SID del pacchetto" della tua applicazione.
  • Descrizione dell'esperienza utente.
  • Screenshot dell'applicazione in cui l'utente esegue un'azione che può essere ripresa nel PC Windows.

Se Microsoft approva la richiesta, si ricevono istruzioni su come sbloccare la funzionalità. Le approvazioni sono basate sulla comunicazione.

Prerequisiti

Prima di procedere con l'integrazione, verificare che le attività seguenti siano completate:

Passaggi di implementazione

I passaggi seguenti illustrano il processo di integrazione della continuità dell'applicazione usando le notifiche non elaborate WNS.

Passaggio 1: Configurazione dell'URI del canale

Configurare l'URI del canale dall'applicazione Windows e inviarlo al server app: assicurarsi che l'app possa richiedere e archiviare l'URI del canale per le notifiche. Per altre informazioni, vedere Come richiedere, creare e salvare un canale di notifica.

Passaggio 2- Avviare lo scenario di ripresa

Dall'applicazione per dispositivi mobili chiamare l'API del servizio applicazioni necessaria per avviare la richiesta di ripresa basata su WNS.

Passaggio 3 - Configurare la richiesta HTTP

Quando il server app riceve la richiesta API dal client mobile, prepara la richiesta POST all'URI del canale WNS. La richiesta deve includere le intestazioni necessarie, ad esempio Authorization, Content-Type e X-WNS-Type. Per aggiungere la tua nuova intestazione, includila nella configurazione dell'intestazione della richiesta.

Passaggio 3.1 - Esempio per l'invio di una richiesta di tipo POST di curriculum vitae

I frammenti di codice seguenti illustrano come inviare una nuova notifica WNS con un'intestazione di "resume" utilizzando Python e JavaScript.

Il frammento di codice Python seguente illustra come inviare una notifica non elaborata WNS con le intestazioni necessarie per la continuità dell'applicazione:

import requests
# Define the channel URI
channel_uri = "[URL]"
# Define the notification payload
payload = """
Sample Notification
This is a sample message
"""
# Define the headers
headers = {
    "Content-Type": "application/octet-stream",
    "X-WNS-Type": "wns/raw",
    "Authorization": "Bearer YOUR_ACCESS_TOKEN",
    "X-WNS-RawNotificationType": "wns/raw/resume",
    "X-WNS-ResumeMetadata": {"title":"Continue call from…","expiry":"300", "type":"1"},
}
# Send the POST request
response = requests.post(channel_uri, data=payload, headers=headers)
# Print the response status
print(f"Response Status: {response.status_code}")
print(f"Response Body: {response.text}")

Il frammento di codice JavaScript seguente illustra come inviare una notifica non elaborata WNS con le intestazioni necessarie per la continuità dell'applicazione:

const axios = require('axios');

// Define the channel URI
const channelUri = "[URL]";

// Define the notification payload
const payload = `Sample Notification
This is a sample message`;

// Define the headers
const headers = {
  "Content-Type": "application/octet-stream",
  "X-WNS-Type": "wns/raw",
  "Authorization": "Bearer YOUR_ACCESS_TOKEN",
  "X-WNS-RawNotificationType": "wns/raw/resume",
  "X-WNS-ResumeMetadata": JSON.stringify({
    title: "Continue call from…",
    expiry: "300",
    type: "1"
  })
};

// Send the POST request
axios.post(channelUri, payload, { headers })
  .then(response => {
    console.log(`Response Status: ${response.status}`);
    console.log(`Response Body: ${response.data}`);
  })
  .catch(error => {
    console.error(`Error Status: ${error.response?.status}`);
    console.error(`Error Body: ${error.response?.data}`);
  });

L'intestazione "X-WNS-RawNotificationType" specifica il tipo di notifica non elaborata inviata. In genere non è necessario includere questo header, ma consente di classificare la notifica per scopi diversi, come ad esempio "Ripresa". I valori possibili per questa intestazione possono includere tipi come "wns/raw/resume", che indica la ripresa dell'applicazione su Windows.

L'intestazione "X-WNS-ResumeMetadata" fornisce metadati sulla notifica di ripresa che si sta inviando. Sebbene non sia strettamente richiesto, migliora la notifica aggiungendo informazioni come un titolo o una scadenza. I metadati vengono passati come oggetto JSON/Dictionary (qualsiasi altro tipo genera un'eccezione di convalida) e possono includere campi come:

  • title: titolo descrittivo per la notifica (ad esempio, "Continua chiamata da...").
  • scadenza: durata della notifica in secondi (ad esempio, "300" per 5 minuti).
  • tipo: tipo di notifica - 1 per la nuova richiesta di ripresa, 2 per l'eliminazione (nessuna azione se mancante).

Il frammento di codice JavaScript seguente illustra come inviare una notifica non elaborata WNS con le intestazioni necessarie per aggiornare una notifica di ripresa:

const axios = require('axios');

// Define the channel URI
const channelUri = "[URL]";

// Define the notification payload
const payload = `Sample Notification
This is a sample message`;

// Define the headers
const headers = {
  "Content-Type": "application/octet-stream",
  "X-WNS-Type": "wns/raw",
  "Authorization": "Bearer YOUR_ACCESS_TOKEN",
  "X-WNS-RawNotificationType": "wns/raw/resume",
  "X-WNS-ResumeMetadata": JSON.stringify({
    title: "Continue call from…",
    expiry: "300",
    type: "2"  // 2-represents update type.
  })
};

// Send the POST request
axios.post(channelUri, payload, { headers })
  .then(response => {
    console.log(`Response Status: ${response.status}`);
    console.log(`Response Body: ${response.data}`);
  })
  .catch(error => {
    console.error(`Error Status: ${error.response?.status}`);
    console.error(`Error Body: ${error.response?.data}`);
  });

Il frammento di codice JavaScript seguente illustra come inviare una notifica non elaborata WNS con le intestazioni necessarie per eliminare una notifica di ripresa:

const axios = require('axios');

// Define the channel URI
const channelUri = "[URL]";

// Define the notification payload
const payload = `Sample Notification
This is a sample message`;

// Define the headers
const headers = {
  "Content-Type": "application/octet-stream",
  "X-WNS-Type": "wns/raw",
  "Authorization": "Bearer YOUR_ACCESS_TOKEN",
  "X-WNS-RawNotificationType": "wns/raw/resume",
  "X-WNS-ResumeMetadata": JSON.stringify({
    title: "Continue call from…",
    expiry: "300",
    type: "3"  // 3-represents delete type.
  })
};

// Send the POST request
axios.post(channelUri, payload, { headers })
  .then(response => {
    console.log(`Response Status: ${response.status}`);
    console.log(`Response Body: ${response.data}`);
  })
  .catch(error => {
    console.error(`Error Status: ${error.response?.status}`);
    console.error(`Error Body: ${error.response?.data}`);
  });

Entrambe le intestazioni offrono flessibilità nella personalizzazione delle notifiche grezze per soddisfare i requisiti funzionali di un'applicazione.

Passaggio 4: Convalidare l'implementazione

Assicurati che la tua applicazione si registri correttamente per le notifiche e che le intestazioni di ripresa della sessione siano incluse nella richiesta POST. È possibile usare strumenti come vscode REST Client, Postman o Fiddler per esaminare la richiesta e la risposta HTTP.

Ecco un esempio di invio di una richiesta usando l'estensione client REST di Visual Studio Code. Le intestazioni X-WNS-RawNotificationType e X-WNS-ResumeMetadata sono necessarie per la continuità dell'applicazione.

POST {{channel_uri}}
Content-Type: application/octet-stream
X-WNS-Type: wns/raw
X-WNS-RequestForStatus: true
X-WNS-RawNotificationType: wns/raw/resume
X-WNS-ResumeMetadata: {"title": "Continue call from...", "expiry": "300", "type": "1"}
Authorization: Bearer {{bearer}}

[{"hello"}]

La risposta del client REST di VS Code viene visualizzata nello stesso formato delle risposte di notifica esistenti. Per informazioni dettagliate sui codici di stato, vedere il collegamento di riferimento: Inviare una notifica nativa di Windows Push Notification Services (WNS).

Conclusione

Seguendo i passaggi descritti in questa guida, le prime e le terze parti possono aggiungere con successo intestazioni personalizzate alle notifiche WNS. Assicurarsi di soddisfare tutti i prerequisiti e testare accuratamente per garantire un'integrazione senza problemi.

Per eventuali query o assistenza sull'implementazione, contattare il team all'indirizzo seguente:

E-mail: wincrossdeviceapi@microsoft.com

Siamo qui per garantire un processo di integrazione uniforme.