Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Центры уведомлений Azure предоставляют масштабируемую подсистему push-уведомлений, которая позволяет отправлять уведомления на любую платформу (Apple, Amazon Kindle, Firebase, Baidu, Xiaomi, Web, Windows и т. д.) из любой серверной части (облачной или локальной). Концентраторы уведомлений хорошо подходят как для корпоративных, так и для потребительских сценариев. Вот несколько примеров сценариев:
- Отправляйте уведомления о последних новостях миллионам людей с низкой задержкой.
- Отправляйте купоны на основе местоположения заинтересованным сегментам пользователей.
- Отправляйте уведомления о событиях пользователям или группам для приложений СМИ/спорта/финансов/игр.
- Размещайте рекламный контент в приложениях для привлечения клиентов и их маркетинга.
- Уведомляйте пользователей о корпоративных событиях, таких как новые сообщения и рабочие элементы.
- Отправка кодов для многофакторной аутентификации.
Ключевые ссылки:
ПРИМЕЧАНИЕ: Если вы переходите от использования пакета azure-sb , см. migration guide to move from azure-sb to @azure/notification-hubs
Начало работы
Поддерживаемые в настоящее время среды
- Версии Node.js LTS
- Последние версии Safari, Chrome, Edge и Firefox.
Чтобы получить дополнительные сведения, ознакомьтесь с нашей политикой поддержки.
Установите пакет
npm install @azure/notification-hubs
Предпосылки
Создание ресурса Центров уведомлений Azure
Концентратор уведомлений Azure можно создать с помощью следующих способов:
После создания концентратор уведомлений можно настроить с помощью портала Azure или Azure CLI.
Импорт клиента
Этот пакет SDK для JavaScript предлагает два способа взаимодействия с центрами уведомлений Azure: либо на основе классов, либо с помощью модульного подхода к проектированию. Подход, основанный на классах, согласован во всех пакетах для создания клиента и последующего взаимодействия с методами клиента.
import { NotificationHubsClient, createAppleInstallation } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const installation = createAppleInstallation({
installationId: "<installation-id>",
pushChannel: "<push-channel>",
tags: ["likes_javascript"],
});
const result = await client.createOrUpdateInstallation(installation);
Модульный подход позволяет разработчику выбирать, какие функции импортировать, поскольку каждый метод предоставляется отдельно. Этот подход использует экспорт подпутов с ES-Modules для предоставления методов через прямой импорт. При использовании отдельных экспортов это обеспечивает лучший опыт встряхивания деревьев и меньшие размеры пакетов, которыми может воспользоваться разработчик.
Обратите внимание, что создание клиента предоставляется через подпуть, "@azure/notification-hubs/api" а все методы клиента предоставляются через "@azure/notification-hubs/api" подпуть. Каждая экспортируемая функция принимает в качестве первого параметра, client а остальные параметры остаются неизменными.
Доступны следующие подпути:
-
@azure/notification-hubs/api- Основная точка входа для клиента черезcreateClientContextи методы клиента, такие какgetInstallationилиsendNotification -
@azure/notification-hubs/models- Модели концентраторов уведомлений и заводские методы.
Приведенный выше фрагмент кода выглядит следующим образом:
import { createClientContext, createOrUpdateInstallation } from "@azure/notification-hubs/api";
import { createAppleInstallation } from "@azure/notification-hubs";
const context = createClientContext("<connection string>", "<hub name>");
const installation = createAppleInstallation({
installationId: "<installation-id>",
pushChannel: "<push-channel>",
tags: ["likes_javascript"],
});
const result = await createOrUpdateInstallation(context, installation);
аутентификация клиента;
Взаимодействие с концентратором уведомлений Azure начинается с NotificationHubsClient того, который поддерживает строки подключения подписанного URL-адреса. Это включает в себя следующие уровни разрешений: Прослушивание, Управление, Отправка.
Listen позволяет клиенту зарегистрироваться через Registration and Installations API. Send позволяет клиенту отправлять уведомления на устройства с помощью API отправки. Наконец, функция «Управление» позволяет пользователю выполнять управление регистрацией и установкой, например выполнять запросы.
Новый NotificationHubsClient клиент может быть создан с помощью конструктора со строкой подключения и именем Notification Hub.
import { NotificationHubsClient } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
Используя модульный подход, они createClientContext могут быть импортированы "@azure/notification-hubs/api" через подпуть.
import { createClientContext } from "@azure/notification-hubs/api";
const context = createClientContext("<connection string>", "<hub name>");
Основные понятия
NotificationHubClient После инициализации можно изучить следующие концепции.
- Управление устройствами через установку и регистрациюОписания
- Отправка уведомлений на устройства
Управление устройствами
Управление устройствами — это основная концепция концентраторов уведомлений, позволяющая хранить уникальный идентификатор из встроенной службы уведомлений платформы (PNS), такой как APNs или Firebase, и связанные метаданные, такие как теги, используемые для отправки push-уведомлений аудитории. Это делается с помощью двух API: Installation API, который является более новым и предпочтительным механизмом, и Registrations.
API установок
Установки — это более новый и нативный подход JSON к управлению устройствами, который содержит дополнительные свойства, такие как идентификатор установки и идентификатор пользователя, которые можно использовать для отправки аудитории. API установки имеет несколько преимуществ по сравнению с существующими API регистрации в следующих аспектах:
- Полностью идемпотентный API, поэтому вызов create при установке, чтобы можно было повторить операцию, не беспокоясь о дублировании.
- Поддержка
userIdсвойств иinstallationId, которые затем можно использовать в выражениях тегов, таких как$InstallationId:{myInstallId}и$UserId:{bob@contoso.com}. - Шаблоны теперь являются частью установки, а не отдельной регистрацией, и на них можно ссылаться по имени в качестве тега для отправки.
- Частичные обновления поддерживаются с помощью стандарта JSON Patch Standard, который позволяет добавлять теги и изменять другие данные без предварительного запроса к установке.
Установки могут быть созданы с помощью createOrUpdateInstallation следующего метода:
import { NotificationHubsClient, createAppleInstallation } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
// Create an installation for APNs
const installation = createAppleInstallation({
installationId: "0d8ab095-c449-493f-9195-17e4917806c4", // Must be unique
pushChannel: "00fc13adff785122b4ad28809a3420982341241421348097878e577c991de8f0", // PNS specific handle
tags: ["likes_hockey", "likes_football"],
});
const response = await client.createOrUpdateInstallation(installation);
При использовании модульного подхода код будет выглядеть следующим образом:
import { createClientContext, createOrUpdateInstallation } from "@azure/notification-hubs/api";
import { createAppleInstallation } from "@azure/notification-hubs";
const context = createClientContext("<connection string>", "<hub name>");
// Create an installation for APNs
const installation = createAppleInstallation({
installationId: "0d8ab095-c449-493f-9195-17e4917806c4", // Must be unique
pushChannel: "00fc13adff785122b4ad28809a3420982341241421348097878e577c991de8f0", // PNS specific handle
tags: ["likes_hockey", "likes_football"],
});
const response = await createOrUpdateInstallation(context, installation);
Обновление установки можно выполнить с помощью схемы исправления JSON, например путем добавления тега и идентификатора пользователя с помощью этого метода updateInstallation .
import { NotificationHubsClient, JsonPatch } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const installationId = "<unique installation ID>";
const updates: JsonPatch[] = [
{ op: "add", path: "/tags", value: "likes_baseball" },
{ op: "add", path: "/userId", value: "bob@contoso.com" },
];
const installation = await client.updateInstallation(installationId, updates);
При использовании модульного подхода код будет выглядеть следующим образом:
import { createClientContext, updateInstallation } from "@azure/notification-hubs/api";
import { JsonPatch } from "@azure/notification-hubs";
const context = createClientContext("<connection string>", "<hub name>");
const installationId = "<unique installation ID>";
const updates: JsonPatch[] = [
{ op: "add", path: "/tags", value: "likes_baseball" },
{ op: "add", path: "/userId", value: "bob@contoso.com" },
];
const installation = await updateInstallation(context, installationId, updates);
Чтобы получить существующую установку, используйте метод с существующим уникальным идентификатором getInstallation установки.
import { NotificationHubsClient } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const installationId = "<unique installation ID>";
const installation = client.getInstallation(installationId);
При использовании модульного подхода код будет выглядеть следующим образом:
import { createClientContext, getInstallation } from "@azure/notification-hubs/api";
const context = createClientContext("<connection string>", "<hub name>");
const installationId = "<unique installation ID>";
const installation = getInstallation(context, installationId);
API регистраций
Регистрация связана с PNS так же, как и описанная выше установка, с уникальным идентификатором устройства из PNS и связанными с ним тегами. Регистрация шаблонов — это способ создания предопределенных шаблонов тела, которые затем могут быть настроены во время отправки со свойствами для заполнения сообщения. Дополнительные сведения о шаблонах см. в документации по шаблонам.
Установка может быть создана одним из двух способов, сначала путем получения регистрационного идентификатора с сервера с помощью getInstallationId , а затем createOrUpdateRegistration или с помощью этого метода createRegistration .
import {
NotificationHubsClient,
createAppleRegistrationDescription,
} from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const registration = createAppleRegistrationDescription({
deviceToken: "00fc13adff785122b4ad28809a3420982341241421348097878e577c991de8f0",
tags: ["likes_hockey", "likes_football"],
});
const updatedRegistration = await client.createRegistration(registration);
При использовании модульного подхода код будет выглядеть следующим образом:
import { createClientContext, createRegistration } from "@azure/notification-hubs/api";
import { createAppleRegistrationDescription } from "@azure/notification-hubs";
const context = createClientContext("<connection string>", "<hub name>");
const registration = createAppleRegistrationDescription({
deviceToken: "00fc13adff785122b4ad28809a3420982341241421348097878e577c991de8f0",
tags: ["likes_hockey", "likes_football"],
});
const updatedRegistration = await createRegistration(context, registration);
Обновления могут быть выполнены с помощью этого метода updateRegistration , но, в отличие от установки, он не поддерживает добавочные обновления. Запрос на существующую регистрацию может быть выполнен с помощью метода getRegistration .
import { NotificationHubsClient } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const registrationId = "<unique Registration ID>";
const registration = await client.getRegistration(registrationId);
if (registration.tags) {
registration.tags.push("likes_sports");
} else {
registration.tags = ["likes_sports"];
}
const updatedRegistration = await client.updateRegistration(registration);
При использовании модульного подхода код будет выглядеть следующим образом:
import {
createClientContext,
getRegistration,
updateRegistration,
} from "@azure/notification-hubs/api";
const context = createClientContext("<connection string>", "<hub name>");
const registrationId = "<unique Registration ID>";
const registration = await getRegistration(context, registrationId);
if (registration.tags) {
registration.tags.push("likes_sports");
} else {
registration.tags = ["likes_sports"];
}
const updatedRegistration = await updateRegistration(context, registration);
Регистрации, в отличие от установок, могут запрашиваться для получения всех регистраций, сопоставления регистраций с условием или по тегам. Запросы к регистрациям можно выполнять с listRegistrationsпомощью метода , listRegistrationsByChannel and listRegistrationsByTag . Все методы поддерживают ограничение через top опцию и поддерживают асинхронную разбиение на страницы.
import { NotificationHubsClient } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const registrations = client.listRegistrationsByTag("likes_hockey");
let page = 0;
for await (const pages of registrations.byPage()) {
console.log(`Page number ${page++}`);
for (const item of pages) {
console.log(JSON.stringify(item, null, 2));
}
}
При использовании модульного подхода код будет выглядеть следующим образом:
import { createClientContext, listRegistrationsByTag } from "@azure/notification-hubs/api";
const context = createClientContext("<connection string>", "<hub name>");
const registrations = await listRegistrationsByTag(context, "likes_hockey");
let page = 0;
for await (const pages of registrations.byPage()) {
console.log(`Page number ${page++}`);
for (const item of pages) {
console.log(JSON.stringify(item, null, 2));
}
}
Отправка операций
Центры уведомлений поддерживают отправку уведомлений на устройства напрямую с использованием уникального идентификатора, предоставленного PNS, с помощью тегов для отправки аудитории или общей широковещательной передачи на все устройства. Используя номер SKU "Стандартный" и более поздних версий, запланированная отправка позволяет пользователю планировать уведомления на семь дней вперед. Все операции отправки возвращают идентификатор отслеживания и идентификатор корреляции, которые можно использовать для обращений в службу поддержки концентраторов уведомлений. При использовании номера SKU "Стандартный" и более поздних версий также возвращается идентификатор уведомления, который можно использовать для получения телеметрии уведомлений с помощью этого метода getNotificationOutcomeDetails .
В целях отладки можно задать параметры, enableTestSend которые true получают немедленную обратную связь от PNS о методе sendNotification , однако не поддерживаются в рабочих сценариях. Это не поддерживается в запланированных методах отправки.
Необработанные строки JSON или XML могут быть отправлены в методы send или scheduled send, или могут быть использованы построители уведомлений, которые помогают создавать сообщения для PNS, такие как APNs, Firebase, Baidu, ADM и WNS. Эти сборщики создадут собственный формат сообщений, поэтому не нужно гадать, какие поля доступны для каждой PNS.
import { createAppleNotificationBody, createAppleNotification } from "@azure/notification-hubs";
const apnsBody = createAppleNotificationBody({
alert: {
title: "Notification Title",
subtitle: "Notification Subtitle",
body: "Notification body goes here",
},
sound: "default",
interruptionLevel: "time-sensitive",
});
// Send the message using the modular approach
const notification = createAppleNotification({
body: apnsBody,
});
Широковещательная отправка
Концентраторы уведомлений можно использовать для отправки уведомлений на все зарегистрированные устройства на каждой платформе с помощью метода широковещательной sendBroadcastNotification рассылки.
import { NotificationHubsClient, createAppleNotification } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
const message = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await client.sendBroadcastNotification(message);
console.log(`Tracking ID: ${result.trackingId}`);
console.log(`Correlation ID: ${result.correlationId}`);
// Only available in Standard SKU and above
if (result.notificationId) {
console.log(`Notification ID: ${result.notificationId}`);
}
При использовании модульного подхода код будет выглядеть следующим образом:
import { createClientContext, sendBroadcastNotification } from "@azure/notification-hubs/api";
import { createAppleNotification } from "@azure/notification-hubs";
const context = createClientContext("<connection string>", "<hub name>");
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
const message = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await sendBroadcastNotification(context, message);
console.log(`Tracking ID: ${result.trackingId}`);
console.log(`Correlation ID: ${result.correlationId}`);
// Only available in Standard SKU and above
if (result.notificationId) {
console.log(`Notification ID: ${result.notificationId}`);
}
Прямая отправка
Чтобы отправить напрямую устройство, пользователь может отправить с помощью предоставленного платформой уникального идентификатора, такого как токен устройства APNs, вызвав sendNotification метод с параметром deviceHandle .
import { NotificationHubsClient, createAppleNotification } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const deviceHandle = "00fc13adff785122b4ad28809a3420982341241421348097878e577c991de8f0";
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
const message = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await client.sendNotification(message, { deviceHandle });
console.log(`Tracking ID: ${result.trackingId}`);
console.log(`Correlation ID: ${result.correlationId}`);
// Only available in Standard SKU and above
if (result.notificationId) {
console.log(`Notification ID: ${result.notificationId}`);
}
При использовании модульного подхода код будет выглядеть следующим образом:
import { createClientContext, sendNotification } from "@azure/notification-hubs/api";
import { createAppleNotification } from "@azure/notification-hubs";
const context = createClientContext("<connection string>", "<hub name>");
const deviceHandle = "00fc13adff785122b4ad28809a3420982341241421348097878e577c991de8f0";
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
const message = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await sendNotification(context, message, { deviceHandle });
console.log(`Tracking ID: ${result.trackingId}`);
console.log(`Correlation ID: ${result.correlationId}`);
// Only available in Standard SKU and above
if (result.notificationId) {
console.log(`Notification ID: ${result.notificationId}`);
}
Отправить аудитории
Помимо таргетинга на одно устройство, пользователь может настроить таргетинг на несколько устройств с помощью тегов. Эти теги могут быть предоставлены в виде списка тегов, который затем создает выражение тега для сопоставления зарегистрированных устройств, или в виде выражения тега, которое затем может использовать булеву логику для таргетинга нужной аудитории. Дополнительные сведения о тегах и выражениях тегов см. в разделе Маршрутизация и выражения тегов.
Если вы хотите создать выражение тега из массива тегов, существует Построитель выражений тегов с методом createTagExpression , который предоставляется на верхнем уровне импорта или @azure/notification-hubs/models/tagExpressionBuilder модульного импорта, который создает «выражение или тега» из тегов.
import { createTagExpression } from "@azure/notification-hubs";
const tags = ["likes_football", "likes_hockey"];
const tagExpression = createTagExpression(tags);
console.log(tagExpression);
Сообщения с выражениями тегов могут отправляться с помощью следующего кода:
import { NotificationHubsClient, createAppleNotification } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const tagExpression = "likes_hockey && likes_football";
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
const notification = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await client.sendNotification(notification, { tagExpression });
console.log(`Tracking ID: ${result.trackingId}`);
console.log(`Correlation ID: ${result.correlationId}`);
// Only available in Standard SKU and above
if (result.notificationId) {
console.log(`Notification ID: ${result.notificationId}`);
}
При использовании модульного подхода код будет выглядеть следующим образом:
import { createClientContext, sendNotification } from "@azure/notification-hubs/api";
import { createAppleNotification } from "@azure/notification-hubs";
const context = createClientContext("<connection string>", "<hub name>");
const tagExpression = "likes_hockey && likes_football";
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
const notification = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await sendNotification(context, notification, { tagExpression });
console.log(`Tracking ID: ${result.trackingId}`);
console.log(`Correlation ID: ${result.correlationId}`);
// Only available in Standard SKU and above
if (result.notificationId) {
console.log(`Notification ID: ${result.notificationId}`);
}
Запланированная отправка
Push-уведомления можно запланировать за семь дней с помощью пространств имен SKU уровня "Стандартный" и выше с помощью метода отправки на устройства с тегами scheduleNotification или общей трансляции с помощью scheduleBroadcastNotification. Он возвращает идентификатор уведомления, который затем может быть использован для отмены при необходимости с помощью метода cancelScheduledNotification .
import { NotificationHubsClient, createAppleNotification } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const tagExpression = "likes_hockey && likes_football";
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
// Schedule 8 hours from now
const scheduledTime = new Date(Date.now() + 8 * 60 * 60 * 1000);
const message = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await client.scheduleNotification(scheduledTime, message, { tagExpression });
console.log(`Tracking ID: ${result.trackingId}`);
console.log(`Correlation ID: ${result.correlationId}`);
// Can be used to cancel via the cancelScheduledSend method
console.log(`Notification ID: ${result.notificationId}`);
При использовании модульного подхода код будет выглядеть следующим образом:
import { createClientContext, scheduleNotification } from "@azure/notification-hubs/api";
import { createAppleNotification } from "@azure/notification-hubs";
const context = createClientContext("<connection string>", "<hub name>");
const tagExpression = "likes_hockey && likes_football";
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
// Schedule 8 hours from now
const scheduledTime = new Date(Date.now() + 8 * 60 * 60 * 1000);
const message = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await scheduleNotification(context, scheduledTime, message, { tagExpression });
console.log(`Tracking ID: ${result.trackingId}`);
console.log(`Correlation ID: ${result.correlationId}`);
// Can be used to cancel via the cancelScheduledSend method
console.log(`Notification ID: ${result.notificationId}`);
Устранение неполадок
Поддержка React Native
React Native в настоящее время не поддерживает [URLSearchParams], который используется пакетом SDK для Azure Notification Hubs. Чтобы использовать SDK в React Native, вам потребуется установить url-search-params-polyfill пакет и импортировать его перед использованием SDK.
Нам также необходимо предоставить полифилл для TextEncoder API и асинхронный итератор API. Пожалуйста, ознакомьтесь с нашим примером React Native с Expo для получения более подробной информации.
Диагностика уведомлений об отброшенных сообщениях
В Azure Notification Hubs есть полное руководство по устранению неполадок, связанных с отброшенными уведомлениями, в руководстве по диагностике отброшенных уведомлений в Azure Notification Hubs.
Тестовая отправка поддерживается в методах sendNotification и sendBroadcastNotification с enableTestSend опцией:
import { NotificationHubsClient, createAppleNotification } from "@azure/notification-hubs";
const client = new NotificationHubsClient("<connection string>", "<hub name>");
const tagExpression = "likes_hockey && likes_football";
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
const notification = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await client.sendNotification(notification, {
tagExpression,
enableTestSend: true,
});
import { createClientContext, sendNotification } from "@azure/notification-hubs/api";
import { createAppleNotification } from "@azure/notification-hubs";
const context = createClientContext("<connection string>", "<hub name>");
const tagExpression = "likes_hockey && likes_football";
const messageBody = `{ "aps" : { "alert" : "Hello" } }`;
const notification = createAppleNotification({
body: messageBody,
headers: {
"apns-priority": "10",
"apns-push-type": "alert",
},
});
const result = await sendNotification(context, notification, {
tagExpression,
enableTestSend: true,
});
Logging
Включение ведения журнала может помочь выявить полезные сведения о сбоях. Чтобы просмотреть журнал HTTP-запросов и ответов, задайте для переменной среды AZURE_LOG_LEVEL значение info. В альтернативном порядке, логирование можно включить во время выполнения, вызвав setLogLevel в @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Дополнительные инструкции по включению журналов см. в документации по пакету @azure/loger.
Дальнейшие шаги
В следующих примерах показаны различные способы взаимодействия с центрами уведомлений Azure.
Управление устройствами:
- API установок
- API регистрации
Операции отправки:
- Широковещательная отправка
- Прямая отправка
- Аудитория отправляет со списком тегов
- Audience Send с выражением тега
- Запланированная широковещательная отправка
- Запланированная отправка
Управленческие операции:
Contributing
Если вы хотите внести свой вклад в эту библиотеку, ознакомьтесь с руководством по созданию и тестированию кода.
Тесты этого модуля представляют собой смесь динамических и модульных тестов, для которых требуется наличие экземпляра Azure Notification Hubs. Чтобы выполнить тесты, вам нужно выполнить:
pnpm installpnpm build --filter @azure/notification-hubs...- Создайте в папке
sdk\notificationhubs\notification-hubsфайл .env со следующим содержимым:NOTIFICATIONHUBS_CONNECTION_STRING=connection string for your Notification Hubs instanceNOTIFICATION_HUB_NAME=Notification Hub name cd sdk\notificationhubs\notification-hubs-
npm run test.
Просмотрите нашу папку тестов для получения более подробной информации.
Связанные проекты
Azure SDK for JavaScript