簡體   English   中英

如何防止apple watch app退出后台 swiftui

[英]How to prevent apple watch app resign to background swiftui

我正在開發一個類似培訓的應用程序,其中啟動的 session 應該使應用程序保持專注。 大約 5 分鍾沒有抬起我的手腕后,它退回到背景,手表顯示標准並發症。 該應用程序仍在運行,但我必須在“停靠欄”中找到它

關於如何防止應用程序在 session 期間失去焦點的任何想法? 我不需要打開屏幕,但我需要應用程序在我抬起手腕時顯示統計數據/按鈕。 我找到了applicationWillResignActive()但這似乎沒有任何功能可以防止這種情況發生。

我認為您需要的是使用擴展的運行時會話,我認為它是在 watchOS 6 中引入的。

延長的運行時會話要求您專門列出您的 session 類型,我認為在您的情況下符合條件,作為“物理治療”。 您要在項目設置的背景模式部分中進行選擇

也就是說,由於我不知道該應用程序將用於什么活動,如果該活動被認為是劇烈活動,它也可能不符合條件。 在那種情況下,請注意HKWorkoutSession ,我相信它有點像默認鍛煉應用程序一樣對待鍛煉,但我不確定這是否是您想要的。

如果要使用擴展的運行時會話,您可以:

  1. 將 session 初始化為WKExtendedRuntimeSession()
  2. 分配 session 的委托( WKExtendedRuntimeSessionDelegate
  3. 使用extendedRuntimeSessionDidStart(_ extendedRuntimeSession: WKExtendedRuntimeSession)類的委托函數來處理 session 何時處於活動狀態。

不要忘記session.start在需要時啟動 session。

以下是一些可以提供進一步幫助的信息: https://developer.apple.com/documentation/watchkit/using_extended_runtime_sessions

感謝文森特,我為此找到了正確的蘋果文檔。

通過將其包裝在 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)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM