Swift / iOS哪种通知机制最可靠?

时间:2019-03-01 07:37:00

标签: ios swift apple-push-notifications mqtt pushkit

我们目前正在开发基于Swift 4的iOS应用程序。iOS应用程序会收到一些非常重要的通知,即使该应用程序处于非活动状态(例如在背景中),它们也应尽可能快且可靠地到达。

因此,我们目前正在问自己最好使用哪种通知机制。我们正在考虑以下内容:

  • 直接向用户显示通知的Apple Push Notifications
  • 将创建LocalNotification的Apple Silent Push Notifications
  • MQTT(但是我想它不能在后台运行?)
  • Apple PushKit for VoiP

您能为此提供帮助吗?据一些互联网研究表明,Apple PushKit似乎是最可靠的产品。但是,尽管我们的应用程序中实际上没有语音功能,但我们可以使用它吗?

非常感谢您的帮助。

最好, mooonli

1 个答案:

答案 0 :(得分:0)

编辑(在获得更多信息之后)

好吧,在阅读完您的用例之后,我认为我们可以简化很多工作,并且仍然具有高度可靠的方法。

假设:

  • 用于用户的iPad可能将归医院所有,并且不会因为没有收到通知而出现任何问题,因为它们只是发件人。
  • 另一方面,可以将护士电话有意或无意地配置为接收或不接收通知。
  • 您并不是真的不会根据通知在应用程序中执行任何关键操作,您只需要护士对它进行操作

考虑到这一点,我建议您使用常规的推送通知和SMS通知作为备份。

  1. 当用户点击ipad表示自己饿/渴/痛苦时,您的后端会收到该请求并触发推送通知。
  2. 您的后端现在启动了一个计时器,用于确定应在何时发出ping消息,告知您已读取通知(护士会由于通知而打开应用程序)。
  3. 如果后端在1分钟内(或您设置的阈值)没有收到ping命令,则您的后端现在会发送一条SMS消息,由运营商发送。
  4. 如果您的后端仍然无法ping通,请重复第2步和第3步,但发送给辅助联系人(护士长,医生?)
  5. 打开应用后,您将获取所有待处理的通知,并执行所需的所有操作(要求护士确认收据或确认已采取措施)
  6. 您甚至可以进行紧急备份,如果在最大时间段(30分钟?1小时?)内没有执行ping操作,则用户的ipad会显示警告消息,要求用户使用物理的“呼叫护士”按钮。
  7. 您可以根据用户请求的操作来反转优先级(SMS首先用于“痛苦中”的触发器,其余则全部推送)。

您绝对可以信任push服务,因为它非常可靠,并且可以为您提供一些调试数据,但是只需确保您具有一个fallback方法和fallback方法的后备方法:P


原始答案

首先,您必须问自己为什么收到通知对您的应用如此重要。当用户打开应用程序时,您真正需要做些什么才能做到。

您永远不应依赖通知来对您的应用执行重要操作,一个通知就是给用户的一条信息。它绝不应该是执行关键活动的一种形式。 当然,您可以使用指定的所有方法在收到通知后执行操作,但是仅应是可以比手动触发来帮助您的应用更快地执行某种逻辑的操作。

确保以一种可以不断执行需要不断触发的关键信息的方式来构建应用程序。因此,您可以通过执行推送或静默推送来触发,如果不起作用,则用户会收到一封电子邮件以执行某些操作,以打开应用程序并手动触发它,等等。

请记住,这些类型的通知可以手动禁用,可以启用但无法传递,因为推送基本上是一劳永逸的。

我不知道您的应用程序是关于什么的,但是请尝试始终考虑这样的流向用户的后果,以及如果关键活动没有在应有的时间执行则会发生什么。

很抱歉,如果这对您的实际需求没有帮助,但是我已经属于两个主要应用程序的一部分,这些应用程序“依赖”执行事件的通知,我们在创建时总是遇到很多问题解决方法。