知道应用程序是否收到来自服务器端的通知
Know if the app received the notification from server side
我正在构建一个类似报纸的应用程序,我想知道有多少人收到了这篇文章的推送通知与有多少人实际阅读了它。
我正在考虑实现一种方式,当收到通知时,应用程序会唤醒并向服务器发送请求说“嗨,我是 _____,我已经收到文章____”的通知,存入数据库。然后,如果用户单击通知并阅读文章,我会发送另一个请求说“嗨,我是 ____,我已经阅读了文章 _____”,我还将它存储在数据库中。之后通过一些查询我能够理解百分比 read/received.
我不明白是否有可能唤醒应用程序即使用户有一段时间没有打开应用程序并发送请求到服务器(对于后台意味着应用程序未启动或在缓存中?)。
我想实现他们用 Whatsapp 所做的事情:
- 我在 Whatsapp 上收到一条新消息
- 我没有打开应用程序
- 我去 WhatsApp 网页
- 我在 WhatsApp Web 上打开对话
- phone 上的徽章和通知消失了,因为我在其他地方看到了它
我认为该功能是通过静默推送通知实现的,静默推送通知仅更新应用徽章并清除已读通知。
试试这个 Notification Listener 服务 https://github.com/kpbird/NotificationListenerService-Example。
您想将您的应用程序与 Web 应用程序或网站同步,而不是向应用程序发送通知而不是将通知设置为特定 ID.If 用户从您的 Web 读取该消息,然后使用不同的消息和句柄再次发送推送通知在服务或广播接收器之后取消通知如果收到的消息包含不同的 message.you 也可以使用通知 Listener.Refer thislink
为 ios 引用此 link。
这是一个关于如何实现此类静默通知的非常好的问题。这里有一些变量需要我们考虑并以不同的方式处理。
发送给用户的推送通知 - 有些人会收到,有些人可能根本没有收到。
在短时间内向同一用户推送多个通知 - 此处很难跟踪用户打开应用程序的确切通知。因为用户可能一次阅读了所有收到通知的新闻。
在应用程序中向用户显示的实际内容 - 用户可能因为通知而打开了应用程序。有时他可能看到了通知,然后直接打开了应用程序,而没有与通知进行交互。
这就是实现的方式。
- 为应用实施推送通知
- 用户收到推送通知,通知徽章显示数字 (1)。
- 现在,当用户在任何其他媒体(您自己的 Mac 应用程序或 PC 应用程序)中查看相同的新闻报道时。服务器收到用户操作的通知,并且新闻 he/she/whoever 刚刚阅读。
- 现在服务器知道它已经发送了一个通知并且没有被读取。当您收到已读通知时,您可以发送可由应用在后台处理的远程通知并更新徽章。
查看此 link 以了解有关如何在各种模式下处理通知的更多详细信息。
Apple 文档也可以参考 here 后台模式 - 远程通知。
因此,您将使您的应用 运行 在后台进行某些设置,以响应静默通知并像 WhatsApp 一样更新徽章。希望对您有所帮助。
我已经在我的一个应用程序中实现了这样的功能,这实际上很棘手。
您将有很多用例需要处理。
第一件事(但你好像已经知道了):苹果不提供
任何回调说:"this notification was sent"
第二件事:当您的应用程序被终止时(甚至不在后台),您的通知根本无法完成任何事情,这意味着您的应用程序将不会无法醒来并阅读通知,因此无法做某事。您唯一可以做的就是更改徽章编号,即使您的应用已被终止。
- 第三件事:当您的应用程序处于后台时,您可以在 30 秒内唤醒您的应用程序。在此期间你可以向服务器发送请求,但如果时间过长,进程将被 OS.
杀死
话虽如此,这里有一个关于如何实施该系统的快速说明:
- 您需要在服务器端将发送的任何通知保存在您的数据库中。发送后,将它们另存为 "pending"
- 在应用端:如果您的应用在后台,一旦收到通知,您可以唤醒您的应用向服务器发送请求。然后在您的数据库中,您的通知状态将更改为 "receive" 或 "notified"。 如果您的应用程序被杀死,当用户启动您的应用程序时,向服务器发送一个请求以请求所有处于"pending"状态的通知,这样您的应用程序就可以日期,以及您的徽章编号。
- 如果用户点击通知,这将直接在文章上打开您的应用程序,这样您就可以发送请求并告诉您的服务器文章已收到并已阅读。
- 如果用户在网页端阅读了你的文章,发送通知。使用数据库中实际 "pending" 通知的数量设置通知标志编号。
除了@Prav 的回答之外,希望这对您有所帮助 :)
苹果开发者技术支持的回复:
Hello Matteo,
Thank you for contacting Apple Developer Technical Support (DTS). Our engineers have reviewed your request and have concluded that there is no supported way to achieve the desired functionality given the currently shipping system configurations.
所以在游戏结束时这是不可能的
您好@Smile Applications,在阅读您的问题后我建议您查看OneSignal website. OneSignal will allow you to send notifications to your subscribed users. It will also show you how many users are using your app and how many of them have received your notifications. If you want to send notifications and track them from the app itself you can use their API。这很容易,我已经在 Android 中实现了这一点,很快就会在 IOS 中实现。
现在您的问题的第二部分是关于了解如何跟踪有多少用户 read/opened 您的通知以及他们在哪个 activity 上,您可以使用 Google Analytics。它将允许您查看您的用户来自世界的哪个部分使用您的应用程序以及您的应用程序的哪些活动被打开最多。这也很容易,我也在 Android 中实现了这一点,很快也会在 IOS 中实现。
我正在构建一个类似报纸的应用程序,我想知道有多少人收到了这篇文章的推送通知与有多少人实际阅读了它。
我正在考虑实现一种方式,当收到通知时,应用程序会唤醒并向服务器发送请求说“嗨,我是 _____,我已经收到文章____”的通知,存入数据库。然后,如果用户单击通知并阅读文章,我会发送另一个请求说“嗨,我是 ____,我已经阅读了文章 _____”,我还将它存储在数据库中。之后通过一些查询我能够理解百分比 read/received.
我不明白是否有可能唤醒应用程序即使用户有一段时间没有打开应用程序并发送请求到服务器(对于后台意味着应用程序未启动或在缓存中?)。
我想实现他们用 Whatsapp 所做的事情:
- 我在 Whatsapp 上收到一条新消息
- 我没有打开应用程序
- 我去 WhatsApp 网页
- 我在 WhatsApp Web 上打开对话
- phone 上的徽章和通知消失了,因为我在其他地方看到了它
我认为该功能是通过静默推送通知实现的,静默推送通知仅更新应用徽章并清除已读通知。
试试这个 Notification Listener 服务 https://github.com/kpbird/NotificationListenerService-Example。
您想将您的应用程序与 Web 应用程序或网站同步,而不是向应用程序发送通知而不是将通知设置为特定 ID.If 用户从您的 Web 读取该消息,然后使用不同的消息和句柄再次发送推送通知在服务或广播接收器之后取消通知如果收到的消息包含不同的 message.you 也可以使用通知 Listener.Refer thislink
为 ios 引用此 link。
这是一个关于如何实现此类静默通知的非常好的问题。这里有一些变量需要我们考虑并以不同的方式处理。
发送给用户的推送通知 - 有些人会收到,有些人可能根本没有收到。
在短时间内向同一用户推送多个通知 - 此处很难跟踪用户打开应用程序的确切通知。因为用户可能一次阅读了所有收到通知的新闻。
在应用程序中向用户显示的实际内容 - 用户可能因为通知而打开了应用程序。有时他可能看到了通知,然后直接打开了应用程序,而没有与通知进行交互。
这就是实现的方式。
- 为应用实施推送通知
- 用户收到推送通知,通知徽章显示数字 (1)。
- 现在,当用户在任何其他媒体(您自己的 Mac 应用程序或 PC 应用程序)中查看相同的新闻报道时。服务器收到用户操作的通知,并且新闻 he/she/whoever 刚刚阅读。
- 现在服务器知道它已经发送了一个通知并且没有被读取。当您收到已读通知时,您可以发送可由应用在后台处理的远程通知并更新徽章。
查看此 link 以了解有关如何在各种模式下处理通知的更多详细信息。
Apple 文档也可以参考 here 后台模式 - 远程通知。
因此,您将使您的应用 运行 在后台进行某些设置,以响应静默通知并像 WhatsApp 一样更新徽章。希望对您有所帮助。
我已经在我的一个应用程序中实现了这样的功能,这实际上很棘手。 您将有很多用例需要处理。
第一件事(但你好像已经知道了):苹果不提供 任何回调说:"this notification was sent"
第二件事:当您的应用程序被终止时(甚至不在后台),您的通知根本无法完成任何事情,这意味着您的应用程序将不会无法醒来并阅读通知,因此无法做某事。您唯一可以做的就是更改徽章编号,即使您的应用已被终止。
- 第三件事:当您的应用程序处于后台时,您可以在 30 秒内唤醒您的应用程序。在此期间你可以向服务器发送请求,但如果时间过长,进程将被 OS. 杀死
话虽如此,这里有一个关于如何实施该系统的快速说明:
- 您需要在服务器端将发送的任何通知保存在您的数据库中。发送后,将它们另存为 "pending"
- 在应用端:如果您的应用在后台,一旦收到通知,您可以唤醒您的应用向服务器发送请求。然后在您的数据库中,您的通知状态将更改为 "receive" 或 "notified"。 如果您的应用程序被杀死,当用户启动您的应用程序时,向服务器发送一个请求以请求所有处于"pending"状态的通知,这样您的应用程序就可以日期,以及您的徽章编号。
- 如果用户点击通知,这将直接在文章上打开您的应用程序,这样您就可以发送请求并告诉您的服务器文章已收到并已阅读。
- 如果用户在网页端阅读了你的文章,发送通知。使用数据库中实际 "pending" 通知的数量设置通知标志编号。
除了@Prav 的回答之外,希望这对您有所帮助 :)
苹果开发者技术支持的回复:
Hello Matteo,
Thank you for contacting Apple Developer Technical Support (DTS). Our engineers have reviewed your request and have concluded that there is no supported way to achieve the desired functionality given the currently shipping system configurations.
所以在游戏结束时这是不可能的
您好@Smile Applications,在阅读您的问题后我建议您查看OneSignal website. OneSignal will allow you to send notifications to your subscribed users. It will also show you how many users are using your app and how many of them have received your notifications. If you want to send notifications and track them from the app itself you can use their API。这很容易,我已经在 Android 中实现了这一点,很快就会在 IOS 中实现。
现在您的问题的第二部分是关于了解如何跟踪有多少用户 read/opened 您的通知以及他们在哪个 activity 上,您可以使用 Google Analytics。它将允许您查看您的用户来自世界的哪个部分使用您的应用程序以及您的应用程序的哪些活动被打开最多。这也很容易,我也在 Android 中实现了这一点,很快也会在 IOS 中实现。