服务器推送通知实现

组,

我打算实现我自己的服务器推送通知服务器到Android / IOS应用程序。 所以我的应用程序服务器(可以通过NodeJ实现)将联系该通知服务器将消息推送到设备。 所以我通过互联网冲浪,发现了现有的解决scheme。

Google云消息

苹果推送通知服务

Firefox操作系统推送通知

微软推送通知服务

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

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

轮询

长期投票

stream

服务器发送的事件

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

XMPP

Q2)

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

苹果推送通知服务

Firefox操作系统推送通知

Q3)

在Firefox操作系统推送通知; 他们已经通知他们避免保持活力以节省电池寿命。 我的问题是没有保持活着如何确定连接是否还活着?

Q4)

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

Solutions Collecting From Web of "服务器推送通知实现"

互联网上有好的文章,你可以通过你会得到答案。 不过,我试图回答你的问题:答案大多是真正的Android和谷歌服务器。

Ans1)他们的听众必须在代码中使用他们的库类。 你不必担心推动。 您必须将消息发送到服务器服务器将消息推送到设备。 他们使用OAuth。 关于协议,有两种使用CCS和XMPP的方法。 CCS只是使用XMPP作为authentication的传输层,因此您可以使用大多数XMPP库来pipe理连接。 要发送通知给设备,您可以在Android应用程序中编写代码以发送以及您的服务器代码。 消息发送只能由您的代码完成。 在GCM情况下,Google服务器会保留其余的部分。 您可以在此链接查看详细信息

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

另外,为了安全问题

谷歌云消息安全 https://groups.google.com/forum/#!topic/android-gcm/M-EevBitbhQ

答2)是的,如果你的应用程序没有运行,那么设备vcan也会收到通知,因为你必须为广播监听器编写代码。 在后台,它将监听服务器,每当有消息包在那里,它将收到通知消息。 Android有服务,你不需要打扰它。 你只需要使用这些资源,使你的工作更容易,让他们写,如果你的应用程序没有运行,然后它也收到通知库类。 很显然,会有一些听众让应用程序接收。在此链接中检查“接收消息”部分

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

Ans 3) – Firefox OS推送通知是为一件事而devise的 – 唤醒应用程序。 他们不处理数据。 检查这个链接

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

希望这有助于你的问题。

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

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

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