通知中心 - 大型组的iOS交付不一致

时间:2014-03-05 02:37:47

标签: azure push-notification apple-push-notifications azureservicebus azure-notificationhub

我有一个相当简单的应用程序,通过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);
}



<小时/> 问:当使用其唯一标记发送给各个用户时,导致发送到大型群组的通知是否一致地发送到该群组中的所有设备的原因是什么?

1 个答案:

答案 0 :(得分:0)

遥测说什么?将多少个传出通知发送到apns? (您可以在监视器选项卡中获取细分,并使用“添加度量”按钮添加APNS指标)。 如果您看到正确的成功次数,请尝试为Apple通知设置到期值。

如果您没有解决问题,请发送电子邮件至mobileservice@microsoft.com。 谢谢,