【问题标题】:iOS - Chat application with push notificationiOS - 带有推送通知的聊天应用程序
【发布时间】:2014-03-06 18:46:07
【问题描述】:

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

【问题讨论】:

    标签: ios push-notification chat


    【解决方案1】:

    为什么不呢?

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

    1. 如果您的应用发送太多推送通知(如果您将其用作“聊天”的方式,则会发送),没有人会使用您的应用,因为这会很烦人。

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

    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
    }
    

    【讨论】:

    • “因此,即使用户禁用了推送通知,您也可以处理静默通知。”你确定吗?在我的测试中,禁用推送通知似乎可以防止静默通知到达应用程序。
    • @divergio 绝对确定!我们为我们的应用程序这样做。即使用户选择禁用推送通知,您仍然拥有设备令牌。当用户选择不接收推送通知时,这仅意味着他不想实际收到推送通知的警报。你可以默默地为所欲为!
    【解决方案2】:

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

    1. 如果您的应用程序发送太多推送通知(如果您将其用作“聊天”的方式,它会)没有人会使用您的应用程序,因为它会很烦人。
    2. 用户还可以为您的应用禁用推送通知,这样您就不能依赖它作为唯一的通信方式。

    您需要某种具有客户端/渠道关系的轮询系统。有很多服务器系统可以为您做到这一点。 WebSync 是其中之一:

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

    【讨论】:

      【解决方案3】:

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

      如果您的应用需要在用户收到新消息时从后台唤醒,而不是聊天本身,那么推送通知会很棒。

      可以使用多种技术,我认为最简单的一种是使用套接字(我认为这很简单,因为网上有大量关于该主题的教程)

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

      长话短说,推送通知将是聊天应用程序的一个很好的补充,但只是作为一个附加功能(确实是一个非常好的附加功能,它们并不是那么不可靠,如果推送到达,例如让应用程序为收到的每个推送重新发送某种代码,如果在给定时间内没有收到任何代码,则重新发送推送)。

      请注意,您需要一个服务器来进行推送,因此如果您的聊天应用程序成功,可能会花费您一些钱...

      【讨论】:

      • 只要连接打开,套接字就需要打开天线。这会消耗太多能量。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      相关资源
      最近更新 更多