watchkit - 未关闭应用程序时未调用 WatchOS 后台 URLSession 句柄(_:)(降低手腕)
问题描述
我正在尝试创建一个 Watch-App 来下载数据(大约 30 MB)。
因此,我创建了一个具有如下背景配置的 URLSession:
let config = URLSessionConfiguration.background(withIdentifier: "<some-id>")
self.session = URLSession(configuration: config, delegate: self, delegateQueue: .main)
然后开始下载:
let request = URLRequest(url: "<some-url>", method: .GET)
self.task = session.downloadTask(with: request)
self.task.resume()
由于用户不会盯着手表看 5 分钟,我想在下载完成时通过一些触觉反馈通知他。因此,我想使用handle(_:)
ExtensionDelegate 的功能。WKURLSessionRefreshBackgroundTask
根据文档,下载完成时应该使用 a 调用它:
当发生以下任何事件时,系统会创建一个后台 URLSession 任务: 需要进行身份验证才能完成后台传输。与会话标识符关联的所有后台传输都已完成(成功或不成功)。https://developer.apple.com/documentation/watchkit/wkurlsessionrefreshbackgroundtask
仅当我关闭我的应用程序(按下表冠)时才调用此handle(_:)
方法,而不是在我降低手腕锁定屏幕时调用。
我还注意到,如果我再看一下手表,回调urlSession(.. didWriteData ..)
就不再起作用了。
我是否遗漏了什么,或者这甚至是预期的行为?我正在安装 WatchOS 5 的真正 Apple-Watch Series 4 上进行测试。
解决方案
推荐阅读
- python - Python txt 文件
- r - 在 R 中使用 dplyr 将值 0 添加到数据中
- ios - 有没有办法在 Azure DevOps 中嵌入 ios 构建框架?
- r - 在 R 中,为什么我的 Excel 表格组织得当
- python - 使用 Python 选择和重新排列 HTML 元素
- linux-kernel - 通过内核和用户空间共享 I2C 驱动程序
- r - 在 R 中自动创建数据库
- azure - MS PowerPlatform:通过流使用 Azure 数据湖中的数据
- javascript - NSB AppStudio - 本地存储中未显示图像
- c# - 一种在列表视图中动态显示设备状态的方法