在Snapchat,Line,Kik,Groupme等应用中,用户可以通过联系人列表向多人发送消息。
我正在构建一个具有类似功能的消息传递应用程序,最初只是添加服务器并让服务器存储设备令牌并从服务器发送通知。 (顺便说一下,我使用Urban Airship发送推送通知。)所以我想象的方式是这样的:
然后我意识到这也可以在客户端完成,也就是说,如果可以在他们的应用程序上存储用户联系人的设备令牌。所以这就是它的工作原理:
我是推送通知的新手,所以甚至不知道在客户端存储设备令牌是否安全/可行,但我觉得它在服务器负载(我的服务器)方面会更有效率因为所有推送通知请求都是从客户端发送的。关于最佳做法是什么的任何建议?谢谢
答案 0 :(得分:1)
实际上这听起来像个坏主意。 1.当用户加入网络时,您需要将令牌发布给与其连接的所有用户。 如果你拥有大量新用户,那就不那么聪明了。 2.一个简单的嗅探器(网络嗅探器\ openSSH嗅探器)可以检测用户令牌。 安全方面,这不是一个好主意。 3.此外,它正在使用户的设备过载。 经验法则,所有开销都应由服务器处理。 考虑一下:
简而言之, 使用第一种方法,第二种方法非常不推荐..
祝你好运: - )答案 1 :(得分:1)
如果您使用Apple推送通知服务,您一定要将通知从服务器发送到设备,而不是直接从设备A发送到设备B.除了其他答案中提到的原因,还有问题保持与APNS服务器的连接。
如果每个设备都可以直接向APNS发送消息,则每个设备都必须维护自己与APNS服务器的TLS连接。由于设备经常与互联网连接和断开连接,因此该连接会经常关闭并重新打开。乘以安装应用程序的设备数量,您将拥有大量与APNS短暂连接的连接。这可能会使您的证书被撤销。
在多个通知中保持与APN的连接;不要反复打开和关闭连接。 APN将快速连接和断开视为拒绝服务攻击。您应该保持连接处于打开状态,除非您知道它将在一段时间内处于空闲状态 - 例如,如果您每天只向用户发送一次通知,则可以每天使用新连接。
(Source)