iOS background update and download by Wusheying
- (BOOL) Application: (uiapplication*) Application didfinishlaunchingwithoptions: (nsdictionary*) Launchoptions {
[ApplicationSetminimumbackgroundfetchinterval:Uiapplicationbackgroundfetchintervalminimum];
NSLog(@ "Launched in background%d",Uiapplicationstatebackground= = Application.applicationstate);
returnYES;
}
//1.UseBackground Fetch
- (void) Application: (uiapplication*) Application Performfetchwithcompletionhandler: (void (^)(Uibackgroundfetchresult)) Completionhandler {
nsurlsessionconfiguration*sessionconfiguration = [nsurlsessionconfigurationdefaultsessionconfiguration];
nsurlsession*session = [nsurlsessionsessionwithconfiguration: Sessionconfiguration];
Nsurl*url = [[NsurlAlloc]initwithstring:@ "Http://127.0.0.1/data.json"];
Nsurlsessiondatatask*task = [SessionDatataskwithurl: URL
Completionhandler:^(NSData*data,Nsurlresponse*response,Nserror*error) {
if(Error) {
Completionhandler (uibackgroundfetchresultfailed);
return;
}
Completionhandler (Uibackgroundfetchresultnewdata);
}];
[TaskResume];
}
//2.UseRemote Notification
/*
What to push
{
"APS": {
"Content-available": 1
},
"Content-id": 42
}
*/
- (void) Application: (uiapplication*) Application
Didreceiveremotenotification: (nsdictionary*) UserInfo
Fetchcompletionhandler: (void (^)(Uibackgroundfetchresult)) Completionhandler
{
NSLog(@ "Received remote notification with UserInfo%@", UserInfo);
NSNumber*contentid = userinfo[@ "Content-id"];
NSString*downloadurlstring = [NSStringstringWithFormat:@ "Http://yourserver.com/downloads/%d.mp3", [ContentIDIntvalue]];
Nsurl* DownloadURL = [Nsurlurlwithstring:d ownloadurlstring];
nsurlrequest*request = [nsurlrequestRequestwithurl:d Ownloadurl];
Nsurlsessiondownloadtask*task = [[ Selfbackgroundurlsession]downloadtaskwithrequest: request];
Task.taskdescription = [NSStringstringWithFormat:@ "Podcast episode%d", [ContentIDIntvalue]];
[TaskResume];
Completionhandler (Uibackgroundfetchresultnewdata);
}
- (nsurlsession*) backgroundurlsession
{
Staticnsurlsession*session =Nil;
Staticdispatch_once_tOncetoken;
dispatch_once(&oncetoken, ^{
NSString*identifier =@ "Io.objc.backgroundTransferExample";
nsurlsessionconfiguration* Sessionconfig = [nsurlsessionconfigurationbackgroundsessionconfiguration: identifier];
session = [nsurlsessionsessionwithconfiguration: Sessionconfig
Delegate: Self
Delegatequeue:[NsoperationqueueMainqueue]];
});
returnsession;}
iOS Background updates and downloads