通过推送通知处理我的应用程序徽章计数的最佳方式是啥?
Posted
技术标签:
【中文标题】通过推送通知处理我的应用程序徽章计数的最佳方式是啥?【英文标题】:What is the best way I can handle my app's badge count via push notifications?通过推送通知处理我的应用程序徽章计数的最佳方式是什么? 【发布时间】:2015-04-02 05:30:34 【问题描述】:用户
帖子
cmets
未读消息
部分预期结果
完整的预期结果
我希望我的应用程序的徽章图标显示一个数字,该数字代表用户拥有的未读 cmets 的数量。该应用程序是一个发布/评论风格的应用程序。例如,如果用户 Alice 发布了一个帖子,并且用户 Bob 在上面进行了 cmets,则一个 POST 将被发送到后端 JSON API 到 /cmets URL。它将保存评论,将用户 Alice 的 unread_messages 行加 1,并向 APNS 发送推送通知,将徽章设置为 Alice 的 unread_messages 表中的 count。
这个 unread_messages 表的原因是为了避免在 posts 和 cmets 上执行 INNER JOIN,这可能是数据库中最大的两个表。如果 Alice 有 500 个帖子,它可能是一个很大的连接,而且我被告知 count() 是一项昂贵的操作。
客户端
在 ios 应用中,徽章将等于 APNS 发送给它的值。当 Alice 打开应用程序时,我希望 3-tab 选项卡的第一个选项卡显示未读消息数量的标记。为此,它不会依赖应用程序徽章上的值,而是调用后端 API 以获取 Alice 的 unread_messages 中的值。在这种情况下,它将返回 3。该值还将用作上图中“我的帖子”行中的视觉指示器。
现在,当爱丽丝点击“我的帖子”时,她将被带到一个显示她所有帖子的新视图。她会将她的帖子 1 和帖子 2 视为 2 个单独的行。每个旁边都会有一个视觉指示器,显示每个有多少未读消息。所以这个视图需要提取 user=alice 的所有 Post 信息,以及所有这些帖子的所有评论信息,包括 read=false 的数量。这将允许我们为帖子 1 显示 2 个未读的视觉指示器,为帖子 2 显示 1 个未读。
如果 Alice 查看帖子 1,则意味着她将查看 2 条未读消息。将调用服务器以按她正在查看的数量减少 unread_messages,并将 cmets 上的 read 列设置为 true。如果她随后退出,则只有 Post 2 会留下一个视觉指示器,显示它是 1 条未读消息。第一个选项卡的徽章也将是 1。应用程序徽章也会更新,如果她关闭应用程序,徽章也只会显示 1。
这是最好的设计方式吗?这里是否有太多的服务器调用、加入等?有没有更有效的设计方法?
感谢阅读!
【问题讨论】:
【参考方案1】:由于推送通知由 iOS 而非您的应用处理,因此您无法在收到推送通知时更改应用程序徽章。
但您可以在推送通知的有效负载中发送徽章编号,但您必须在服务器端进行计算。
您应该阅读:本地和推送通知编程指南,特别是通知负载。
有效载荷可能如下所示:
"aps" :
"alert" : "You got your emails.",
"badge" : 9
现在应用程序徽章图标将显示 9。 你可以找到类似的答案here
【讨论】:
以上是关于通过推送通知处理我的应用程序徽章计数的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章
未使用 Apple 推送通知设置通知徽章计数 - swift - 以编程方式