Udostępnij przez


Zestaw SDK usługi Azure Notification Hubs dla języka JavaScript

Usługa Azure Notification Hubs zapewnia skalowalny w poziomie aparat wypychania, który umożliwia wysyłanie powiadomień do dowolnej platformy (Apple, Amazon Kindle, Firebase, Baidu, Xiaomi, Web, Windows itp.) z dowolnego zaplecza (w chmurze lub lokalnie). Usługa Notification Hubs działa dobrze zarówno w przypadku scenariuszy przedsiębiorstwa, jak i konsumentów. Oto kilka przykładowych scenariuszy:

  • Wysyłaj powiadomienia o najświeższych wiadomościach do milionów osób z małymi opóźnieniami.
  • Wysyłaj kupony oparte na lokalizacji do zainteresowanych segmentów użytkowników.
  • Wysyłaj powiadomienia związane z wydarzeniami do użytkowników lub grup dla aplikacji multimedialnych/sportowych/finansowych/gier.
  • Przesyłaj treści promocyjne do aplikacji, aby angażować klientów i prowadzić wśród nich marketing.
  • Powiadamianie użytkowników o zdarzeniach w przedsiębiorstwie, takich jak nowe wiadomości i elementy robocze.
  • Wysyłaj kody do uwierzytelniania wieloskładnikowego.

Kluczowe linki:

UWAGA: Jeśli przechodzisz z korzystania z pakietu azure-sb , zapoznaj się z migration guide to move from azure-sb to @azure/notification-hubs

Wprowadzenie

Obecnie obsługiwane środowiska

  • Wersje LTS systemu Node.js
  • Najnowsze wersje przeglądarek Safari, Chrome, Edge i Firefox.

Aby uzyskać więcej informacji, zobacz nasze zasady pomocy technicznej .

Instalowanie pakietu

npm install @azure/notification-hubs

Wymagania wstępne

Tworzenie zasobu usługi Azure Notification Hubs

Centrum powiadomień platformy Azure można utworzyć przy użyciu następujących metod:

  1. Portal Azure
  2. "Azure CLI"
  3. Biceps
  4. Szablon ARM

Po utworzeniu centrum powiadomień można skonfigurować przy użyciu Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Importowanie klienta

Ten zestaw SDK dla języka JavaScript oferuje dwa sposoby interakcji z usługą Azure Notification Hubs, za pomocą podejścia opartego na klasach lub podejścia do projektowania modułowego. Podejście oparte na klasach jest spójne we wszystkich pakietach w celu utworzenia klienta, a następnie interakcji z metodami na kliencie.

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);

Podejście modułowe pozwala programiście wybrać funkcje do zaimportowania, ponieważ każda metoda jest udostępniana indywidualnie. W tym podejściu używane są eksporty ścieżek podrzędnych z ES-Modules w celu uwidocznienia metod za pośrednictwem importu bezpośredniego. Dzięki indywidualnym eksportom zapewnia to lepsze wrażenia z potrząsania drzewami i mniejsze rozmiary pakietów, z których deweloper może skorzystać.

Należy pamiętać, że tworzenie klienta jest uwidocznione za pośrednictwem ścieżki podrzędnej "@azure/notification-hubs/api" , a wszystkie metody klienta są uwidocznione za pośrednictwem ścieżki podrzędnej "@azure/notification-hubs/api" . Każda wyeksportowana funkcja przyjmuje jako client pierwszy parametr, a pozostałe parametry pozostają niezmienione.

Uwidaczniane są następujące ścieżki podrzędne:

  • @azure/notification-hubs/api - Główny punkt wejścia dla klienta za pośrednictwem createClientContext i metod klienta, takich jak getInstallation lub sendNotification
  • @azure/notification-hubs/models - Modele i metody wytwórcze usługi Notification Hubs.

Powyższy fragment kodu staje się następnie następujący:

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);

Uwierzytelnianie klienta

Interakcja z centrum powiadomień platformy Azure rozpoczyna się od parametru NotificationHubsClientpołączenia sygnatury dostępu współdzielonego. Obejmuje to następujące poziomy uprawnień: Słuchanie, Zarządzanie, Wysyłanie.

Listen umożliwia klientowi zarejestrowanie się za pośrednictwem interfejsu API rejestracji i instalacji. Wyślij umożliwia klientowi wysyłanie powiadomień do urządzeń przy użyciu interfejsów API wysyłania. Na koniec zarządzanie umożliwia użytkownikowi zarządzanie rejestracją i instalacją, takie jak zapytania.

Nowy NotificationHubsClient klient można utworzyć przy użyciu konstruktora z parametrami połączenia i nazwą centrum powiadomień.

import { NotificationHubsClient } from "@azure/notification-hubs";

const client = new NotificationHubsClient("<connection string>", "<hub name>");

Korzystając z podejścia modułowego, można je createClientContext zaimportować za pośrednictwem ścieżki podrzędnej "@azure/notification-hubs/api" .

import { createClientContext } from "@azure/notification-hubs/api";

const context = createClientContext("<connection string>", "<hub name>");

Najważniejsze pojęcia

Po zainicjowaniu można zapoznać się z następującymi NotificationHubClient pojęciami.

  • Zarządzanie urządzeniami za pomocą instalacji i rejestracjiOpisy
  • Wysyłanie powiadomień do urządzeń

Zarządzanie urządzeniami

Zarządzanie urządzeniami to podstawowa koncepcja usługi Notification Hubs, która umożliwia przechowywanie unikatowego identyfikatora z natywnej usługi powiadamiania platformy (PNS), takiej jak APN lub Firebase, oraz powiązanych metadanych, takich jak tagi używane do wysyłania powiadomień push do odbiorców. Odbywa się to za pomocą dwóch interfejsów API, interfejsu API instalacji, który jest nowszym i preferowanym mechanizmem, oraz rejestracji.

Interfejs API instalacji

Instalacje to nowsze i natywne podejście do zarządzania urządzeniami w formacie JSON, które zawiera dodatkowe właściwości, takie jak identyfikator instalacji i identyfikator użytkownika, których można używać do wysyłania do odbiorców. Interfejs API instalacji ma kilka zalet w porównaniu z istniejącymi interfejsami API rejestracji pod następującymi względami:

  • W pełni idempotentny interfejs API, dzięki czemu wywoływanie create w instalacji, dzięki czemu operacja może być ponowiona bez obaw o duplikaty.
  • userId Obsługa i installationId właściwości, które mogą być następnie używane w wyrażeniach tagów, takich jak $InstallationId:{myInstallId} i $UserId:{bob@contoso.com}.
  • Szablony są teraz częścią instalacji, a nie osobną rejestracją i mogą być przywoływane według nazwy jako znacznik do wysłania.
  • Częściowe aktualizacje są obsługiwane przez JSON Patch Standard, który umożliwia dodawanie tagów i zmienianie innych danych bez konieczności uprzedniego sprawdzania instalacji.

Instalacje można tworzyć za pomocą createOrUpdateInstallation następującej metody:

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);

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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);

Aktualizację instalacji można wykonać za pomocą schematu poprawki JSON, na przykład dodając tag i identyfikator użytkownika przy użyciu updateInstallation tej metody.

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);

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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);

Aby pobrać istniejącą instalację, użyj metody z istniejącym unikatowym identyfikatorem getInstallation instalacji.

import { NotificationHubsClient } from "@azure/notification-hubs";

const client = new NotificationHubsClient("<connection string>", "<hub name>");

const installationId = "<unique installation ID>";

const installation = client.getInstallation(installationId);

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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);

Interfejs API rejestracji

Rejestracja jest powiązana z PNS tak samo, jak powyższa instalacja, z unikalnym identyfikatorem urządzenia z PNS i powiązanymi tagami. Rejestracje szablonów to sposób tworzenia predefiniowanych szablonów treści, które można następnie dostosować w momencie wysyłania za pomocą właściwości do wypełnienia wiadomości. Aby uzyskać więcej informacji na temat szablonów, zobacz dokumentację szablonów.

Instalację można utworzyć na jeden z dwóch sposobów, najpierw poprzez uzyskanie identyfikatora rejestracji z serwera za pomocą getInstallationId , a następnie createOrUpdateRegistration lub za pomocą tej createRegistration metody.

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);

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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);

Aktualizacje można wykonać za updateRegistration pomocą tej metody, ale w przeciwieństwie do instalacji, nie obsługuje aktualizacji przyrostowych. Zapytanie o istniejącą rejestrację można wykonać za getRegistration pomocą metody.

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);

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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);

Rejestracje, w przeciwieństwie do instalacji, mogą być odpytywane w celu uzyskania wszystkich rejestracji, dopasowania rejestracji do warunku lub według tagów. Rejestracje można odpytywać za pomocą listRegistrationsmetody , listRegistrationsByChannel and listRegistrationsByTag . Wszystkie metody obsługują ograniczanie za pomocą opcji i obsługują top stronicowanie asynchroniczne.

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));
  }
}

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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));
  }
}

Operacje wysyłania

Usługa Notification Hubs obsługuje wysyłanie powiadomień do urządzeń bezpośrednio przy użyciu unikalnego identyfikatora dostarczonego przez PNS, przy użyciu tagów do wysyłania odbiorców lub ogólnej emisji do wszystkich urządzeń. Korzystając z jednostki SKU w warstwie Standardowa i nowszych, zaplanowane wysyłanie umożliwia użytkownikowi zaplanowanie powiadomień z wyprzedzeniem do siedmiu dni. Wszystkie operacje wysyłania zwracają identyfikator śledzenia i identyfikator korelacji, które mogą być używane w przypadku zgłoszeń pomocy technicznej usługi Notification Hubs. W przypadku jednostki SKU w warstwie Standardowa i nowszych zwracany jest również identyfikator powiadomienia, którego można użyć do uzyskania danych telemetrycznych powiadomień za pośrednictwem getNotificationOutcomeDetails metody.

Na potrzeby debugowania można ustawić true opcje, enableTestSend które otrzymują natychmiastową informację zwrotną z PNS na temat sendNotification metody, jednak nie są obsługiwane w scenariuszach produkcyjnych. Nie jest to obsługiwane w przypadku zaplanowanych metod wysyłania.

Nieprzetworzone ciągi JSON lub XML mogą być wysyłane do metod wysyłania lub zaplanowanego wysyłania lub można używać konstruktorów powiadomień, które pomagają konstruować wiadomości na PNS, takie jak APN, Firebase, Baidu, ADM i WNS. Te konstruktorzy zbudują natywny format wiadomości, więc nie trzeba zgadywać, które pola są dostępne dla każdego 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,
});

Wysyłanie transmisji

Usługa Notification Hubs może służyć do wysyłania powiadomień do wszystkich zarejestrowanych urządzeń na platformę przy użyciu wysyłania emisji za pośrednictwem sendBroadcastNotification metody.

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}`);
}

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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}`);
}

Wysyłanie bezpośrednie

Aby wysłać urządzenie bezpośrednio, użytkownik może wysłać przy użyciu unikalnego identyfikatora dostarczonego przez platformę, takiego jak token urządzenia APNs, wywołując sendNotification metodę z parametrem 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}`);
}

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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}`);
}

Wysyłanie do odbiorców

Oprócz kierowania na jedno urządzenie użytkownik może kierować reklamy na wiele urządzeń za pomocą tagów. Tagi te mogą być dostarczane jako lista tagów, która następnie tworzy wyrażenie tagu pasujące do zarejestrowanych urządzeń, lub za pomocą wyrażenia tagu, które może następnie używać logiki logicznej do kierowania reklam do odpowiednich odbiorców. Aby uzyskać więcej informacji o znacznikach i wyrażeniach tagów, zobacz Routing i wyrażenia tagów.

Jeśli chcesz utworzyć wyrażenie tagu z tablicy tagów, dostępny jest Tag Expression Builder z metodą, która jest uwidoczniona createTagExpression podczas importu najwyższego poziomu lub @azure/notification-hubs/models/tagExpressionBuilder importu modularnego, który tworzy "lub wyrażenie tagu" ze znaczników.

import { createTagExpression } from "@azure/notification-hubs";

const tags = ["likes_football", "likes_hockey"];
const tagExpression = createTagExpression(tags);

console.log(tagExpression);

Komunikaty wyrażeń tagów można wysyłać przy użyciu następującego kodu:

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}`);
}

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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}`);
}

Zaplanowana wysyłka

Powiadomienia push można zaplanować z wyprzedzeniem do siedmiu dni w przypadku standardowych przestrzeni nazw SKU i nowszych scheduleNotification przy użyciu metody wysyłania do urządzeń z tagami lub ogólnej emisji za pomocą scheduleBroadcastNotificationprogramu . Spowoduje to zwrócenie identyfikatora powiadomienia, którego można następnie użyć do anulowania, jeśli to konieczne, za cancelScheduledNotification pomocą metody.

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}`);

Korzystając z podejścia modułowego, kod wyglądałby następująco:

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}`);

Rozwiązywanie problemów

Obsługa React Native

React Native obecnie nie obsługuje [URLSearchParams], który jest używany przez zestaw SDK usługi Azure Notification Hubs. Aby korzystać z SDK w React Native, musisz zainstalować url-search-params-polyfill pakiet i zaimportować go przed użyciem SDK.

Musimy również zapewnić polyfill dla TextEncoder interfejsu API i interfejsu API iteratora asynchronicznego. Aby uzyskać więcej informacji, zapoznaj się z naszą próbką React Native z Expo .

Diagnozuj porzucone powiadomienia

Azure Notification Hubs zawiera kompletny przewodnik dotyczący rozwiązywania problemów z porzuconymi powiadomieniami w przewodniku Diagnozowanie porzuconych powiadomień w Azure Notification Hubs.

Wysyłanie testowe jest obsługiwane w metodach sendNotification i sendBroadcastNotification z enableTestSend opcją:

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

Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby wyświetlić dziennik żądań i odpowiedzi HTTP, ustaw zmienną środowiskową AZURE_LOG_LEVEL na info. Alternatywnie rejestrowanie można włączyć w czasie wykonywania, wywołując setLogLevel w @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Aby uzyskać bardziej szczegółowe instrukcje dotyczące włączania dzienników, zapoznaj się z dokumentami dotyczącymi pakietów @azure/rejestratora.

Dalsze kroki

W poniższych przykładach przedstawiono różne sposoby interakcji z usługą Azure Notification Hubs:

Zarządzanie urządzeniami:

Operacje wysyłania:

Operacje zarządcze:

Contributing

Jeśli chcesz współtworzyć tę bibliotekę, przeczytaj przewodnik dotyczący współtworzenia , aby dowiedzieć się więcej na temat tworzenia i testowania kodu.

Testy tego modułu są mieszanką testów na żywo i jednostkowych, które wymagają wystąpienia usługi Azure Notification Hubs. Aby wykonać testy, musisz uruchomić:

  1. pnpm install
  2. pnpm build --filter @azure/notification-hubs...
  3. Utwórz plik .env z następującą zawartością w folderze sdk\notificationhubs\notification-hubs : NOTIFICATIONHUBS_CONNECTION_STRING=connection string for your Notification Hubs instanceNOTIFICATION_HUB_NAME=Notification Hub name
  4. cd sdk\notificationhubs\notification-hubs
  5. npm run test.

Zobacz nasz folder testów , aby uzyskać więcej informacji.