iOS - 具有推送通知的聊天应用程序

Adn*_*nan 13 chat push-notification ios

我的问题很简单,使用推送通知开发聊天应用程序是个好主意吗?因此,推送通知不可靠,并且无论是否到达都无法保证.如果不可靠,应该将哪种技术用于实时聊天应用?

Mic*_*ick 18

为什么不?

使用iOS推送通知构建聊天绝对是可能的.@Aaron积分很有意思,但由于以下原因,我认为没有意义:

  1. 如果你的应用程序发送过多的推送通知(并且如果你使用它作为"聊天"的方式,那么没有人会使用你的应用程序,因为它会很烦人.

这里唯一的情况是当应用程序没有运行时,即使这样,如果连续太多,apple也只会发送最后一个通知.当应用程序在任何其他状态(background,foreground active & inactive,suspended),该通知可以静默处理使用,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
}
Run Code Online (Sandbox Code Playgroud)

  • @divergio绝对肯定!我们为我们的应用程序做到了.即使用户选择禁用推送通知,您仍然拥有设备令牌.当用户选择不接收推送通知时,这仅意味着他不希望在物理上警告推送通知.你可以默默地做任何你想做的事! (2认同)

Aar*_*ron 6

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

  1. 如果你的应用程序发送过多的推送通知(并且如果你使用它作为"聊天"的方式,那么没有人会使用你的应用程序,因为它会很烦人.
  2. 用户还可以禁用应用程序的推送通知,这样您就不能依赖它作为唯一的通信方式.

您需要具有客户端/通道关系的某种轮询系统.有很多服务器系统可以为您完成此任务.WebSync是一个:

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