我的通知中心目前有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
更新标签如何?
答案 0 :(得分:0)
您的问题的简短答案是“否”。
您的应用程序是否在用户每次启动会话时都注册其推送令牌?如果是这样,也许最好的方法是在每个用户首次启动新版本的应用程序时添加标签。
您是否还有一台服务器,可以跟踪所有推送注册和用户首选项?如果新功能不取决于具有最新版移动应用程序的用户,则还可以使用新的默认设置更新所有用户首选项的表。