我正試圖在應用程序終止時通過NSURLSession進行快速POST。應用程序終止被定義爲當用戶在主屏幕上時將其刷出。此外,applicationWillTerminate被示範性地稱爲(所以這不是問題)。ApplicationWillTerminate NSURLSession可能嗎?
我的意圖是通知服務器該用戶現在正在離線。
但是,這不起作用..因爲我沒有收到我的後端POST。我試圖找出爲什麼這不起作用。或者即使它應該?根據蘋果文檔,這應該工作,如果它可以在5秒內執行..雖然我甚至沒有完成處理程序,所以它應該執行。任何幫助或建議將不勝感激。
我的實現如下(僅供參考)。
- (void)applicationWillTerminate:(UIApplication *)application {
NSMutableDictionary * gatherAllInputs = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
@"[email protected], @"emailEntry",
@"False", @"isPersonAvailable",
nil];
NSError *error;
NSData *gatherAllInputsJSON = [NSJSONSerialization dataWithJSONObject:gatherAllInputs options:0 error:&error];
NSString* theDataSentToServer;
theDataSentToServer = [[NSString alloc] initWithData:gatherAllInputsJSON encoding:NSUTF8StringEncoding];
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *postingSession = [NSURLSession sessionWithConfiguration:sessionConfiguration];
NSURL *url = [NSURL URLWithString:@"https://blahblahblah.com/someblah"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:[theDataSentToServer dataUsingEncoding:NSUTF8StringEncoding]];
NSURLSessionDataTask *postSomething = [postingSession dataTaskWithRequest:request];
[postSomething resume];
NSLog(@"Got here!"); //<-- THIS GETS OUTPUTTED.. SO I KNOW THIS CODE IS BEING CALLED!
}
此問題不重複。 ApplicationWillTerminate絕對是所謂的!這不是問題的一部分。問題是爲什麼NSURLSession沒有完成其POST。 – user330739 2015-02-11 22:58:16
好的,重新開放,對此感到抱歉。 – matt 2015-02-11 23:34:38