【问题标题】:Running a Task triggered by Apple Watch运行由 Apple Watch 触发的任务
【发布时间】:2022-12-18 19:38:53
【问题描述】:

我有一个应用程序,它使用 URLSession 请求收集一些数据。这些请求不能并行运行,因为我需要一个请求的响应来触发下一个请求。整个过程最多可能需要 30 秒。在 iPhone 上,使用后台任务可以正常工作...

现在我想使用 Apple Watch 触发它,但是一旦应用程序进入“非活动”状态(显示屏变暗),一切都会停止。当我保持显示屏开启并且应用程序处于活动状态时,它运行良好......

解决这个问题的最佳方法是什么,或者甚至没有办法解决这个问题?

【问题讨论】:

    标签: swift watchkit watchos


    【解决方案1】:

    如果您希望 Apple Watch 应用程序在显示屏变暗时继续在后台运行,您可以使用后台 WKRefreshBackgroundTask 来保持应用程序处于活动状态。这将允许应用程序继续运行并发出 URL 请求,即使在显示屏关闭时也是如此。

    要使用 WKRefreshBackgroundTask,您首先需要使用 WKExtension 单例注册任务,如下所示:

    let task = WKRefreshBackgroundTask.register(with: .immediate,
                                                expirationHandler: {
                                                    // Code to execute when the task expires
                                                })
    

    在此示例中,WKRefreshBackgroundTask 注册为立即模式,这意味着只要用户保持显示,应用程序将继续在后台运行。您还可以使用计划模式指定任务到期的具体时间,或使用延迟模式指定任务到期的时间间隔。

    注册任务后,您可以使用它来保持应用程序在后台运行并发出 URL 请求。当任务完成或过期时,您需要在任务对象上调用 setTaskCompleted 方法,如下所示:

    task.setTaskCompleted()
    
    

    这将向系统发出信号,表明任务已完成,应用程序可以暂停。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-04
      • 2018-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      相关资源
      最近更新 更多