Skip to content

Instantly share code, notes, and snippets.

@RameshRM
Last active March 8, 2022 14:36
Show Gist options
  • Star 29 You must be signed in to star a gist
  • Fork 7 You must be signed in to fork a gist
  • Save RameshRM/8ca0a1be512520a5240e to your computer and use it in GitHub Desktop.
Save RameshRM/8ca0a1be512520a5240e to your computer and use it in GitHub Desktop.
Swift Background Fetch
Step 1: Enable capabilities "background fetch"
Step2 : Setup AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
let settings = UIUserNotificationSettings(forTypes: UIUserNotificationType.Alert, categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(settings)
UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
return true;
}
Step 3: Register application event in AppDelegate.swift, to register completion handler
func application(application: UIApplication, performFetchWithCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
println("Complete");
completionHandler(UIBackgroundFetchResult.NewData)
getData();
}
func getData() -> Void{
var url = "http://api.rottentomatoes.com/api/public/v1.0/lists/movies/box_office.json?apikey=xxxxxx&limit=20";
var request = NSURLRequest(URL: NSURL(string: url));
NSURLConnection.sendAsynchronousRequest(request,queue: NSOperationQueue.mainQueue()) {
(response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
var moviesResult = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil) as NSDictionary;
var movies: [NSDictionary]=[];
movies = moviesResult["movies"] as [NSDictionary];
var localNotification:UILocalNotification = UILocalNotification()
localNotification.alertAction = "Testing notifications on iOS8"
localNotification.alertBody = "Movie Count : \(movies.count)"
localNotification.fireDate = NSDate(timeIntervalSinceNow: 1)
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
}
}
@notNewlyBorn
Copy link

@daniel-goldman @bstien Can we please have a correct version of the code? Thanks in advance :)

@m760622
Copy link

m760622 commented Mar 6, 2018

This ia for swift 3 not 4
what to do?

@m-montoya
Copy link

Though this is all quite old, for anyone else wondering about @daniel-goldman comment, getData() should be changed over to

func getData(_ completion: () -> Void) { completion() }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment