【发布时间】:2014-03-06 18:46:07
【问题描述】:
我的问题很简单,使用推送通知开发聊天应用程序是个好主意吗?因此,推送通知不可靠,并且无法保证它们会到达与否。如果不可靠,应该使用哪种技术进行实时聊天应用程序?
【问题讨论】:
标签: ios push-notification chat
我的问题很简单,使用推送通知开发聊天应用程序是个好主意吗?因此,推送通知不可靠,并且无法保证它们会到达与否。如果不可靠,应该使用哪种技术进行实时聊天应用程序?
【问题讨论】:
标签: ios push-notification chat
使用 iOS 推送通知建立聊天绝对是可能的。 @Aaron 点很有趣,但在我看来没有意义,原因如下:
- 如果您的应用发送太多推送通知(如果您将其用作“聊天”的方式,则会发送),没有人会使用您的应用,因为这会很烦人。
这里唯一的情况是应用程序没有运行,即使这样,如果连续太多,苹果只会发送最后一个通知。当应用程序处于任何其他状态时(background、foreground active & inactive、suspended),可以在推送通知中使用content-available : 1 静默处理通知。如果这让您担心,只需使用徽章通知而不是警报通知即可。
- 用户还可以为您的应用禁用推送通知,这样您就不能依赖它作为唯一的通信方式。
这是错误的,这不会阻止将通知发送到手机,它们只是没有显示给用户。见here。因此,即使用户禁用了推送通知,您也可以处理静默通知。这只是一个设置,设备仍然会有一个设备令牌,并且后端仍然可以发送推送通知。
确实,某些远程通知可能无法传递,并且使用它们的内容不是一个好主意。但这不是一个大问题..
最好将您的通知用作refresh me I got a new message 类型的通知。收到新通知后,向服务器询问此聊天中的新消息,然后更新表格。我们已经在我们的一个项目中实现了这一点,并且对迄今为止的结果非常满意。有人说Premature Optimization is the root of all evil,在这种情况下,您可能会花费大量时间使用套接字,但您可以通过推送通知立即启动并运行。稍后再优化。
效果很好:
{
"aps" : {
"content-available" : 1,
"alert" : "This is my new notification",
}
"conversationId": 23,
"senderId":44
}
【讨论】:
没有。这不是一个好主意,至少有两个原因:
您需要某种具有客户端/渠道关系的轮询系统。有很多服务器系统可以为您做到这一点。 WebSync 是其中之一:
【讨论】:
如果您的应用需要在用户收到新消息时从后台唤醒,而不是聊天本身,那么推送通知会很棒。
可以使用多种技术,我认为最简单的一种是使用套接字(我认为这很简单,因为网上有大量关于该主题的教程)
长话短说,推送通知将是聊天应用程序的一个很好的补充,但只是作为一个附加功能(确实是一个非常好的附加功能,它们并不是那么不可靠,如果推送到达,例如让应用程序为收到的每个推送重新发送某种代码,如果在给定时间内没有收到任何代码,则重新发送推送)。
请注意,您需要一个服务器来进行推送,因此如果您的聊天应用程序成功,可能会花费您一些钱...
【讨论】: