Selene is an iOS library which schedules the execution of tasks on a background fetch.
Add to your Podfile:
pod Selene
You can also add this repo as a submodule and copy everything in the Selene folder into your project.
1) Add the fetch
background mode in your app’s Info.plist
file.
2) Create a task
A task must conform to SLNTaskProtocol
. For example:
@interface SampleTask: NSObject<SLNTaskProtocol>
@end
@implementation SampleTask
+ (NSString *)identifier {
return NSStringFromClass(self);
}
+ (NSOperation *)operationWithCompletion:(SLNTaskCompletion_t)completion {
NSOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
// Do some work ....
completion(UIBackgroundFetchResultNoData);
}];
return operation;
}
+ (CGFloat)averageResponseTime {
return 5.0;
}
+ (SLNTaskPriority)priority {
return SLNTaskPriorityLow;
}
@end
3) Add the task class to the scheduler
NSArray *tasks = @[[SomeTask class]];
// Run the scheduler every 5 minutes
[SLNScheduler setMinimumBackgroundFetchInterval:60 * 5];
// Add the tasks
[SLNScheduler scheduleTasks:tasks];
In the application delegate:
- (void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
[SLNScheduler startWithCompletion:completionHandler];
}
Interested? Here's the blog post