【问题标题】:Server push notification implementation [closed]服务器推送通知实现[关闭]
【发布时间】:2014-05-05 06:59:02
【问题描述】:

组,

我计划为 Android/IOS 应用程序实现我自己的服务器推送通知服务器。所以我的应用程序服务器(可能通过 NodeJs 实现)将联系该通知服务器以将消息推送到设备。所以我通过互联网浏览并找到了以下现有解决方案。

谷歌云消息

苹果推送通知服务

Firefox 操作系统推送通知

微软推送通知服务


Q1)
在各自的网站上;他们只通知如何使用他们的通知服务器。但是,我需要有关他们如何实现服务器推送的信息。

请告诉我;他们是否遵循以下任何内容?

轮询

长轮询

流媒体

服务器发送事件

与客户端的 TLS、SSL 或 TCP 套接字连接

XMPP


Q2)

以下两种方法声称虽然我的应用程序没有运行;他们仍然可以向APP发送通知吗?这怎么可能?

苹果推送通知服务

Firefox 操作系统推送通知


Q3)

在 Firefox 操作系统中推送通知;他们已经告知他们正在避免保持活动状态以节省电池寿命。我的问题是没有 keep-alive 如何确定连接是否仍然存在?


Q4)

所有这些(GCM/APNS/FireFox OS)实现是否只是服务器端推送,不会接受来自客户端的请求。我对么?
所以除了推送消息之外,我的服务器仍然必须处理数百万个设备请求,对吧?
如果我在自己的通知服务器和客户端设备之间使用 websocket,我是否需要在我的应用服务器和客户端之间再维护一个 websocket 连接以接收来自设备的请求?

【问题讨论】:

  • Apple 推送通知由 iOS 而非您的应用程序控制。因此,即使应用程序未运行,这也是可用的。要发送通知,您打开到苹果服务器的 ssl 连接并发送推送通知有效负载。没有轮询或任何事情,因为 iOS 会处理所有事情。
  • @rckoenes 谢谢!!所以如果我想实现我自己的通知服务器;是否可以在 ios 上编写代码来打开与我的服务器的 SSL 连接?
  • 不,您的服务器应该与 Apple 推送通知服务器通信。如果您打算编写自己的服务器,则不能用户推送通知,并且会耗尽电池,因为您需要从自己的服务器中提取消息。 Apple APNS 由 iOS 控制,它会偶尔连接到 Apples 服务器并收集设备上所有应用的所有推送通知。
  • @rckoenes 你能把这个添加为答案吗?
  • 团队,所有这些问题都与决定选择服务器推送通知有关。我认为这是寻找服务器推送技术的人的一站式问题。请我不想从这里创建四个不同的问题。

标签: android ios push-notification apple-push-notifications


【解决方案1】:

网上有很多很好的文章,你可以去看看你会得到答案。但是我试图回答你的问题: 答案大多适用于 android 和 google 服务器。

答案1) 他们有他们的监听器,你必须通过在你的代码中使用他们的库类来使用它们。你不必为推动而烦恼。您必须将消息发送到服务器服务器会将消息推送到设备。他们使用 OAuth。 关于协议,有两种使用 CCS 和 XMPP 的方法。 CCS 只是将 XMPP 用作经过身份验证的传输层,因此您可以使用大多数 XMPP 库来管理连接。要将通知发送到设备,您可以在 android 应用程序中编写代码以发送以及您的服务器代码。消息发送将仅由您的代码完成。在 GCM 情况下,Google Server 将负责休息。 您可以在此链接查看详细信息

http://developer.android.com/google/gcm/server.html

另外,为了安全问题

google cloud messaging security https://groups.google.com/forum/#!topic/android-gcm/M-EevBitbhQ

答案 2) 是的,如果您的应用程序没有运行,那么设备 vcan 也会收到通知,因为您必须为广播侦听器编写代码。在后台,它将监听服务器,并且每当有任何消息包出现时,它都会收到消息作为通知。 Android 有服务,您不必为此烦恼。您只需使用使您的工作更轻松的库类来使用这些资源,并在您的应用程序未运行时让它们编写,然后它也会收到通知。显然,会有一些听众让应用程序接收。检查此链接中的“接收消息”部分

http://developer.android.com/google/gcm/client.html

答案 3)- Firefox OS 推送通知是为一件事而设计的——唤醒应用程序。他们不处理数据。检查此链接

https://hacks.mozilla.org/2013/07/dont-miss-out-on-the-real-time-fun-use-firefox-os-push-notifications/

答案 4)- 不,它也会接受用户的请求。 我不确定其他人,但对于 GCM 它会做。 请勾选“发送消息”

http://developer.android.com/google/gcm/client.html

希望这对您的问题有所帮助。

【讨论】:

  • 我想实现自己的 PUSH 通知服务器,我不想使用像 GCM 这样的第三方服务器...我可以在通知服务器上使用 websocket 吗?
【解决方案2】:

Apple 推送通知由 iOS 而非您的应用控制。因此,即使应用程序没有运行,这也是可用的。要发送通知,您打开到苹果服务器的 ssl 连接并发送推送通知有效负载。没有轮询或任何事情,因为 iOS 将处理所有事情。

如果您打算编写自己的服务器,则不能用户推送通知,并且会耗尽电池,因为您需要从自己的服务器中提取消息。 Apple APNS 由 iOS 控制,它会偶尔连接到 Apples 服务器并收集设备上所有应用程序的所有推送通知。

【讨论】:

  • 你让它看起来像 Apple 推送通知有魔力,但它没有。您可以使用空闲的单向持久连接复制相同的内容到您自己的服务器,当服务器想要唤醒时,该连接会被唤醒。 Apple Push Notification 的唯一优势是您拥有所有应用程序/游戏的共享空闲连接。我不能代表 Apple 推送通知,但根据我在其他移动操作系统上推送服务的经验,它们几乎都是可靠的。还有很多帖子记录了这些问题。
  • 根据经验,如果我必须构建一个可靠且可能安全的应用程序,我会选择推出自己的推送系统。如果您构建了多个应用程序,您可以在它们之间共享您自己的空闲连接。
  • “没有轮询” - 似乎是错误的。您的意思是应用程序不需要轮询。在每台设备上运行的 iOS 必须定期轮询某些服务器才能正确接收通知?还能如何实现?
【解决方案3】:

除了技术细节之外,还有各种第三方解决方案,例如 Amazon SNS。每百万通知应约为 0.50 美元。与实现自己的服务器/服务(时间、成本、可靠性)相比,这微不足道的成本,我觉得你应该把时间花在项目的其他方面。

【讨论】:

  • 请长远考虑;并且必须发送数十亿条通知。现在它们的成本为 0.50;不知道未来的 rit ..?我也必须按照第三方系统理解/编码。
  • 你会得到很好的入门教程。当您发送了 10 亿美元时,与您部署自己的服务器集群、维护、错误修复等相比,成本是无形的。随着您在启动时的增长和更快的启动时间而支付可能更明智。当然,除非您有现有的设置可供使用,包括复制、故障转移、排队、负载平衡等。它作为各种流行语言的库提供。
  • 好的,谢谢!!让我考虑一下。
  • 0.50 美元/百万。希望如果您的应用大到足以生成 10 亿条通知,那么您获得的收入足以支付 500 美元的费用。
  • 这是由 AWS 而不是谷歌。在我看来,即使它已达到 5 亿美元/百万美元,与设置和维护自己的通知服务器集群以可靠地交付相比,它仍然可能非常划算。
猜你喜欢
  • 2011-07-14
  • 2013-03-01
  • 1970-01-01
  • 2015-10-16
  • 1970-01-01
  • 2011-11-10
  • 1970-01-01
  • 2016-01-10
相关资源
最近更新 更多