Можно ли эффективно добавить новый тег ко всем текущим регистрациям? - PullRequest
0 голосов
/ 12 сентября 2018

В настоящее время у меня в концентраторе уведомлений 160 000 активных зарегистрированных устройств.У каждого есть набор тегов.Я добавил новую функцию в свое приложение, и пользователь может включить или отключить уведомление для этой функции.В настоящее время мы управляем состоянием включения / выключения, регистрируя тег.Мы хотели бы развернуть эту функцию по умолчанию для всех, что означает, что нам нужно будет добавлять этот тег к каждой регистрации.Можно ли сделать это эффективно?Мое текущее решение занимает слишком много времени:

var result = await HubClient.GetAllRegistrationsAsync(currentToken, 100);
foreach(var r in result)
{
  //get installationId from tags
  var id = ...;
  var installation = await HubClient.GetInstallationAsync(id);
  installation.Tags.Add("newtag");
  await HubClient.CreateOrUpdateInstallationAsync(installation);
}

Это занимает слишком много времени и даже приводит к QuotaExceededExceptions.Есть ли более эффективный способ сделать это?Можно ли избежать звонка GetInstallationAsync?Возможно получить все Installations напрямую, вместо того, чтобы пройти через Registrations?Как насчет обновления тегов через Registration без прохождения через Installation?

1 Ответ

0 голосов
/ 14 сентября 2018

Короткий ответ на ваш вопрос "нет".

Регистрирует ли ваше приложение свой push-токен каждый раз, когда пользователь запускает сеанс? Если это так, возможно, лучший подход - добавить тег, когда каждый пользователь впервые запускает новую версию приложения.

У вас также есть сервер, который отслеживает все push-регистрации и пользовательские настройки? Вы также можете обновить таблицу всех пользовательских настроек с помощью новой настройки по умолчанию, если новая функция не зависит от пользователя, имеющего последнюю версию мобильного приложения.

...