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

Cordova 如何使用rails&;发送服务器端通知;aws到phonegap设备,cordova,ruby-on-rails-4,amazon-web-services,amazon-sqs,amazon-sns,Cordova,Ruby On Rails 4,Amazon Web Services,Amazon Sqs,Amazon Sns,我正在寻找一种解决方案,用于在特定时间点将特定设备集的服务器端通知从rails发送到cordova应用程序 假设用户对某个项目出价。每次对该项目进行投标时,都需要通知发布投标的每个用户。通知需要采用JS回调的形式 现在我正在挖掘AWS SNS的例子,但我担心它不符合我的目的。AWS SNS上的流量大致如下 Platform_applicaton --> Platform_endpoint --> subscription for a topic require 'rubygem

我正在寻找一种解决方案,用于在特定时间点将特定设备集的服务器端通知从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的真正用途是“应用程序”协议,它使用供应商API密钥(GCM、APNS、ADM等)向特定平台发送通知或从特定平台发送通知,但这对我使用cordova没有多大帮助。我必须安装一个自定义插件来拦截这些通知。不错,但我想有一个更干净的解决方案

考虑到我的发现,似乎是这样

  • AWS SQS能否将消息传递给多个收件人(类似主题)
  • 当客户端重新联机时,消息是否会持续并传递
  • 是否可以为每个项目创建一个队列,并在每次出价时发布消息?这将导致创建大量队列
    回答你的问题:

  • 不,这不是您使用SQS的方式。当然,可能会有很多客户机轮询队列以查找消息,但这就是SQS的设计用途。SQS不传递消息,客户端轮询消息
  • SQS消息将一直持续到过期(我认为最长为14天)。SNS具有可配置的重试策略,但最大生存时间为60分钟
  • 是的,这是可能的,但不,你可能不想这样做
  • 不是100%确定,但在你提到的技术中,我猜SNS移动推送可能最接近你需要的

    编辑:我没有使用Cordova,但本文也可能有帮助:

    那么你的问题是什么?SNS或SQS。问题是上面的1,2,3。如果SQS不是解决方案,我如何使用SNS来满足客户端通知要求JS客户端订阅SNS主题并在消息发布到该主题时接收通知(通过客户端的JS回调)难道没有一个简单的方法吗?好的,SNS mobile push似乎是一个方向。我很惊讶,虽然没有任何简单的方法可以获得客户端JS通知。是的,有特定于平台的通知(如您提到的ADM),但我想避免使用它们。它们需要安装插件,并且在未部署到实际应用程序之前无法进行测试device@victor我正在处理你面临的同一个问题。我想知道您是如何实现事件的客户端通知的?我认为最好的方法是使用ios/android默认公开的传统通知。如果用户未使用该应用程序,则会在其屏幕上收到s通知;如果用户已打开slyke应用程序,则系统将呼叫您这边的侦听器。