iOS

时间:2016-09-27 13:43:31

标签: android ios timer background background-task

我有一个android / winphone应用程序。应用程序的一小部分(后台广播接收器/任务)不时(约10-15分钟)检查带有时间戳的本地文件,如果时间戳和当前时间之间的差异变得超过 - 例如 - 30分钟,它会显示通知用户。

在Android中,我使用AlarmManager.setRepeating(...)来设置定期检查,并运行此设置代码我在行动中注册一个BroadcastReceiver" android.intent.action.BOOT_COMPLETED"在清单中。或者在每次启动时调用AlarmManager.cancel(...)和AlarmManager.setRepeating(...)。这样我可以确保我的计时器工作。

在Windows Universal中,我使用触发器和后台任务。这有一些局限性。

现在我将我的应用程序移植到iOS,快速查看并没有给我一种方法来注册一个函数或类,以便在应用程序中每10分钟执行一次快速检查(大多数不到一秒钟)本身没有启动,我也想在设备启动事件上注册一个功能。可能吗? 或者我应该让我的应用程序在后台运行?我不愿意这样做,因为我的支票很轻且很少见。

1 个答案:

答案 0 :(得分:1)

您可以使用后台抓取来快速执行。 但有几个缺点:

  1. 不能在睡眠模式下工作。

  2. 您无法捕获设备启动事件。

  3. 它会在30秒内掉落。

  4. 我认为在一般情况下,这不是AlarmManager的模拟。算了吧。

    https://www.raywenderlich.com/92428/background-modes-ios-swift-tutorial

    https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

    推送通知可用作触发器。但是,尽管如此,这是一个服务器端实现。

    在上面的指南中:

    1. 选中应用功能背景模式中的背景提取框。

    2. 使用setMinimumBackgroundFetchInterval(_:)设置适合您应用的时间间隔。

    3. 在您的app委托中实施application(_:performFetchWithCompletionHandler:)以处理后台抓取。

    4. 您的回调事件为performFetchWithCompletionHandler