sns 推送通知发布到单个设备

Posted

技术标签:

【中文标题】sns 推送通知发布到单个设备【英文标题】:sns push notification publish to a single device 【发布时间】:2017-05-05 09:54:37 【问题描述】:

这是我在 SNS 官方网站上找到的用于发布到主题的代码

String msg = "My text published to SNS topic with email endpoint";
PublishRequest publishRequest = new PublishRequest(topicArn, msg);
PublishResult publishResult = snsClient.publish(publishRequest);
System.out.println("MessageId - " + publishResult.getMessageId());

我正在使用 sns 为 android 开发一个聊天应用程序(它还会将通知推送到应用程序的现有 ios 对应项)

如果我想直接发布到单个设备,我可以给设备的“ApplicationEndPointArn”而不是 topicArn

【问题讨论】:

不建议从设备发布到设备,也不应该这样做。这会带来一些风险,并且客户可能会向其他人的设备发送通知。 @RohanDubal 那么你对聊天应用有什么建议?? 如果您想编写一个聊天应用程序,您可以使用自己的后端并开发自己的协议或基于现有协议(如 XMPP)开发一些东西。您可以使用 SNS 从后端向设备发送离线通知。 【参考方案1】:

SNS 旨在将通知服务与应用层分离。

我们可以创建一个主题并将移动端点添加为订阅者。

当消息发布到主题时,所有订阅者都会收到通知。

除此之外,如果您真的需要单端点消息传递,您可以尝试,

PublishRequest publishRequest = new PublishRequest();
publishRequest.setTargetArn(endpointArn);
publishRequest.setMessage("SOME MESSAGE");
snsClient.publish(publishRequest)

endpointArn 是设备端点。

但请确保在设备在 SNS 中注册时保留此设备端点,并使用返回的相同 EndpointArn 进行进一步通信。

【讨论】:

以上是关于sns 推送通知发布到单个设备的主要内容,如果未能解决你的问题,请参考以下文章

推送通知的 Amazon SNS android 设备令牌限制

使用 Amazon SNS 时无法接收到 iOS 设备的推送通知

设置 AWS SNS 以向 iOS 设备发送推送通知

将推送通知迁移到 FCM 或 Amazon SNS?

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

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