处理iOS和Android的推送通知场景

7
我想为App(iOS和Android)实现推送通知,并需要澄清以下场景。我了解推送通知的工作原理和局限性。我已经阅读了文档,但这使我感到困惑,而且无法回答我的所有问题。
以下是iOS和Android中如何处理以下场景:
- 设备关机时 - 设备未连接到3G或Wifi网络时 - 设备崩溃并需要重新启动时 - 应用处于前台时 - 应用在后台时 - 用户当前正在使用应用时 - 我的应用关闭时(未打开/启动) - 当推送通知是针对特定用户的,且两个用户共享相同的设备和应用时。例如:如果夫妻共享相同的设备并使用带有推送通知的银行应用。 - 如果设备由多个用户共享,您可以发送特定用户的通知吗? - 用户在多个设备上安装应用时 - 您能否一次向用户注册的所有设备发送通知? - 您是否在用户表中存储了设备类型(iOS或Android)和registrationID?还是通过检查令牌或registrationID来区分设备类型? - 您能取消尚未读取的先前发送的通知并发送新通知吗? - Android推送通知仍然不能在Kindle Fire上工作,需要实现Amazon Device Messaging吗? - 还有其他需要考虑或计划的事情吗?我知道如何处理取消注册和反馈服务。
2个回答

3

我可以回答一些关于Android的问题,不清楚iPhone是否类似。

  1. 设备会在Google Cloud服务器触发通知时接收到通知,这与应用程序状态(运行、关闭、后台或前台)无关。
  2. 如果通知发送到设备时它没有连接到互联网(关闭或未连接到网络),只有当设备连接到网络时才会收到通知。但是,如果设备在接收通知后崩溃并重新启动,您将无法再次收到通知。

这是特定用户的吗?

这取决于个人服务器实现。

我们存储设备类型吗?

是的,我们可以。

我们可以区分iPhone和Android的ID吗?

是的,Android设备ID的长度比iPhone长。

我们可以取消已发送的通知吗?

据我所知,不行,这是单向通信渠道。


3

当设备关闭时:

答案: IOS/Android服务器(不是你的服务器)将处理何时发送推送通知。它检查设备是否可达。我们可以定义IOS/Android服务器应尝试发送推送通知的次数。

当设备未连接到3G或Wifi网络时

答案: 与2G/3G/Wi-Fi无关。设备应通过任何网络连接到互联网。

当设备崩溃并需要重新启动时

答案: IOS/Android服务器会检查设备是否可达。

当应用程序在前台时

答案: 与应用程序在前台无关。

当应用程序在后台时

答案: 与应用程序在后台无关。

当用户正在使用应用程序时

答案: 与当前使用应用程序无关。

当我的应用程序关闭时(未打开/启动)

答案: 与关闭应用程序无关。

当推送通知是特定于用户的,并且两个用户共享同一设备和应用程序。例如:如果夫妻共享同一设备并使用具有推送通知功能的银行应用程序。

答案: 这取决于您在自己的服务器上实现的方式。您将为每个用户管理设备ID。因此,向多个用户发送到同一设备取决于您的实现逻辑。

如果多个用户共享设备,您能否发送特定于用户的通知?

答案: 这取决于您在自己的服务器上实现的方式。您将为每个用户管理设备ID。因此,向多个用户发送特定通知取决于您的实现逻辑。

当用户在多个设备上安装应用程序时

答案: 这取决于您在自己的服务器上实现的方式。

您能否一次将通知发送到用户注册的所有设备?

答案: 是的,根据您的实现逻辑。

您是否将设备类型(iOS或Android)与RegistrationID存储在用户表中,或者是否有一种方法通过检查令牌或RegistrationID来区分设备类型?

答案: 是的,您需要存储设备类型,以识别需要向哪个服务器(IOS/Android)发送推送通知的请求。

您能否取消尚未阅读的先前发送的通知并发送新的通知?

答案: 不,您无法取消该请求。

Android推送通知是否仍无法在Kindle Fire上工作,并且需要实现Amazon Device Messaging?

答案: 需要在Google上搜索相关信息。

我还需要考虑或规划什么?我知道如何处理注销和反馈服务

答案: 需要在Google上搜索相关信息。


当设备在前台或后台时,设备会发生什么?用户会收到通知吗,还是他们必须检查通知中心? - Kevin Smith
对于应用程序完全关闭的情况,像 Messenger 和 Facebook 这样的应用程序是如何解决这个问题的?它们是否在 iOS 和 Android 上拥有特殊权限? - Rob85

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接