是否可以有效地向当前所有注册中添加新标签?

时间:2018-09-12 12:47:14

标签: azure azure-notificationhub

我的通知中心目前有16万个活动的注册设备。每个人都有一组标签。我在应用程序中添加了新功能,用户可以打开/关闭此功能的通知。目前,我们通过注册标签来管理开/关状态。默认情况下,我们希望所有人都使用此功能,这意味着我们需要将此标记添加到每个注册中。有可能有效地做到这一点吗?我当前的解决方案花费的时间太长:

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 :(得分:0)

您的问题的简短答案是“否”。

您的应用程序是否在用户每次启动会话时都注册其推送令牌?如果是这样,也许最好的方法是在每个用户首​​次启动新版本的应用程序时添加标签。

您是否还有一台服务器,可以跟踪所有推送注册和用户首选项?如果新功能不取决于具有最新版移动应用程序的用户,则还可以使用新的默认设置更新所有用户首选项的表。