iOS – 推送通知的聊天应用程序

我的问题很简单,使用推送通知开发聊天应用程序是一个好主意吗? 因此,推送通知是不可靠的,他们会得到或没有保证。 如果不可靠,哪种技术应该用于实时聊天应用程序?

为什么不?

使用iOS推送通知build立聊天是绝对有可能的。 @Aaron点是有趣的,但由于以下原因在我看来没有意义:

  1. 如果你的应用程序发送了太多的推送通知(如果你使用它作为“聊天”的手段),没有人会使用你的应用程序,因为它会很烦人。

这里唯一的情况是应用程序没有运行,即使这样,如果连续太多,苹果只会发送最后一个通知。 当应用程序处于任何其他状态( backgroundforeground active & inactivesuspended )时,可以在您的推送通知中使用content-available : 1以无提示方式处理通知。 如果这是您的担心,只需使用徽章通知,而不是警报通知。

  1. 用户也可以禁用您的应用程序的推送通知,所以你不能依靠它作为唯一的通信手段。

这是错误的,这不会阻止通知被发送到电话,他们只是没有被显示给用户。 看到这里 。 因此,即使用户已禁用推送通知,您也可以处理无提示通知。 这只是一个设置,设备仍然有一个设备令牌,后端仍然可以发送推送通知。

然而..

确实,一些远程通知可能无法传递,使用其内容不是一个好主意。 但这不是一个大问题..

最好是使用你的通知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 } 

不,这不是一个好主意,至less有两个原因:

  1. 如果你的应用程序发送了太多的推送通知(如果你使用它作为“聊天”的手段),没有人会使用你的应用程序,因为它会很烦人。
  2. 用户也可以禁用您的应用程序的推送通知,所以你不能依靠它作为唯一的通信手段。

你想要一个与客户/渠道关系的某种投票系统。 有很多的服务器系统可以为你做到这一点。 WebSync是一个:

http://www.frozenmountain.com/websync/

免责声明:最近需要开发一个聊天,并使用推送通知接收消息,它的工作完美无瑕。 套接字可能是一个好主意,但是如果没有为你完成,你将很难跨越NAT。 所以我不同意以前的这个。

如果您的应用程序需要在用户收到新消息时从后台唤醒,而不是聊天本身,则推送通知将非常有用。

有一系列可以使用的技术,最简单的,在我看来是使用套接字(我认为这很简单,因为在线主题的教程)

一个例子: http : //www.raywenderlich.com/3932/networking-tutorial-for-ios-how-to-create-a-socket-based-iphone-app-and-server

长话短说,推送通知对于聊天应用来说是一个很好的补充,但是就像一个额外的东西(确实是一个很好的额外的东西,它们并不那么不可靠,而且如果推送到达,你总是可以做一些逻辑来检测客户端,比如让应用程序为接收到的每个推送重新发送一些代码,并且如果在给定时间内没有收到代码,则重新发送推送)。

只是要知道,你将需要一个服务器来推动工作,所以如果你的聊天应用程序是成功的,这可能会花费你一些钱…