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

我正在构build一个类似报纸的应用程序,我想知道有多less人收到了该文章的推送通知以及有多less人正在阅读该文章

我想实现一种方式,当收到通知时,应用程序醒来,并发送一个请求到服务器说:“ 嗨,我已经收到了____的通知 ”,并将其存储在数据库中。 然后,如果用户点击通知,并阅读文章,我发送另一个请求,说:“ 嗨,我____和我读过文章_____ ”,我也把它存储在数据库中。 后来有一些查询,我能够理解读取/接收的百分比。

我不明白是否甚至有可能唤醒应用程序,即使它不是在一段时间内被用户打开, 并向服务器发送请求 (对于后台,意味着应用程序未启动或在caching中?)。

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

  • 我在Whatsapp上收到一条新消息
  • 我不打开应用程序
  • 我去WhatsApp网站
  • 我打开WhatsApp网上的对话
  • 因为我在别的地方看过,所以电话上的徽章和通知消失了

我认为这个function是通过静默推送通知来实现的,只需更新应用徽章并清除阅读通知即可。

Solutions Collecting From Web of "知道应用程序是否收到来自服务器端的通知"

这是一个非常好的问题,如何实施这种安静的通知。 这里有几个变数,我们需要以不同的方式考虑和处理。

推送通知发送给用户 – 其中一些会收到它,有些可能根本没有收到它。

在很短的时间内向同一用户推送多个通知 – 这里很难跟踪用户打开应用程序的确切通知。 因为用户可能已经阅读了所有收到通知的新闻。

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

所以这就是实现的方式。

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

查看这个链接 ,了解如何在各种模式下处理通知的更多细节。

苹果公司的文档也可以在这里引用背景模式 – 远程通知。

因此,您将使您的应用程序在特定设置的后台运行,以响应无声通知,并像WhatsApp一样更新徽章。 我希望这有帮助。

试试这个Notification Listner服务https://github.com/kpbird/NotificationListenerService-Example

我已经在我的一个应用程序中实现了这样的事情,这实际上是棘手的。 你会有很多的用例来处理。

  • 第一件事(但你似乎已经知道):苹果不提供任何callback说:“这个通知已发送”

  • 第二件事:当你的应用程序被杀害(甚至不在后台)时, 你的通知就没有任何可以完成的事情 ,这意味着你的应用程序将无法唤醒和阅读通知,因此做一些事情。 唯一可以做的就是改变徽章号码,即使你的应用程序被杀害。

  • 第三件事:当你的应用程序在后台,你可以在30秒内唤醒你的应用程序。 在此期间,您可以向服务器发送请求,但是如果时间太长,该进程将被操作系统终止。

说,这是一个如何可以实现该系统的快速解释:

  1. 您需要在服务器端保存您的数据库中发送的任何通知。 只要他们被发送,保存为“待定”
  2. 在应用程序方面: 如果您的应用程序在后台 ,一旦收到通知,您可以唤醒您的应用程序发送请求到服务器。 然后在您的数据库中,您的通知状态将更改为“接收”或“通知”。 如果你的应用程序被杀害 ,当用户启动你的应用程序,发送一个请求到服务器,要求所有通知在“挂起”状态,这样你的应用程序将是最新的,以及您的证件号码。
  3. 如果用户点击通知,这将直接在文章上打开你的应用程序,这样你就可以发送一个请求,并告诉你的服务器文章已被接收和阅读。
  4. 如果用户在网页上阅读您的文章,请发送通知。 在您的数据库中设置通知证件号码和实际“待处理”通知的号码。

希望这会帮助你,除了@Prav的答案:)

Apple开发者技术支持的回复:

你好Matteo,

感谢您联系Apple开发者技术支持(DTS)。 我们的工程师已经审查了您的要求,并得出结论认为,在目前的运输系统configuration下,没有支持的方式来实现所需的function。

所以在游戏结束时,这是不可能的

您希望将您的应用程序与networking应用程序或网站进行同步,而不是将通知发送给应用程序,而不是将通知设置为特定的ID。如果用户从您的networking上读取该消息,则再次使用不同的消息发送推送通知,然后在服务或广播接收器中处理如果收到的消息包含不同的消息,则取消通知。您也可以使用Notification Listener。请参阅此链接

请参阅此链接的ios。

我不知道苹果通知,不知道如何知道有多less用户收到您的通知。 但是要知道如何find他们。 发送链接为1X1像素图像链接。 当打开通知。 加载图像链接(隐藏,它不会采取任何可观的数据导致其1X1像素)像

 www.yoursite.com/loadArticleImg?AId=articleId&userId=userId 

在服务器端保存articleId与userId并返回imgData(1X1)它将工作

Hi @Smile应用程序在阅读您的问题后,我build议您看到OneSignal网站。 OneSignal将允许您发送通知给您的订阅用户。 它也会告诉你有多less用户正在使用你的应用程序,其中有多less人已经收到你的通知。 如果你想发送通知,并从应用程序本身跟踪他们,你可以使用他们的API 。 这很容易,我已经在Android中实现了这一点,很快将在IOS中实施。

现在,关于了解如何跟踪有多less用户阅读/打开您的通知以及他们在哪些活动上的问题的第二部分可以使用Google Analytics 。 它将允许您查看您的用户正在使用您的应用的哪个地区,以及您的应用的哪些活动最开放。 这也很容易,我也已经在Android中实现了这一点,并很快将在IOS中实施。