Список зарегистрированных устройств Azure Notification Hub
Я Этот Пост для работы с Azure notification hub. Я пытаюсь создать веб-api, который регистрирует устройства с помощью концентратора уведомлений Azure. Когда я отправляю запрос на регистрацию устройства, как показано в статье, он попадает в Центр уведомлений azure.
Ниже приведен снимок экрана моего портала azure. Который показывает, что был запрос на регистрацию.
но когда я пытаюсь получить информацию о зарегистрированных устройствах используя следующий код, он всегда равен 0.
var registrationsCount = await hub.GetAllRegistrationsAsync(Int32.MaxValue);
return registrationsCount.Count().ToString();
теперь у меня есть несколько вопросов :
1) Как я могу изучить зарегистрированные данные устройства ?
2) Как я могу отправить тестовое уведомление на устройства ios с заднего конца. Ниже приведен код, который я использую для отправки тестового уведомления.
var payload = string.Format(toastTemplate, message);
hub.SendAppleNativeNotificationAsync(payload, "worldnews");
3) Если я использую веб-api в качестве задней части, необходимо ли настраивать сведения о приложении ios в Azure notification hub ? я.электронная выгрузка сертификат и другие сведения на портале azure ?
3 ответов
ваша первая проблема заключается в том, как вы звоните GetAllRegistrationsAsync
. Параметр не является максимальным количеством регистраций, которые вы хотите вернуть. Это индекс первой регистрации, которую вы хотите. В большинстве случаев это будет 0, а не Int32.MaxValue
public Task<CollectionQueryResult<RegistrationDescription>>
GetAllRegistrationsAsync(int top)
медведя кроме того, этот метод возвращает не более 100 регистраций. Если вы хотите больше, вам нужно будет использовать ContinuationToken.
вот код, который я использую для получения регистрации:
internal async Task<List<RegistrationDescription>> GetAllRegisteredDevicesAsync()
{
var hub = NotificationHubClient.CreateClientFromConnectionString(
Settings.Default.AzureNotificationsMobileAppFullSharedAccessListenerConnection,
Settings.Default.AzureNotificationsMobileAppHubName,
Settings.Default.AzureNotificationsTestSendMode);
var allRegistrations = await hub.GetAllRegistrationsAsync(0);
var continuationToken = allRegistrations.ContinuationToken;
var registrationDescriptionsList = new List<RegistrationDescription>(allRegistrations);
while (!string.IsNullOrWhiteSpace(continuationToken))
{
var otherRegistrations = await hub.GetAllRegistrationsAsync(continuationToken, 0);
registrationDescriptionsList.AddRange(otherRegistrations);
continuationToken = otherRegistrations.ContinuationToken;
}
return registrationDescriptionsList;
}
обратите внимание, что этот метод должен только используется, если у вас есть только несколько сотен, возможно, несколько тысяч регистраций. Если у вас есть десятки, сотни тысяч или миллионы регистраций, вы не должны использовать этот метод, и найти более эффективный метод для поиска Что вам нужно.
есть еще один способ, если кто-то просто хочет получить сведения о зарегистрированных устройствах только для знаний, а не для целей приложения. Обозреватель Служебных Шин доступно. Вы можете загрузить проект, извлечь его и запустить с помощью visual studio.
вы сможете подключиться к службам azure, предоставив строку подключения и ключ владельца. Я использовал это для просмотра зарегистрированных устройств и отправки тестовых уведомлений и т. д. Это отличный полезный инструмент.
надеюсь, это может помочь кому-то.
короткий код:
private async Task<List<RegistrationDescription>> GetAllRegisteredDevicesAsync()
{
List<RegistrationDescription> allRegistrations = new List<RegistrationDescription>();
var hub = NotificationHubClient.CreateClientFromConnectionString(
Settings.Default.AzureNotificationsMobileAppFullSharedAccessListenerConnection,
Settings.Default.AzureNotificationsMobileAppHubName,
Settings.Default.AzureNotificationsTestSendMode);
CollectionQueryResult<RegistrationDescription> page = null;
do
{
page = await hub.GetAllRegistrationsAsync(page?.ContinuationToken, 0);
allRegistrations.AddRange(page);
}
while (!string.IsNullOrWhiteSpace(page.ContinuationToken));
return allRegistrations;
}