【问题标题】:How does AWS SNS send Application notifications?AWS SNS 如何发送应用程序通知?
【发布时间】:2018-01-25 13:43:27
【问题描述】:

我有一个可在 iOS 和 Android 上运行的 React Native 应用程序,我希望集成 AWS SNS。我有一些问题希望有 SNS 经验的人能回答。

  1. 据我了解,AWS SNS 只是一个使用 GCM (Android) 和 APNS (iOS) 的网关
    • 这是正确的吗?
  2. 如果以上是正确的,假设我有一个仅限 Android 的应用程序,当我可以直接使用 GCM/Firebase 时,使用 AWS SNS 有什么意义?我什至可以在 iOS 上使用 Firebase。
  3. 我的应用程序需要允许单个用户向一个或多个用户发送通知。
    • 是否有我可以使用的 RESTful API 来实现这一点?
    • 或者我需要设置 API Gateway 并使用 Lambda 函数吗?
  4. 如何在 SNS 上自动存储令牌?
    • 我了解到我必须为此集成 AWS Cognito,或者使用代理服务器。

编辑: 我已经设法编写了一个使用 aws-sdk 与 SNS 通信的 Node.js 服务器。

与上述问题编号对应的问题

  1. 仍在寻找答案
  2. 仍在寻找答案
  3. 我已经编写了一个 Node 服务器,我想我可以将 aws-sdk 代码嵌入到我的 React Native 应用程序中,因为它可以使用 Node APIs
  4. 对于问题 #4 - 我使用了createPlatformEndpoint

【问题讨论】:

    标签: amazon-web-services amazon-sns


    【解决方案1】:

    我不是专家,但鉴于您尚未收到答复,我想我会尽力提供帮助

    1. 您可以使用 AWS SNS 到 send messages via GCM,但它可以做更多的事情,因为它是一个 pub-sub 服务:例如,如果可以配置为接收来自 AWS SES 发送的邮件的电子邮件投诉,然后您会得到一个 lambda 函数或一个队列 (SQS) 来接收 SNS 发出的这些操作,让您可以对它们采取行动
    2. 仅对于 Android 应用程序,我认为没有充分的理由打扰,即使它也在 iOS 上,您也可以在代码中使用 if/else 配置自己发送推送通知。我可以说这是个人品味的问题,无论您是想要在代码中还是在基础结构中进行更多配置(我知道限制可能会变得模糊),但是将其保留在代码中似乎要容易得多,我不会我说的一个字都不信

    我的应用需要允许单个用户向一个或 更多用户。

    如果是一个用户给几个用户写 1,比如在消息应用程序中,我会说在应用程序中定义(和维护)逻辑并遍历收件人组以发送推送通知会更容易。

    如果您有几个人会被数千人关注并需要给他们写信,那么您可能需要使用 SNS 主题(每个“流行用户”都可以写 - 也许通过您自己的 api - 到“追随者”订阅的 SNS 主题;请记住您可以创建的 max number of topics),因为 SNS 将处理任何扩展问题(发送推送通知可能需要时间和资源你的 100 万粉丝)

    1. 如果您要访问用户 SNS,您所说的内容,否则通过 GCM/FCM 发送推送通知就像 POST request 一样简单。

    【讨论】:

    • 感谢您的回答。我想后续会是,我是否只将 GCM 用于 Android 应用程序?和苹果的 APNS?
    • 错过了,从那时起您可能已经有了答案,但基本上是的。如果您想要的不仅仅是“基本上”,我会补充:1/您可能会发现服务/SDK 提供了对 gcm/apns 的抽象 2/您可能会创建并维护自己的从应用程序到服务器的连接(除非您有非常最好的理由,不要 - 电池问题 + 你失去了原生推送通知的好处)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 2019-08-29
    相关资源
    最近更新 更多