2017-10-01 11 views
0

내 watchOS 앱에서 새로운 "enableWaterLock"기능을 사용하고 싶지만 제대로 작동하지 않습니다. 이 기능에 대한 모든 조건을 충족하는 경우 그는 willActivate() 함수에 추가,enableWaterLock 사용

@IBAction func lockScreen() { 
    if #available(watchOSApplicationExtension 4.0, *) { 
     WKExtension.shared().enableWaterLock() 
    } 
} 

잠금 화면() 메뉴 버튼에서 호출됩니다

여기 내 코드입니다. 문서에서

//Screen Lock 
    if #available(watchOSApplicationExtension 4.0, *) { 
     if WKInterfaceDevice.current().waterResistanceRating == .wr50 { 
      addMenuItem(with:.block, title: "Lock Screen", action: #selector(lockScreen)) 
     } 
    } 

는 말한다 :

다음과 같은 규칙이 물 잠금 장치를 사용할 때 적용

앱이 기간 동안 포 그라운드에서 실행 중일 때
  • 당신은 물 잠금을 활성화 할 수 있습니다 적극적인 운동 또는 위치 세션.
  • 지원되는 장치에서 앱을 실행해야합니다 (WKInterfaceDevice 개체의 waterResistanceRating 속성은 에서 wr50으로 설정해야 함).
  • 워터 락은 사용자가 잠금 해제 할 때까지 활성 상태를 유지합니다. 프로그래밍 방식으로 시계를 잠금 해제 할 수 없습니다.

그래서 내 시계 앱이 아니며 적극적인 운동이나 위치 세션이라고 생각합니다. 이 두 가지 중 하나가되기 위해 필요한 것은 무엇입니까? 내 응용 프로그램에서 locationManager를 사용하지만 분명히 충분하지 않습니다.

답변

0

당신은 HKWorkoutSession 객체

let workoutConfiguration = HKWorkoutConfiguration() 
workoutConfiguration.activityType = HKWorkoutActivityType.swimming 
workoutConfiguration.swimmingLocationType = HKWorkoutSwimmingLocationType.pool 
workoutConfiguration.lapLength = HKQuantity(unit: .yard(), doubleValue: 25) 

do { 
    var workoutSession = try HKWorkoutSession(configuration: workoutConfiguration) 
    workoutSession?.delegate = self   
    healthStore.start(workoutSession!) 
} catch { 
    // ... 
} 

당신은 watch the Apple example from WWDC at 6:23 운동 세션을 생성하고 물 잠금을 가능하게 애플의 전체 예제를 볼 수 있습니다을 만들어야합니다.