Selene: Background Task Scheduler
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