如何使用 rails & aws 将服务器端通知发送到 phonegap 设备

How to send server side notifications using rails & aws to phonegap device

我正在寻找一种解决方案,用于在特定时间点将服务器端通知从 rails 发送到特定设备集的 cordova 应用程序。

假设用户为某个项目出价。每次对该项目进行出价时,都需要通知发布出价的每个用户。通知需要采用JS回调的形式。

现在我正在研究 AWS SNS 的示例,但我担心它不符合我的目的。 AWS SNS上的流量大致是这样

Platform_applicaton --> Platform_endpoint --> subscription for a topic



require 'rubygems'
require 'aws-sdk'


sns = Aws::SNS::Client.new(
  access_key_id: 'X',
  secret_access_key: 'X',
  region: 'X',
  ssl_ca_bundle: 'c:\tmp\ca-bundle.crt'
)

# create platform application
platform_app = sns.create_platform_application(
  # required
  name: "parking-space-web",
  # required
  platform: "GCM",
  # required
  attributes:
    { :PlatformCredential => "google_api_key" ,
      :PlatformPrincipal => "" }
)

puts platform_app['platform_application_arn']

#create endpoint
endpoint = sns.create_platform_endpoint(
  # required
  platform_application_arn: platform_app['platform_application_arn'],
  # required
  token: "app1"
)

# subscribe to topic
subscription = sns.subscribe(
  # required
  topic_arn: "arn:aws:topic:arn",
  # required
  #I can choose whatever protocol I want but the physical notification will    just be a call made via that specific protocol ( http/email ).
  protocol: "application", 
  endpoint: endpoint['endpoint_arn'],
)

这对我有什么用?我正在通过 http/email 发布一条消息,该消息显然会发送给多个 http/email 订阅者。如果我需要,我会自己提出 http/email 请求。 SNS的优势是什么?

我认为真正处理 SNS 的是 'application' 协议,它使用供应商 API 密钥(GCM、APNS、ADM 等)发送通知 to/from特定平台,但在使用 cordova 时这对我帮助不大。我必须安装一个自定义插件来拦截这些通知。不错,但我认为有更清洁的解决方案。

根据我的发现,似乎 AWS SQS is the best solution

  1. AWS SQS 能否将消息传送给多个收件人(类似主题)?
  2. 当客户端重新联机时,消息是否会保留并传送?
  3. 是否可以为每个项目创建一个队列,并在每次出价时发布一条消息?这将导致创建大量队列。

您问题的答案:

  1. 不,这不是您使用 SQS 的方式。当然,可能会有很多很多客户端轮询队列以查找消息,但现在 SQS 就是这样设计的。 SQS 不传递消息,客户端轮询消息。
  2. SQS 消息会一直保留到它们过期(我认为最长为 14 天)。 SNS 具有可配置的重试策略,但最大生命周期为 60 分钟。
  3. 是的,这是可能的,但不,你可能不想那样做。

不是 100% 确定您的限制,但在您提到的技术中,我的猜测是 SNS 移动推送 http://docs.aws.amazon.com/sns/latest/dg/SNSMobilePush.html 可能最接近您的需要。

编辑:我没有使用过 Cordova,但这篇文章也可能有所帮助: https://developer.amazon.com/appsandservices/community/post/Tx17CAREHZUWLH9/Getting-started-with-the-Cordova-Push-Notifications-Plugin-for-Amazon-Fire-OS