Функция регистра выглядит следующим образом.
static NSString* TaskID = @"com.SO.apprefresh";
-(void)configure {
[[BGTaskScheduler sharedScheduler] registerForTaskWithIdentifier:TaskID
usingQueue:nil
launchHandler:^(BGTask *task) {
[self scheduleLocalNotifications];
[self handleAppRefreshTask:task];
}];
}
-(void)scheduleLocalNotifications {
//do things
}
-(void)handleAppRefreshTask:(BGTask *)task {
//do things with task
}
Подпись быстрого закрытия преобразуется из:
{ task in
//....
}
в подпись блока Objective C:
^(BGTask *task) {
//...
}
А другая функция выглядит следующим образом.
-(void)scheduleAppRefresh {
BGAppRefreshTaskRequest *request = [[BGAppRefreshTaskRequest alloc] initWithIdentifier:TaskID];
request.earliestBeginDate = [NSDate dateWithTimeIntervalSinceNow:2*60];
NSError *error = NULL;
BOOL success = [[BGTaskScheduler sharedScheduler] submitTaskRequest:request error:&error];
if (!success) {
NSLog(@"Failed to submit request: %@",error);
}
}
Любая бросающая функция в Swift
func submit(_ taskRequest: BGTaskRequest) throws
Всегда преобразуется в функцию, которая возвращает BOOL
и передает ошибку по ссылке.
- (BOOL)submitTaskRequest:(BGTaskRequest *)taskRequest error:(NSError **)error