android - 知道应用程序是否收到来自服务器端的通知

标签 android ios push-notification notifications apple-push-notifications

我正在构建一个类似报纸的应用程序,我想知道有多少人收到了这篇文章的推送通知有多少人实际阅读了它

我正在考虑实现一种方式,当收到通知时,应用程序会唤醒并向服务器发送请求说“嗨,我是 _____,我收到了文章 ____”并将其存储在数据库中。然后,如果用户单击通知并阅读文章,我会发送另一个请求,说“嗨,我是 ____,我已经阅读了文章 _____”,我还将它存储在数据库中.之后,通过一些查询,我能够了解读取/接收的百分比。

我不明白是否有可能唤醒应用,即使用户有一段时间没有打开它并向服务器发送请求 (背景意味着应用程序未启动或在缓存中?)。

我想实现他们用 Whatsapp 所做的事情:

  • 我在 Whatsapp 上收到一条新消息
  • 我没有打开应用
  • 我去 WhatsApp 网站
  • 我在 WhatsApp Web 上打开对话
  • 角标(Badge)和手机上的通知消失了,因为我在其他地方看到了

我认为该功能是通过静默推送通知实现的,静默推送通知仅更新应用角标(Badge)并清除已读通知。

最佳答案

这是一个关于如何实现此类静默通知的非常好的问题。这里几乎没有我们需要考虑的变数,并以不同的方式处理它们。

发送给用户的推送通知 - 有些人会收到,有些人可能根本没有收到。

在短时间内向同一用户推送多个通知 - 此处很难跟踪用户打开应用的确切通知。因为用户可能在一次尝试中阅读了所有收到通知的新闻。

在应用中向用户显示的实际内容 - 用户可能因为通知而打开了应用。有时他可能已经看到通知,然后直接打开应用程序而不与通知进行交互。

这就是实现的方式。

  1. 为应用实现推送通知
  2. 用户收到推送通知,通知标志显示数字 (1)。
  3. 现在,当用户在任何其他媒体(您自己的 Mac 应用程序或 PC 应用程序)中查看相同的新闻报道时。服务器会收到用户操作和他/她/任何人刚刚阅读的新闻的通知。
  4. 现在服务器知道它已经发送了一个通知并且没有被读取。当您收到阅读通知时,您可以发送可由应用在后台处理的远程通知并更新角标(Badge)。

看看这个 link有关如何在各种模式下处理通知的更多详细信息。

苹果文档也可以引用here对于后台模式 - 远程通知。

因此,您将使您的应用程序在后台运行,并使用某些设置来响应静默通知并像 WhatsApp 一样更新角标(Badge)。我希望这会有所帮助。

关于android - 知道应用程序是否收到来自服务器端的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40119069/

相关文章:

ios - CAKeyframeAnimation 在贝塞尔曲线后不调用animationDidStop (iOS)

android - 如何在不显示通知的情况下更新未读计数

ios - 在 Safari 上为我的 PWA 丢失 "Web Push"的解决方法

java - Android SDK 中的 dx.jar 是什么?

java - 如何在调整其父 ViewGroup 后调整 subview 高度?

android - 如何在 iOS 和 Android 上翻译应用程序?这在经济上是否值得?

android - 我们可以在 Firebase Cloud Messaging 中创建多少主题?

ios - 如何避免使用子类化和/或委托(delegate)模式(Swift)为两个 View Controller 编写相同的函数

ios - 使用 Google Firebase 同时上传多张图片

android - OneSignal 为每个应用程序安装创建多个用户记录