我希望我的应用程序在我的手机被锁定时定期执行一项功能,以便在需要时显示通知。
我知道我应该在时间间隔使用UIApplication.shared.setMinimumBackgroundFetchInterval
,所以我在AppDelegate
'sdidFinishLaunchingWithOptions
函数中设置它。 Background Mode
也在我的info.plist
中。
我把refreshData
函数放在AppDelegate
的performFetchWithCompletionHandler
中,当我使用Simulate Background Fetch
调试控件和我手机上加载的应用程序时,一切都很漂亮,但当我把手机放在一边时,没有任何事情发生。
我想performFetchWithCompletionHandler
在我设定的时间间隔内从不被调用。我怎样才能确定它按计划每60秒运行一次?
你不能。 iOS决定在后台调用您的应用的时间和频率,而不是您。你可以简单地追求时间并希望最好。如果用户经常使用您的应用程序,那么操作系统将为您提供更多的后台时间。
如果您需要更多,可以从外部服务器向设备发送APNS,这将唤醒应用程序并为您提供一些处理时间。
This article详细描述了您的选择。