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

2023-12-23

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


Why not?

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

  1. 如果您的应用程序发送太多推送通知(如果您使用它作为“聊天”的方式,则会出现这种情况),没有人会使用您的应用程序,因为它会很烦人。

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

  1. 用户还可以禁用您的应用程序的推送通知,这样您就不能依赖它作为唯一的通信方式。

这是错误的,这不会阻止通知发送到手机,只是不会向用户显示。看here https://stackoverflow.com/questions/11045406/apple-push-notification-registration-device-token-receive-clarification。因此,即使用户禁用了推送通知,您也可以处理静默通知。这只是一个设置,设备仍将具有设备令牌,并且后端仍将能够发送推送通知。

然而..

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

最好的方法是使用您的通知作为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
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS - 带有推送通知的聊天应用程序 的相关文章

随机推荐

  • 如何在带有 razor 的 MVC 3 中使用正则表达式

    当我将 MVC 3 与 razor 一起使用时 它工作正常 但是当我使用 section head 编写正则表达式时 他们不起作用 function isValidEmailAddress emailAddress var pattern
  • TortoiseSVN不保存密码

    我在 Windows 7 Professional 64 位中安装了 Tortoisesvn 1 8 7 乌龟总是要求保存密码 但还是不保存 我多次清除路径 AppData Roaming Subversion 但没有在 svn simpl
  • 禁用 Ruby on Rails 中的文本框?

    我有代码 我想禁用使用嵌入式 ruby 的文本框 但无法这样做 如果我能就我所面临的情况获得任何帮助 我将不胜感激 禁用文本框后 我想让一个按钮从数据库表 项目符号 生成四个随机 ID 并将它们以数组格式打印在禁用的文本框中 并利用这四个打
  • 编辑电子邮件地址后无法登录

    I have 格里特 v3 0 0在我的服务器上运行 昨天一切正常 这是我的身份验证方法 auth type http emailFormat 0 domain com 我不确定这是否是问题的原因 但我可能已删除我的电子邮件地址 电子邮件受
  • 将列值从一个数据库.表复制到另一个数据库.表

    让我们保持简短而甜蜜 我想这样做 我现在已经失败了很多次 一次尝试甚至用空白更新了行 UPDATE Database2 Table1 SET Database2 Table1 Column1 Database2 Table1 Column2
  • Node Express 强制所有静态路由指向根路径

    我有一个 node js 应用程序 我正在尝试对其进行通用化 以便无论后端的 URL 是什么 它始终使用根路径来提供静态文件 所以目前我的应用程序位于https myapp heroku com https myapp heroku com
  • 如何在 twitter-bootstrap 中停止图像响应?

    我正在使用 twitter bootstrap 来制作响应式布局 它的效果非常棒 它使图像过于敏感 我需要一些图像只需要固定宽度和高度 div class span1 img src http i ytimg com vi uGBKzIY4
  • 在asp.net MVC中,我们可以从另一个控制器调用一个控制器的方法吗?

    在asp net MVC中 我们可以从另一个控制器调用一个控制器的方法吗 您也可以直接重定向到该方法 如下所示 public class ThisController public ActionResult Index return Red
  • 如果 using 块返回,IDisposable 是否会被释放?

    例如 using var something GetSomething something DoSomething if something IsX return true return false 是的 一点没错 这Dispose方法被调
  • C# - 如何将转义字符串转换为文字字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 我可以在运行时展开包含 C 文字表达式的字符串吗 https stackoverflow com questions 3298075 can i expand a string that contai
  • 有没有办法在 C++ 中传递字符串文字作为引用

    在 C 中 如果值不能为 NULL 则通常通过引用而不是指针传递 假设我有一个具有以下签名的函数 该函数通常与字符串文字一起使用 void setText const char text 我想知道如何更改函数以使其接受引用 并且具有不接受
  • Java中的paintComponent()没有被调用[重复]

    这个问题在这里已经有答案了 我正在尝试绘制一个简单的矩形 但我认为 PaintComponent 方法没有被调用 这是带有 main 方法的类的代码 package painting import java awt import javax
  • 电子,在browserify之后,fs.existsSync不是一个函数

    我读了很多关于 browserify 和 electro 以及 gui 浏览器问题 但 browserify 仍然存在问题 说 fs existsSync 不是一个函数 并且 required 未定义 完整的故事 我用电子创建了简单的图形用
  • 关于静态方法的 Java 编码约定

    这是一个非常简单的问题 但我认为这是一个有点争议的问题 当我编写 Java 类代码时 我使用以下顺序 class Foo static fields instance fields constructors methods non stat
  • 使用JDK的JAXB,不带ns2前缀

    在阅读了 Oracle 论坛 Stackoverflow java net 上有关此内容的所有帖子后 我终于在这里发帖了 我正在使用 JAXB 创建 XML 文件 但问题是它添加了著名的ns2在我的元素之前添加前缀 我已经尝试了所有没有人为
  • C++ 中的命令模式序列化

    我想在 C 中执行以下操作 创建命令对象 序列化它 发送到另一台电脑 反序列化 execute 两种情况 发送者和接收者都是win 7 电脑 发送者是 nix 接收者是 win 7 我找到了一个序列化教程 http www function
  • php date_diff 以小时为单位

    如何使下面的代码将天数转换为小时数 timestart date create 02 11 2011 row gt timestart row gt timestart returns time in 00 00 00 format tim
  • 模板实例化、两阶段名称查找、自动推导类型的不同行为

    看到这个问题后何时检查 C 模板实例化类型 https stackoverflow com q 34204483 2805305 并且很长一段时间以来我都在想同样的事情 我开始玩代码来吸收知识 答案给出了明确且正确的解释 它提到了两阶段名称
  • 将 EF 迁移合并到新的 InitialCreate 中

    我使用 EF 迁移已经有一段时间了 我的项目中有超过 100 个迁移文件 我想在继续之前将它们合并到一个迁移中 即我想用一个新版本替换现有的 InitialCreate 迁移 该版本考虑了我的所有后续更改 以便我可以删除所有其他迁移文件 如
  • iOS - 带有推送通知的聊天应用程序

    我的问题很简单 使用推送通知开发聊天应用程序是个好主意吗 因此 推送通知并不可靠 并且无法保证它们是否会到达 如果不可靠 实时聊天应用程序应该使用哪种技术 Why not 使用 iOS 推送通知构建聊天绝对是可能的 Aaron 的观点很有趣