PushSharp发送一些通知,但不是全部

时间:2013-06-05 12:03:24

标签: apple-push-notifications pushsharp

我正在使用PushSharp库发送Apple推送通知。出于某种原因,这些设备只能获得我推送的一些通知。例如,如果我将5个通知推送到一个设备,它可能只收到3.我使用以下代码:

while(true)
{
    //... build models...

    PushBroker push = new PushBroker();
    push.OnNotificationFailed += OnNotificationFailed;
    push.OnDeviceSubscriptionExpired += OnDeviceSubscriptionExpired;
    push.OnChannelException += OnChannelException;
    push.OnServiceException += OnServiceException;
    push.OnChannelDestroyed += OnChannelDestroyed;
    push.OnDeviceSubscriptionChanged += OnDeviceSubscriptionChanged;
    push.OnNotificationRequeue += OnNotificationRequeue;
    push.OnNotificationSent += OnNotificationSent;
    push.RegisterAppleService(new ApplePushChannelSettings(true, appleCert, "Password"));

    // Send a notification to each registered device.
    foreach (var model in models)
    {
         _pushBroker.QueueNotification(new AppleNotification()
              .ForDeviceToken(model.DeviceToken)
              .WithAlert(model.alert)
              .WithBadge(models.Count())
              .WithCustomItem("id", model.Id)
              );
     }

     _pushBroker.StopAllServices();

     // Sleep for 15 minutes
     Thread.Sleep(15 * 60000);
}

我有点困在这个问题上 - 有没有人对可能导致这种情况的想法有任何想法?

编辑1:

我注意到我不小心包含了某些设备的开发ID。我原以为这本来没问题,因为我原以为Apple会拒绝那些通知请求。从请求中删除这些ID似乎使它稍微更稳定。我将继续监控这个问题,但是向APN发送一个设备ID错误的请求会阻止我的连接发送我排队的未来通知,这似乎很奇怪......

编辑2:

首先,我发现在我打电话注册苹果服务之前我的通知应该已经连线(我的上述代码已被修改以反映正确的方法)。此外,我发现APN旨在在第一个失败时停止发送通知。我相信PushSharp会尝试重新发送尚未发送的项目,但我需要做一些进一步的测试来验证这是否有效。目前,似乎向生产服务器发送开发设备ID将导致在使用相同的PushBroker连接后发送的所有通知失败。

0 个答案:

没有答案