我有一个相当简单的应用程序,它向具有两个标记,ID和语言的Azure通知中心注册少数用户Android和iOS用户。但是,我注意到,当向大型组发送消息时,只有几个应该接收消息的iOS设备才能获取它。但是,如果我循环遍历所有帐户并使用其ID标记发送消息,则每个iOS设备都会收到该消息。Notification Hub - 适用于大型群组的iOS传递不一致
我知道iOS不能保证,但只有~10个iOS设备,如果我使用ID标签,我可以发送每一个设备,但如果我使用语言标签或做无意义的推动。
我在一个保留单位和九个最大单位的基本层。 Azure门户不报告任何传递,网络或有效负载错误。
服务器端注册看起来像这样一点点(以下Azure上here列出的例子):
foreach(var user in users)
{
//ID is a long and unique per user
//Language is an int - all accounts being tested have language of 0
var tags = new HashSet<string>();
tags.Add("ID-" + user.ID);
tags.Add("Language-" + user.Language);
//Register or update based on user.Device
client.CreateAppleNativeRegistrationAsync(user.pushID, tags);
client.CreateGcmNativeRegistrationAsync(user.pushID, tags);
}
下命中的所有Android设备,但没有一致击中iOS设备。 iOS设备只能看到十分之一的信息。 iOS设备上的语言标记和无标签推送都具有相同的传送速率。
string apnsMessage = "{\"aps\":{\"alert\":\"" + message + "\"}}";
string gcmMessage = "{\"data\":{\"message\":\"" + message + "\"}}";
//Language Tag
client.SendAppleNativeNotificationAsync(apnsMessage, "Language-0");
client.SendGcmNativeNotificationAsync(gcmMessage, "Language-0");
//Tagless Push
client.SendAppleNativeNotificationAsync(apnsMessage);
client.SendGcmNativeNotificationAsync(gcmMessage);
每一个Android和iOS设备的以下工作。每个设备都可以在99%的时间内在几秒钟内收到消息。
string apnsMessage = "{\"aps\":{\"alert\":\"" + message + "\"}}";
string gcmMessage = "{\"data\":{\"message\":\"" + message + "\"}}";
foreach(var user in users)
{
client.SendAppleNativeNotificationAsync(apnsMessage, "ID-" + user.ID);
client.SendGcmNativeNotificationAsync(gcmMessage, "ID-" + user.ID);
}
问:是什么原因造成发送到大集团的通知不被该组中始终发送到所有设备,发送到个人用户在使用其独特的标签工作正常?