ios - 让应用程序在后台执行一个功能

标签 ios swift background notifications

我希望我的应用在我的手机处于锁定状态时定期执行一项功能,以便在需要时显示通知。

我知道我应该使用 UIApplication.shared.setMinimumBackgroundFetchInterval 作为时间间隔,所以我在 AppDelegatedidFinishLaunchingWithOptions 函数中设置了它。 后台模式也在我的info.plist中设置。

我将我的 refreshData 函数放在 AppDelegateperformFetchWithCompletionHandler 中,当我使用 Simulate Background Fetch 调试时通过我手机上加载的应用程序进行控制,一切正常,但当我将手机放在一边时,什么也不会发生。

我猜 performFetchWithCompletionHandler 从来没有在我设置的时间间隔内被自己调用。我如何确定它按计划每 60 秒运行一次?

最佳答案

你不能。 iOS 决定何时以及多久在后台调用您的应用程序,而不是您。您可以简单地要求时间并希望最好。如果用户经常使用你的应用程序,那么操作系统会给你更多的后台时间。

如果您想要更多,您可以从外部服务器向设备发送 APNS,这将唤醒应用程序并给您一些处理时间。

This article详细描述您的选择。

关于ios - 让应用程序在后台执行一个功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48065597/

相关文章:

jquery - 首次运行应用程序时不会触发 PhoneGap Deviceready (iOS)

iphone - UIWebView 不加载 URL

ios - 如果我希望它在整个应用程序生命周期内都存在,是否需要手动删除观察者?

ios - 将撤消管理器与 mac 催化剂一起使用

audio - 背景音乐Xcode 7 Swift

c# - MonoTouch 确定性处理单元

ios - 检索自定义单元格内的 textfield.text

ios - 函数产生预期类型 '(() -> ())?' ;你的意思是用 '()' 来调用它吗?

c++ - 线程 : doing processing in background of C++ Cinder app to keep the UI responsive

iframe 透明背景