Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это пошаговое руководство для первых и сторонних разработчиков предоставляет подробный обзор интеграции непрерывной работы приложений (возобновление) с сырыми уведомлениями службы push-уведомлений (WNS) Windows. Он включает предварительные требования, ссылки на соответствующую общедоступную документацию и фрагменты кода для отправки запросов POST в URI канала.
Подключение к возобновлению работы в Windows
Резюме — это функция ограниченного доступа (LAF). Чтобы получить доступ к этой функции, необходимо получить утверждение от Майкрософт, чтобы включить приложение на Windows.
Чтобы запросить доступ, отправьте сообщение электронной почты wincrossdeviceapi@microsoft.com со следующими сведениями:
- Состояние регистрации WNS вашего приложения и укажите "SID пакета" вашего приложения.
- Описание пользовательского интерфейса.
- Снимок экрана: приложение, в котором пользователь выполняет действие, которое можно возобновить на своем Windows компьютере.
Если Майкрософт утверждает запрос, вы получите инструкции по разблокировке функции. Утверждения основаны на ваших сообщениях.
Предпосылки
Прежде чем продолжить интеграцию, убедитесь, что выполняются следующие задачи:
- Зарегистрируйте приложение в службе push-уведомлений Windows (WNS): для получения уведомлений необходимо зарегистрировать приложение с помощью WNS. Дополнительные сведения см. в отправке уведомлений приложениям универсальная платформа Windows с помощью Azure Notification Hubs.
- Получение учетных данных доступа: получение идентификатора безопасности пакета (SID) и секрета клиента на портале Azure.
- Настройте URI канала: убедитесь, что приложение может запрашивать и хранить URI канала для уведомлений. Дополнительные сведения см. в статье "Запрос, создание и сохранение канала уведомлений ".
- Уведомления WNS используют XML-данные для передачи. Дополнительные сведения см. в содержимом уведомлений о приложении . Для резюме мы используем необработанные уведомления. Убедитесь, что ваше приложение Windows поддерживает полезную нагрузку, связанную с wns/raw-уведомлением. Дополнительные сведения см. в обзоре необработанных уведомлений .
Инструкции по реализации
Ниже описан процесс интеграции непрерывности приложений с помощью необработанных уведомлений WNS.
Шаг 1. Настройка URI канала
Настройте URI канала из приложения Windows и отправьте его на сервер приложений: убедитесь, что приложение может запрашивать и хранить URI канала для уведомлений. Дополнительные сведения см. в статье "Как запрашивать, создавать и сохранять канал уведомлений".
Шаг 2. Запуск сценария возобновления
В вашем мобильном приложении вызовите API необходимой службы приложений, чтобы инициировать запрос на возобновление на базе WNS.
Шаг 3. Настройка HTTP-запроса
Когда сервер приложений получает запрос API от мобильного клиента, он подготавливает запрос POST к URI канала WNS. Запрос должен содержать необходимые заголовки, такие как авторизация, тип контента и X-WNS-Type. Чтобы добавить новый заголовок, добавьте его в конфигурацию заголовка запроса.
Шаг 3.1. Пример отправки POST-запроса на резюме
В следующих фрагментах кода показано, как отправить новое уведомление WNS с заголовком резюме с помощью Python и JavaScript.
В следующем фрагменте кода Python показано, как отправить необработанное уведомление WNS с необходимыми заголовками для непрерывности приложений:
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}")
В следующем фрагменте кода JavaScript показано, как отправлять необработанное уведомление WNS с необходимыми заголовками для непрерывности приложений:
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}`);
});
Заголовок X-WNS-RawNotificationType указывает тип отправленного необработанного уведомления. Обычно не требуется включать этот заголовок, но он помогает классифицировать уведомление для различных целей, например "Возобновить". Возможные значения для этого заголовка могут включать такие типы, как "wns/raw/resume,", который сигнализирует о продолжении приложения в Windows.
Заголовок X-WNS-ResumeMetadata предоставляет метаданные об уведомлении о возобновлении, которое вы отправляете. Хотя это не является строго обязательным, оно улучшает уведомление путем добавления таких сведений, как название или время окончания срока действия. Вы передаете метаданные как объект JSON/Dictionary (любой другой тип вызывает исключение проверки) и может включать такие поля, как:
- title: описательное название уведомления (например, "Продолжить вызов из...").
- срок действия: срок действия уведомления в секундах (например, "300" в течение 5 минут).
- тип уведомления — 1 для нового запроса резюме, 2 для удаления (при отсутствии действия).
В следующем фрагменте кода JavaScript показано, как отправить необработанное уведомление WNS с необходимыми заголовками для обновления уведомления о возобновлении:
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}`);
});
В следующем фрагменте кода JavaScript показано, как отправить необработанное уведомление WNS с необходимыми заголовками для удаления уведомления о возобновлении:
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}`);
});
Оба заголовка обеспечивают гибкость при настройке необработанных уведомлений в соответствии с функциональными требованиями приложения.
Шаг 4. Проверка реализации
Убедитесь, что приложение успешно регистрирует уведомления и что заголовки резюме включены в запрос POST. Для проверки HTTP-запроса и ответа можно использовать такие средства, как vscode REST Client, Postman или Fiddler.
Ниже приведен пример отправки запроса с помощью расширения клиента REST Visual Studio Code. Для обеспечения непрерывности приложений требуются заголовки X-WNS-RawNotificationType и X-WNS-ResumeMetadata.
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"}]
Ответ от клиента REST VS Code отображается в том же формате, что и существующие ответы на уведомления. Дополнительные сведения о кодах состояния см. в ссылке: Отправка родного уведомления через службы push-уведомлений Windows (WNS).
Conclusion
Выполнив действия, описанные в этом руководстве, первые и сторонние стороны могут успешно добавлять пользовательские заголовки в уведомления WNS. Убедитесь, что вы выполнили все предварительные требования и тщательно протестируете, чтобы гарантировать простую интеграцию.
Для любых запросов или помощи в отношении реализации обратитесь к нашей команде по следующему адресу:
Отправить по электронной почте: wincrossdeviceapi@microsoft.com
Мы здесь помогаем обеспечить гладкий процесс интеграции.
Связанный контент
- Обзор необработанных уведомлений
- Как запрашивать, создавать и сохранять канал уведомлений
- Обзор WNS — отправка уведомлений для приложений универсальная платформа Windows с помощью Azure Notification Hubs
Windows developer