在应用程序暂停时运行服务并获取通知并打开特定屏幕

Posted

技术标签:

【中文标题】在应用程序暂停时运行服务并获取通知并打开特定屏幕【英文标题】:Run Services when application is suspended and get notifications and open specific screen 【发布时间】:2016-09-20 09:55:29 【问题描述】:

我正在开发应用程序,我希望每 12 小时后运行一次后台服务,即使应用程序已暂停或任何状态,就像 Facebook 一样。在该服务中,它将访问 webService 并获取数据。当12小时后数据发生变化时,我会收到添加该项目的通知,当我点击该通知时,我将移动到特定屏幕。

我在很多论坛上看到,当应用程序处于后台状态时,只需 3-4 分钟即可终止应用程序,之后就不会发生任何事件。 但我在 Facebook、WhatsApp 或任何其他社交媒体应用上看到,即使应用未运行或处于暂停状态,应用仍会收到通知。

请指导我该怎么做。

【问题讨论】:

您可以使用后台抓取,但执行周期未定义且不受您应用的控制。推送通知可能更好 但即使应用程序暂停,我也想每 12 小时获取一次数据。 保证每 12 小时的唯一方法是每 12 小时从服务器推送一次通知(技术上这也不能保证,因为设备可能离线)。后台提取可能对您有用,但时间段并不准确 【参考方案1】:

这不是它的工作方式。 您从 Facebook 或 WhatsApp 应用程序看到的通知是 Push Notifications。

应用未从服务器获取信息。是服务器将信息“推送”到用户的手机。

推送通知不需要您的应用处于活动状态即可工作。如果处理正确,点击它们将启动您的应用程序和show the correct screen。


要定期运行任务,您可以查看Background Fetch。 这很好用,但是 ios 决定何时调用它并且可以完全停止调用它(例如,如果手机处于省电状态或您的应用程序被手动终止)。

请记住,在 iOS 中,如果您的应用被挂起/终止,则没有办法强制设备执行代码。您可能需要检查您的工作流程。

【讨论】:

我明白了。那么有没有其他方法可以让我每 12 小时运行一次 webService? 我已经实现了后台提取,但只有当应用程序处于后台状态时才有效。如果应用程序从内存中挂起,它会停止任务。 后台获取将定期调用您的代码,即使应用程序已暂停。你无法控制什么时候。如果应用已被(系统或用户)杀死,则不会发生这种情况。

以上是关于在应用程序暂停时运行服务并获取通知并打开特定屏幕的主要内容,如果未能解决你的问题,请参考以下文章

打开应用程序或解除暂停时,警报或通知能否调出特定视图?

当特定屏幕以 html 显示时,从 WKWebView 向 Swift 获取通知

如何在颤振应用程序中无上下文导航?

当通知进入android时如何获取Bundle数据

单击推送通知时对特定活动的意图。

特定用户的静默推送通知