【问题标题】:How to prevent apple watch app resign to background swiftui如何防止苹果手表应用程序退出后台swiftui
【发布时间】:2020-04-14 05:52:53
【问题描述】:

我正在开发一个类似培训的应用程序,其中开始的会话应该使应用程序保持焦点。大约 5 分钟后,我没有抬起手腕,它退出后台,手表显示标准并发症。该应用程序仍在运行,但我必须在“dock”中找到它

关于如何防止应用在会话期间失去焦点有什么想法吗?我不需要打开屏幕,但我需要应用程序在我抬起手腕时显示统计信息/按钮。 我找到了 applicationWillResignActive() 但这似乎没有任何功能可以防止这种情况发生。

【问题讨论】:

    标签: xcode swiftui watchkit


    【解决方案1】:

    我认为您需要的是使用扩展运行时会话,我认为这是在 watchOS 6 中引入的。

    扩展的运行时会话要求您专门列出您的会话类型,我认为在您的情况下符合“物理治疗”的条件。您将在项目设置的背景模式部分中进行选择

    也就是说,由于我不知道该应用将用于什么活动,因此如果该活动被认为是费力的,它也可能不符合条件。在这种情况下,请注意 HKWorkoutSession,我相信它会将锻炼视为默认锻炼应用程序,但我不确定这是否是您想要的。

    如果您想使用扩展的运行时会话,您可以:

    1. 将会话初始化为WKExtendedRuntimeSession()
    2. 分配会话代表 (WKExtendedRuntimeSessionDelegate)
    3. 使用extendedRuntimeSessionDidStart(_ extendedRuntimeSession: WKExtendedRuntimeSession) 等委托函数来处理会话何时处于活动状态。

    别忘了session.start 在需要时开始会话。

    这里有一些可以进一步帮助的信息:https://developer.apple.com/documentation/watchkit/using_extended_runtime_sessions

    【讨论】:

      【解决方案2】:

      感谢 vincent,我为此找到了正确的苹果文档。

      通过将其包装在 WKHostingController 中,使其与 SwiftUI 视图一起使用。正如所见,我刚刚将 HKWorkoutSession 注入到 SwiftUI 视图中。然后,我从 onAppear 和 onDissapear 视图内部开始和停止。 如果其他人正在努力寻找解决方案,请发布。请注意,以下只是一个概念。

      https://developer.apple.com/documentation/healthkit/hkhealthstore

      class ExerciseInterfaceController: WKHostingController<Plank>  {
      var ed = (WKExtension.shared().delegate as! ExtensionDelegate)
      let ws: HKWorkoutSession
      override init() {
      
          let hs = HKHealthStore()
                 let cnf = HKWorkoutConfiguration()
                  cnf.activityType = .mindAndBody. //just for debugging
                  cnf.locationType = .indoor 
      
                 do {
                     ws = try HKWorkoutSession(healthStore: hs, configuration: cnf)
                 } catch {
                    fatalError(error.localizedDescription)
                 }
      
      }
      override var body: Plank {
          return Plank(workoutsession: ws)
      }
      

      【讨论】:

        猜你喜欢
        • 2011-06-16
        • 1970-01-01
        • 2019-03-12
        • 1970-01-01
        • 2022-07-27
        • 1970-01-01
        • 2013-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多