首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >performFetchWithCompletionHandler永远不会被解雇

performFetchWithCompletionHandler永远不会被解雇
EN

Stack Overflow用户
提问于 2013-08-19 22:02:48
回答 6查看 41.3K关注 0票数 61

1)我的plist配置,提供了backgroundmode:

代码语言:javascript
复制
<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
</array> 

2)在didFinishLaunchingWithOptions中,我有:

代码语言:javascript
复制
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:1.0];

3)我在委托中声明了协议UIApplicationDelegate

4)我实现了以下方法,但它从未触发过。(只有当我使用"XCode->Debug->Simulate fetch“来模拟Fetch时,它才能起作用。)

代码语言:javascript
复制
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

为什么?这是一个DP5测试版错误吗?我应该用雷达探测这个吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-08-19 22:06:48

我担心这很难在设备上调试,因为您不能保证在指定的时间内调用它。

setMinimumBackgroundFetchInterval表示在小于您指定的值的时间间隔内不调用它。但是这里没有setMaximumBackgroundFetchInterval。因此,如果iOS决定只调用你的应用程序一天一次,甚至一周一次,那么无论你的minimumBackgroundFetchInterval是什么,它都不会被更频繁地调用。AFAIK iOS决定何时调用performFetchWithCompletionHandler,由模式衡量,用户何时启动应用程序,以及启动应用程序的频率。

票数 39
EN

Stack Overflow用户

发布于 2013-10-18 01:47:21

在iOS模拟器中运行你的应用程序,在Xcode调试模式下,你可以从Xcode菜单中强制后台获取:

调试>模拟后台获取

可能适用于系留设备,但我最近没有尝试过。

票数 106
EN

Stack Overflow用户

发布于 2013-10-31 05:23:29

另一件需要检查的事情是您的plist文件。确保UIApplicationExitsOnSuspend键不存在。

Stack Overflow上的许多人建议使用该设置作为一种强制应用程序每次启动时重新启动的方式。这确实是可行的,但副作用是它阻止了新的iOS 7后台获取功能被触发。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18315771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档