我有一个相当简单的应用程序,通过Azure Notification Hubs向一些用户注册Android和iOS用户,其中包含两个标签,ID和他们的语言。但是,我注意到,当向大型组发送消息时,只有几个应该接收消息的iOS设备才能获得它。但是,如果我遍历所有帐户并使用其ID标记发送消息,则每个iOS设备都会收到该消息。
我知道iOS发送无法保证,但只有大约10台iOS设备,如果我使用ID标签,我就可以发送每个设备,但如果我使用语言标签或者没有无标签推送。
我在Basic层上有一个保留单位和九个最大单位。 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);
}
答案 0 :(得分:0)
遥测说什么?将多少个传出通知发送到apns? (您可以在监视器选项卡中获取细分,并使用“添加度量”按钮添加APNS指标)。 如果您看到正确的成功次数,请尝试为Apple通知设置到期值。
如果您没有解决问题,请发送电子邮件至mobileservice@microsoft.com。 谢谢,