gpt4 book ai didi

apple-push-notifications - 当一个 PushSharp 消息失败时,它们都失败了

转载 作者:行者123 更新时间:2023-12-04 08:44:25 25 4
gpt4 key购买 nike

我正在使用 Push Sharp库将推送通知发送到 Apple APN 服务器。该代码效果很好,我可以发送 1000 条通知。

问题是,如果我尝试使用无效的设备 token 发送通知,我会收到来自推送锐利框架的失败消息 pushsharp.apple.notificationfailureexception并且在该点之后排队的每条消息都不会发送。基本上,如果单个通知失败,PushSharp 会清除其队列。

例如,如果我排队 4 个通知 (1,2,3,4) 并且通知 2 具有无效的设备 token ,则通知 1 将被发送,2 将失败,并且 3 和 4 不会被发送(并且没有事件被触发通知这个的)。

我知道将不会发送带有无效设备 token 的通知,但将其他 N 个排队的通知放在地板上是 Not Acceptable 。

是否有任何解决方法?

这是我的代码:

_appleSettings = new ApplePushChannelSettings(!NOTIFICATION_SERVICE_USE_DEVELOPMENT,
NOTIFICATION_SERVICE_USE_DEVELOPMENT
? SSL_CERTIFICATE_NAME_DEV : SSL_CERTIFICATE_NAME_PROD,
SSL_CERTIFICATE_PASSWORD);

_appleSettings.ConnectionTimeout = NOTIFICATION_SERVICE_CONNECTION_TIMEOUT;
_appleSettings.FeedbackIntervalMinutes = 0; /*WE WILL HANDLE THE FEEDBACK EXTERNALLY*/
_appleSettings.MaxConnectionAttempts = NOTIFICATION_SERVICE_RETRY_ATTEMPS;

_serviceSettings = new PushServiceSettings();
_serviceSettings.MaxAutoScaleChannels = NOTIFICATION_SERVICE_NUM_CONNECTIONS;

_pushBroker = new PushBroker();
_pushBroker.OnChannelCreated += _pushBroker_OnChannelCreated;
_pushBroker.OnChannelDestroyed += _pushBroker_OnChannelDestroyed;
_pushBroker.OnChannelException += _pushBroker_OnChannelException;
_pushBroker.OnDeviceSubscriptionChanged += _pushBroker_OnDeviceSubscriptionChanged;
_pushBroker.OnDeviceSubscriptionExpired += _pushBroker_OnDeviceSubscriptionExpired;
_pushBroker.OnNotificationFailed += _pushBroker_OnNotificationFailed;
_pushBroker.OnNotificationRequeue += _pushBroker_OnNotificationRequeue;
_pushBroker.OnNotificationSent += _pushBroker_OnNotificationSent;
_pushBroker.OnServiceException += _pushBroker_OnServiceException;


//now add those settings to the push broker
_pushBroker.RegisterAppleService(_appleSettings, _serviceSettings);


notification = new AppleNotification(notificationMessage.DeviceExtContext);
notification.Payload.Alert.Body = notificationMessage.Message;
notification.Payload.Sound = NOTIFICATION_SOUND;
// notification.Payload.Badge = 1;
notification.Tag = notificationMessage;

//attempt to queue the notification
_pushBroker.QueueNotification(notification);

最佳答案

好的。 this answerthis answer似乎有帮助。

像您一样,我在测试中发现,当我有一个无效的设备 token 时,我会收到一个 OnNotificationFailed 事件,并且每个后续通知也会失败。

简短的故事是,Apple 似乎默默地断开了无效设备 token 上的连接,然后接下来的一切都失败了(同样的错误)。

一切都没有丢失。在 OnNotificationFailed 的事件处理程序中,您可以检查传入的通知内容以查看哪些失败了。

下一个合乎逻辑的步骤是单独遍历它们,重新发送相同的通知。然后从 future 的通知中剔除第二次失败的无效通知和/或标记成功的通知。

关于apple-push-notifications - 当一个 PushSharp 消息失败时,它们都失败了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com