AWS SNS 推送通知请求返回“DeviceTokenNotForTopic”

Posted

技术标签:

【中文标题】AWS SNS 推送通知请求返回“DeviceTokenNotForTopic”【英文标题】:AWS SNS push notification request returns "DeviceTokenNotForTopic" 【发布时间】:2019-10-26 19:08:44 【问题描述】:

ios 应用程序请求 Token 并将其发送到 python API。我将它作为设备令牌添加到 AWS API 并订阅主题。

然后尝试发送推送通知,我收到“DeviceTokenNotForTopic”这样的错误:


    "notification": 
        "messageMD5Sum": "71f457fe91ebc62efdce2acc25406ec8",
        "messageId": "6124ef9c-860d-561a-94fa-b98e2392fd2a",
        "topicArn": "arn:aws:sns:us-west-2:XXXXXXXXXXXX:all",
        "timestamp": "2019-10-05 14:06:23.427"
    ,
    "delivery": 
        "deliveryId": "................",
        "destination": "...............",
        "providerResponse": "\"reason\":\"DeviceTokenNotForTopic\"",
        "dwellTimeMs": 145,
        "attempts": 1,
        "token": "............",
        "statusCode": 400
    ,
    "status": "FAILURE"

【问题讨论】:

【参考方案1】:

错误“DeviceTokenNotForTopic”通常是从APNS(Apple Push Notification Service)端返回给SNS。

如果我们查看APNS 文档,您会发现此错误主要发生在“设备令牌与指定主题不匹配”,其中“主题”指的是捆绑包应用程序的 ID。这意味着:

a)。没有为该特定捆绑包 ID 生成令牌。

b)。当用于向 APNS 进行身份验证的证书中的捆绑 ID 与设备令牌的注册应用程序不匹配时,SNS 上的端点将被禁用,因为 SNS 本质上是在说 “除非您更改设备令牌,否则我们将无法到达这个端点”

如果其他人遇到此问题,请考虑以下提示:

    如果您有多个 iOS 应用程序,我建议确保将令牌注册到正确的平台应用程序,并确认该证书是该应用程序环境的正确证书。

    如果 iOS 应用程序最近从沙盒转移到生产,证书也需要更改,反之亦然。

希望这会有所帮助。

【讨论】:

以上是关于AWS SNS 推送通知请求返回“DeviceTokenNotForTopic”的主要内容,如果未能解决你的问题,请参考以下文章

AWS SNS 移动推送通知

使用 Node JS 的 AWS SNS 推送通知

使用 Laravel 的 AWS SNS 推送通知

javascript aws sns推送通知

AWS - SNS 端点为 iOS 自行禁用 - Apple 设备(推送通知失败)

AWS SNS 推送通知说明