1)我的plist配置,提供了backgroundmode:
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
</array>
2)在didFinishLaunchingWithOptions
中,我有:
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:1.0];
3)我在委托中声明了协议UIApplicationDelegate
。
4)我实现了以下方法,但它从未触发过。(只有当我使用"XCode->Debug->Simulate fetch“来模拟Fetch时,它才能起作用。)
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
为什么?这是一个DP5测试版错误吗?我应该用雷达探测这个吗?
发布于 2013-08-19 22:06:48
我担心这很难在设备上调试,因为您不能保证在指定的时间内调用它。
setMinimumBackgroundFetchInterval
表示在小于您指定的值的时间间隔内不调用它。但是这里没有setMaximumBackgroundFetchInterval
。因此,如果iOS决定只调用你的应用程序一天一次,甚至一周一次,那么无论你的minimumBackgroundFetchInterval
是什么,它都不会被更频繁地调用。AFAIK iOS决定何时调用performFetchWithCompletionHandler
,由模式衡量,用户何时启动应用程序,以及启动应用程序的频率。
发布于 2013-10-18 01:47:21
在iOS模拟器中运行你的应用程序,在Xcode调试模式下,你可以从Xcode菜单中强制后台获取:
调试>模拟后台获取
可能适用于系留设备,但我最近没有尝试过。
发布于 2013-10-31 05:23:29
另一件需要检查的事情是您的plist
文件。确保UIApplicationExitsOnSuspend
键不存在。
Stack Overflow上的许多人建议使用该设置作为一种强制应用程序每次启动时重新启动的方式。这确实是可行的,但副作用是它阻止了新的iOS 7后台获取功能被触发。
https://stackoverflow.com/questions/18315771
复制相似问题