Я пытаюсь обновить услугу моего приложения на Apple Watch. Но handleBackgroundTasks: метод не вызывается.
Когда приложение входит в фоновый режим, у меня есть
-(void)applicationDidEnterBackground {
//update the complications
[self updateComplicationData];
//schedule the next time the complications should be updated
[self scheduleNextComplicationBackgroundRefreshTask];
}
, который вызывает этот метод для планирования обновления усложнения
-(void)scheduleNextComplicationBackgroundRefreshTask{
NSDictionary *backgroundRefreshUserInfo = @{@"reason": @"Bakcground Complication Refresh"};
NSDate * fireDate = [NSDate dateWithTimeIntervalSinceNow: (NSTimeInterval) 60];
//scheduling the refresh
[[WKExtension sharedExtension] scheduleBackgroundRefreshWithPreferredDate:fireDate userInfo:backgroundRefreshUserInfo scheduledCompletion:^(NSError *error){
if (error == nil) {
NSLog(@"successfully scheduled background refresh task");
} else {
NSLog(@"unable to schedule background refresh task, error:%@", error);
}
}];
}
Я получаю «успешно запланированный фоновый refre sh задача "сообщение после вызова этого метода. Но тогда мой handleBackgroundTasks: метод никогда не вызывается.
-(void)handleBackgroundTasks:(NSSet<WKRefreshBackgroundTask *> *)backgroundTasks{
NSLog(@"Handle background task is called");
for (WKRefreshBackgroundTask *task in backgroundTasks) {
if ([[WKExtension sharedExtension] applicationState] == WKApplicationStateBackground) {
// Background Refresh
if ([task isKindOfClass:[WKApplicationRefreshBackgroundTask class]]){
NSDictionary *userInfo = (NSDictionary *)[task userInfo];
if ([[userInfo objectForKey:@"reason"] isEqualToString:RESEAON_BACKGROUND_REFRESH]) {
[self updateComplicationData];
[self scheduleNextComplicationBackgroundRefreshTask];
}
}else if ([task isKindOfClass:[WKWatchConnectivityRefreshBackgroundTask class]]) {
}else if ([task isKindOfClass:[WKSnapshotRefreshBackgroundTask class]]){
}else if ([task isKindOfClass:[WKURLSessionRefreshBackgroundTask class]]) {
}
}
[task setTaskCompleted];
}
}