Push notification 如何处理SNS中的禁用端点

Push notification 如何处理SNS中的禁用端点,push-notification,amazon-sns,Push Notification,Amazon Sns,我使用AWS SNS通过订阅单个SNS主题下的所有设备向移动应用发送推送通知。然后,为了发送通知,我只发送到该主题。但是,如果某个端点由于任何原因无法接收消息,SNS会将该端点标记为禁用 如果SNS只标记一个永久的无效端点,这可能是好事,但事实并非如此。因为如果我重新启用它,那么在下一次推送通知发送之后,它可能不会再次返回到禁用状态,这意味着在下一次推送中它可以正确地接收消息 重新启用的过程非常痛苦,我必须安排一个批处理过程来循环每个SNS应用程序下的所有端点,并逐个重新启用每个设备端点。这需要

我使用AWS SNS通过订阅单个SNS主题下的所有设备向移动应用发送推送通知。然后,为了发送通知,我只发送到该主题。但是,如果某个端点由于任何原因无法接收消息,SNS会将该端点标记为禁用

如果SNS只标记一个永久的无效端点,这可能是好事,但事实并非如此。因为如果我重新启用它,那么在下一次推送通知发送之后,它可能不会再次返回到禁用状态,这意味着在下一次推送中它可以正确地接收消息

重新启用的过程非常痛苦,我必须安排一个批处理过程来循环每个SNS应用程序下的所有端点,并逐个重新启用每个设备端点。这需要几个小时,并随着设备数量的增加而增加

由于用户已经卸载了一个应用程序,所以我不必麻烦重新启用它,我如何知道哪个端点真的不再有效?
或者,有没有更好的方法来处理这个问题?

我认为解决这个问题的正确方法是首先阻止端点被禁用。该策略应确保SNS仅禁用永久无效的端点,如应用程序卸载案例,并避免/恢复其他案例

我与AWS支持部门联系过。我了解到一种情况,即设备的设备令牌可能会变得无效,在我的情况下,我有一个逻辑,即我正在重新启用设备的端点,但使用与以前相同的无效令牌。因此,端点将被启用,但一旦对其进行推送,SNS将再次将其标记为禁用,因为基础令牌无效。正确的做法是从设备端检查令牌是否已更改,以及何时再次通过令牌进行SNS注册

下面是此策略的伪代码:

///////////////////////
retrieve the latest token from the mobile OS
if (endpoint arn not stored)
 # first time registration
 call CreatePlatformEndpoint
 store returned endpoint arn
endif

call GetEndpointAttributes on the endpoint arn

if (getting attributes encountered NotFound exception)
 #endpoint was deleted
 call CreatePlatformEndpoint
 store returned endpoint arn
else
 if (token in endpoint does not match latest) or
  (GetEndpointAttributes shows endpoint as disabled)
  call SetEndpointAttributes to set the
                     latest token and enable the endpoint
 endif
endif
//////////////////////

嗨,你能找到解决这个问题的办法吗?我遇到了同样的问题,端点不断被禁用。@AshishGoel实际上没有。每次设备向某个api发送请求时,我都会将“Enabled”属性更新为true,而不是通过批处理过程来更新所有端点