【发布时间】:2015-09-22 15:05:33
【问题描述】:
我为 iOS 上的后台提取创建了一个测试应用。它通过调试在模拟器上正常工作 - >模拟后台获取。但在装有 iOS 8 的设备上,它每天只调用一次。如何强制 iOS 更频繁地调用它?
这是我的步骤和代码:
1) 项目->能力->后台模式->后台获取
2) 应用代理:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[UIApplication sharedApplication] setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
}
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
[[UIApplication sharedApplication] cancelAllLocalNotifications];
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
NSDate *now = [NSDate date];
localNotification.fireDate = now;
localNotification.alertBody = [NSString stringWithFormat:@"Background fetch!"];
localNotification.soundName = UILocalNotificationDefaultSoundName;
NSInteger number = [UIApplication sharedApplication].applicationIconBadgeNumber;
number++;
localNotification.applicationIconBadgeNumber = number;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
completionHandler(UIBackgroundFetchResultNewData);
}
每次调用后台提取时都会出现本地通知。
【问题讨论】:
-
从来没有打过电话或一天打过一次电话,是什么?你的两个陈述完全相互矛盾。你不能强制它什么时候发生,操作系统决定它什么时候发生,如果操作系统每天调用一次,那么它就可以工作。调用的时间和频率取决于应用设备的使用情况。
-
您希望多久调用一次后台提取?
-
@MartinH 对这种矛盾感到抱歉,我的意思是它只调用一次,并且永远不会调用更多
-
@BlackFrog 至少第二次 :)
标签: ios objective-c iphone background-fetch