我们目前在我们的服务器上有自己的推送通知实现,推送通知ID约为200万用户。但是,我们的系统存在这种规模的一些问题,因此我们正在考虑将通知中心作为替代方案。
我们已经集成了登录时注册每个用户所需的相关服务器代码,但为了覆盖最近可能没有登录的所有用户,我们需要手动注册一次所有用户。我创建了一个简单的控制台应用程序,通过循环我们的数据库,创建相关标签并将其注册到集线器来实现此目的。
但是,对于只有300,000个用户的测试数据库运行此程序,该程序非常慢。它每1.25分钟只注册1000个用户,这意味着整个300,000用户可能需要6个小时,而2百万可能需要数天。
以下是控制台应用程序外观的一小部分示例:
var accounts = GetUsers();
Parallel.Foreach(accounts, account =>
{
var registration = Register(user.ID, user.pushID).Result;
});
async Task<RegistrationDescription> Register(int ID, string pushID)
{
string ID = "ID-" + ID;
HashSet<string> tags = new HashSet<string>();
tags.Add(ID);
return await client.CreateAppleNativeRegistrationAsync(pushID, tags);
}
问:有没有一种方便的方法可以快速注册具有通知中心的大型现有用户群?
答案 0 :(得分:0)
对您的问题的简短回答是否定的,没有通知中心的内置功能来支持批量注册。然而,要使这一过程更快,不一定是一个巨大的障碍。
你从哪里执行这段代码?如果您是从本地网络进行此操作并通过Internet进行每次注册,那么由于一般的网络延迟,可能需要数天时间。如果你不能让你的程序运行几天(虽然我不明白为什么你不能让它这样做),那么你可能最好从Azure数据中心执行代码,你自己的工作者角色,例如。