组,
我计划将我自己的服务器推送通知服务器实现到Android / IOS应用程序。因此,我的应用程序服务器(可以通过NodeJ实现)将联系该Notification Server以将消息推送到设备。所以我通过互联网浏览并找到了以下现有的解决方案。
Google云消息传递
Apple推送通知服务
Firefox os推送通知
Microsoft推送通知服务
Q1)
在各自的网站上;他们只是告知如何使用他们的通知服务器。但是我需要有关他们如何实现服务器推送的信息。
请告诉我;他们是否遵循以下任何一项?
轮询
长轮询
流
服务器已发送事件
与客户端的TLS,SSL或TCP套接字连接
XMPP
Q2)
以下两种方法声称虽然我的应用没有运行;他们仍然可以向APP发送通知吗?怎么可能?
Apple推送通知服务
Firefox os推送通知
Q3)
在Firefox os推送通知中;他们已经告知他们正在避免保持活力以节省电池寿命。我的问题是如何确定连接是否仍然存在?
Q4)
所有这些(GCM / APNS / FireFox OS)实施仅是服务器端推送,并且不会接受来自客户端的请求。我对么?
所以我的服务器仍然需要处理推送消息以外的数百万设备请求,对吗?
如果我在自己的通知服务器和客户端设备之间使用websocket,我是否需要在应用服务器和客户端之间再保持一个websocket连接以接收来自设备的请求?
答案 0 :(得分:9)
互联网上有很多好文章,你可以通过你获得答案。但是我想回答你的问题: 答案主要适用于Android和谷歌服务器。
ANS1) 他们的听众必须通过在代码中使用他们的库类来使用。你不必费心去推。您必须将消息发送到服务器服务器才会将消息推送到设备。他们使用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
Ans 2) 是的,以防您的应用程序未运行,然后设备vcan接收通知,因为您必须为广播侦听器编写代码。在后台,它将监听服务器,每当有任何消息包存在时,它将收到消息作为通知。 Android有你需要的服务,不要打扰它。您只需使用库类使用这些资源,这样可以使您的工作更轻松,如果您的应用程序未运行,则让它们写入,然后它也会收到通知。显然,会有一些听众试图收到应用程序。检查此链接中的“接收消息”部分
http://developer.android.com/google/gcm/client.html
Ans 3) - Firefox OS推送通知专为一件事 - 唤醒应用程序。他们不处理数据。检查此链接
答案4) - 不,它也会接受用户的请求。 我不确定其他人,但对于GCM,它会这样做。 请选中“发送消息”
http://developer.android.com/google/gcm/client.html
希望这可以帮助您解决问题。
答案 1 :(得分:8)
Apple推送通知由iOS控制,而非您的应用。因此,即使应用程序未运行,也可以使用此功能。要发送通知,请打开与Apple服务器的ssl连接并发送推送通知有效负载。没有民意调查,因为iOS会处理所有事情。
如果您打算编写自己的服务器,则无法使用推送通知,因为您需要从自己的服务器提取消息,因此会耗尽电池电量。 Apple APNS由iOS控制,它会在一段时间内连接到Apples服务器并收集设备上所有应用的所有推送通知。
答案 2 :(得分:1)
除了技术细节之外,还有各种第三方解决方案,例如Amazon SNS。每百万通知应约为0.50美元。比较实现您自己的服务器/服务(时间,成本,可靠性)这个微小的成本,我觉得您应该花时间在项目的其他方面。