我遇到的麻烦是需要通过从服务器获取数据来偶尔进行一次更新。
我正在尝试从手表中获取数据。我是通过安排WKRefreshBackgroundTask
来实现的。当此任务触发时,我启动URL会话以从服务器获取一些JSON数据。
成功获取数据后,我通过调用WKApplicationRefreshBackgroundTask
来完成setTaskCompletedWithSnapshot(false)
。
这一切似乎都可以正常工作,但是,我宁愿在WKURLSessionRefreshBackgroundTask
之后创建一个WKApplicationRefreshBackgroundTask
来在后台下载它,并在后台任务中花费更少的时间。我认为这是不可能的,我没有下载或上传文件。如果我正确理解带有WKURLSessionRefreshBackgroundTask
的{{1}},只能用于URLSessionConfiguration.background(withIdentifier:)
或URLSessionUploadTask
s,那么我就不得不忘记这个想法。 (如果我误解了,请纠正我。)
现在我遇到的最大问题是,当手表被锁定(从手腕上取下,放在充电座上等)时,URL请求未执行。因此,数据不会被更新。我们应该如何处理呢?当手表锁定时,并且解锁手表后,活动编译只会变得暗起来。我们是否可以做些什么来了解手表是否已锁定/未锁定?
使用URLSessionDownloadTask
从手表中获取数据是否是正确的方法,还是唤醒手机并使用WKApplicationRefreshBackgroundTask
使电话请求数据更好?如果是这样:您将使用哪些WatchConnectivity
函数来实现这一目标?
如果直接从Watch上获取数据是一种方法:我可以将WCSessionDelegate
设置为在请求完成之前完成,还是应该等到请求完成之后? (即应该在什么时间调用WKApplicationRefreshBackgroundTask
)。
我阅读了大量的文章,并观看了多个视频。但是,我仍然很难找到正确的体系结构,以便从服务器获取编译数据并获得可靠的工作。
希望有人能对此事有所启发。