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

时间:2016-10-18 22:24:05

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

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

我正在考虑实施一种方式,当收到通知时,应用程序会唤醒并向服务器发送请求,说明" 您好我_____,我收到了通知文章____ "并将其存储在数据库中。然后,如果用户点击通知并去阅读文章,我发送另一个请求" 您好我____并且我已经阅读了文章_____ &# 34;我也将它存储在数据库中。然后通过一些查询,我能够理解读取/接收的百分比。

我不明白是否甚至可以唤醒应用,即使用户暂时没有打开它并且发送请求服务器(对于后台意味着应用程序未启动或在缓存中?)。

我想实现他们对Whatsapp的所作​​所为:

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

我认为该功能是通过静音推送通知实现的,只需更新应用徽章并清除阅读通知。

7 个答案:

答案 0 :(得分:4)

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

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

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

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

这就是实现的方式。

  1. 为应用实施推送通知
  2. 用户收到推送通知,通知徽章显示数字(1)。
  3. 现在,当用户在任何其他媒体(您自己的Mac应用程序或PC应用程序)中查看相同的新闻报道时。服务器会收到用户操作以及他/她刚刚阅读的新闻的通知。
  4. 现在服务器知道它已发送通知但未读取。当您收到阅读通知时,您可以发送可在后台由应用处理的远程通知并更新徽章。
  5. 有关如何在各种模式下处理通知的更多详细信息,请查看此link

    Apple文档也可以被引用here作为后台模式 - 远程通知。

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

答案 1 :(得分:2)

答案 2 :(得分:2)

我已经在我的应用程序中实现了这样的功能,而且实际上很棘手。 你需要处理很多用例。

  • 第一件事(但你似乎已经知道了):Apple没有提供 任何回调说:“此通知已发送”

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

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

说,这里有一个如何实现系统的快速解释:

  1. 您需要在服务器端将任何已发送的通知保存在数据库中。一旦发送,请将其保存为“待处理”
  2. 在应用程序方面:如果您的应用程序处于后台,一旦收到通知,您就可以唤醒您的应用程序以向服务器发送请求。然后在您的数据库中,您的通知状态将更改为“已接收”或“已通知”。 如果您的应用被杀,当用户启动您的应用时,向服务器发送请求,要求处于“待处理”状态的所有通知,这样您的应用将是最新的,以及你的徽章号码。
  3. 如果用户点击通知,这将直接在文章上打开您的应用,这样您就可以发送请求并告知您的服务器该文章已被接收和阅读。
  4. 如果用户在网络上阅读您的文章,请发送通知。将通知徽章编号设置为数据库中实际“待处理”通知的编号。
  5. 希望除了@Prav的答案之外,这将有助于你:)

答案 3 :(得分:2)

Apple Developer Technical Support的回复:

  

Hello Matteo,

     

感谢您与Apple开发者技术支持(DTS)联系。我们的工程师已经审核了您的请求,并得出结论认为,根据当前出货的系统配置,没有支持的方法来实现所需的功能。

所以在游戏结束时,IT“并不可能”

答案 4 :(得分:1)

您希望将应用程序与网络应用程序或网站同步,而不是向应用程序发送通知,而不是将通知设置为特定ID。如果用户从您的网络读取该消息,则再次使用不同的消息发送推送通知并处理服务或广播如果收到的消息包含不同的消息,取消通知后的接收者。您也可以使用通知监听器。请参阅此link

请参阅此link了解ios。

答案 5 :(得分:0)

您好@Smile应用程序在阅读您的问题后,我建议您查看OneSignal网站。 OneSignal允许您向订阅的用户发送通知。它还会显示有多少用户正在使用您的应用,以及有多少用户收到了您的通知。如果您要发送通知并从应用程序本身跟踪它们,您可以使用他们的API。这很简单,我已经在Android中实现了这一点,很快将在IOS中实现。

现在,您的问题的第二部分是关于了解如何跟踪有多少用户阅读/打开您的通知以及您在哪些活动上使用Google Analytics。它允许您查看用户正在使用您的应用程序的世界哪个部分以及您的应用程序的哪些活动最常打开。它也很简单,我也在Android中实现了这一点,很快也将在IOS中实现。

答案 6 :(得分:-1)

我不知道苹果通知,不知道如何知道有多少用户收到了您的通知。但是要知道如何找到它们的方法。 发送1X1像素图像链接的链接。打开通知时。加载图像链接(隐藏,它不会占用任何可观的数据导致其仅1X1像素)像

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

在服务器端使用userId保存articleId并返回imgData(1X1) 它会起作用