后台任务执行无法按预期工作

时间:2015-06-02 19:19:12

标签: ios objective-c nsurlsession nsurlsessionuploadtask background-fetch

我需要通过点击远程通知中的可操作按钮来调用Web服务。

在远程通知上,我们有两个按钮“Details”和“Fetch”。 “获取”是一个后台操作(激活模式= UIUserNotificationActivationModeBackground),并将发送一些数据而不启动应用程序。

点击“获取”时,我发了一个网络服务电话,发送了一些我从远程通知中获得的详细信息。

我已经使用NSURLSession将这些数据发送到服务器。

NSURLSessionConfiguration * sessionConfiguration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:@“com.applewatch.sample”];

self.session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil];

NSURLSessionUploadTask *dataTask = [self.session uploadTaskWithRequest:mutableURLRequest fromData:nil];
[dataTask resume];

当应用处于活动状态但未处于挂起模式时,此工作正常。我在这里要说的是,一旦我们收到远程通知,并且如果在通知1小时后采取行动,则服务请求不会通过。

我怀疑,服务请求没有通过,因为应用程序处于挂起模式/终止模式。

有些人可以帮我解决如何在后台进行服务电话。

注意:我没有在info.plist中启用“后台提取”选项。

如果需要在UIApplication委托

中启用和实现服务调用,请告诉我

应用:performFetchWithCompletionHandler:

1 个答案:

答案 0 :(得分:1)

我之前无法回想起或找到我在哪里阅读此信息,但尝试使用

- uploadTaskWithRequest:fromFile:

我相信它是唯一可以在后台运行的上传方法