Firebase 云消息传递 (FCM) 端点管理 - Amazon Simple Notification Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Firebase 云消息传递 (FCM) 端点管理

管理和维护设备令牌

您可以按照以下步骤确保移动应用程序推送通知的可送达性:

  1. 将所有设备令牌、相应的 Amazon SNS 终端节点ARNs和时间戳存储在您的应用程序服务器上。

  2. 移除所有陈旧的令牌并删除相应的 Amazon SNS 终端节点ARNs。

应用程序首次启动后,您将收到该设备的设备令牌(也称为注册令牌)。此设备令牌由设备的操作系统铸造,并与您的FCM应用程序相关联。收到此设备令牌后,您可以将其注册SNS为平台终端节点。我们建议您将设备令牌、Amazon SNS 平台终端节点ARN和时间戳保存到您的应用程序服务器或其他永久存储中,从而存储它们。要将您的FCM应用设置为检索和存储设备令牌,请参阅 Google 的 Firebase 文档中的检索和存储注册令牌

维护 up-to-date 代币很重要。在以下情况下,用户的设备令牌可能会发生变化:

  1. 移动应用程序将在新设备上恢复。

  2. 用户卸载或更新应用程序。

  3. 用户清除应用程序数据。

当您的设备令牌发生变化时,我们建议您使用新令牌更新相应的 Amazon SNS 终端节点。这样SNS,Amazon 就可以继续与注册的设备进行通信。您可以通过在移动应用程序中实现以下伪代码来做到这一点。它描述了创建和维护已启用的平台端点的推荐做法。这种方法可以在每次移动应用程序启动时执行,也可以在后台作为计划任务执行。

伪代码

使用以下FCM伪代码管理和维护设备令牌。

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

要详细了解令牌更新要求,请参阅 Google 的 Firebase 文档中的定期更新令牌。

检测无效令牌

当向带有无效设备令牌的 FCM v1 终端节点发送消息时,Amazon SNS 将收到以下例外情况之一:

  • UNREGISTERED(HTTP404) — 当亚马逊SNS收到此异常时,您将收到一个传送失败事件InvalidPlatformToken,且与终端节点关联的 of Platform 令牌无效FailureType FailureMessage除此例外情况外,当交付失败时,Amazon SNS 将禁用您的平台终端节点。

  • INVALID_ARGUMENT(HTTP400) — 当 Amazon SNS 收到此异常时,表示设备令牌或消息负载无效。有关更多信息,请参阅ErrorCode谷歌的 Firebase 文档。

由于在这两种情况下INVALID_ARGUMENT都可以退货,因此 Amazon SNS 将返回 o FailureType fInvalidNotification,而 o FailureMessage f 通知正文无效。当您收到此错误时,请验证您的有效载荷是否正确。如果正确,请验证设备令牌是否正确 up-to-date。除此例外情况外,当交付失败时,Amazon SNS 不会禁用您的平台终端节点。

您会遇到InvalidPlatformToken传送失败事件的另一种情况是,注册的设备令牌不属于尝试发送该消息的应用程序。在这种情况下,谷歌将返回一个 SENDER_ID_ 错误MISMATCH。除此例外情况外,当交付失败时,Amazon SNS 将禁用您的平台终端节点。

当您为应用程序设置交付状态日志 CloudWatch时API,可以查看从 FCM v1 收到的所有观察到的错误代码。

要接收应用程序的交付事件,请参阅可用应用程序事件

移除陈旧的代币

一旦向端点设备传送消息开始失败,令牌就会被视为过时。Amazon SNS 将这些陈旧的令牌设置为您的平台应用程序的禁用终端节点。当您向已禁用的终端节点发布内容时,Amazon SNS 将返回一个带有 of Endpoin EventDeliveryFailure t 的事件EndpointDisabled,并且 a of FailureMessage E ndpoint 被禁用FailureType要接收应用程序的交付事件,请参阅可用应用程序事件

当您收到来自Amazon的此错误时SNS,您需要删除或更新平台应用程序中的陈旧令牌。