ios - 后台任务执行未按预期进行

标签 ios objective-c nsurlsession nsurlsessionuploadtask background-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 中启用“Background Fetch”选项。

让我知道是否需要在 UIApplication 委托(delegate)中启用和实现服务调用

应用程序:performFetchWithCompletionHandler:

最佳答案

我无法记忆或再次找到我之前在哪里阅读过此信息,但请尝试使用

- uploadTaskWithRequest:fromFile:

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

关于ios - 后台任务执行未按预期进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30604757/

相关文章:

ios - 自定义对象数组的 JSONSerialization

ios - 交互式关闭模态时出现故障

objective-c - applicationWillTerminate 不会被调用

ios - URlRequest.httpBody 在 startLoading() 方法中是 nil swift 3.0 中的 URLProtocol

ios - 发布请求未响应

ios - Xcode 13.1 + MacOS Monterey (12.0.1) + M1 芯片 (8gb) + 构建时间 + 系统挂起

ios - 从 Collection View 中删除项目后出现标签问题

objective-c - 如何将整数与 Objective-C 枚举进行比较

ios - 淡出 NavigationBar 标题

swift - 低分辨率图像加载时间过长