2016-07-23 8 views
4

운동을 시작하려면 SiriKit을 사용하고 싶습니다. 운동을 시작하려면 앱 확장에서 기본 앱을 열어야합니다. 애플이 INStartWorkoutIntentHandling 핸들러 제공SiriKit의 INExtension에서 앱 시작

상용구는

func handle(startWorkout startWorkoutIntent: INStartWorkoutIntent, completion: (INStartWorkoutIntentResponse) -> Void) { 
    let userActivity = NSUserActivity(activityType: NSStringFromClass(INStartWorkoutIntent)) 
    let response = INStartWorkoutIntentResponse(code: .success, userActivity: userActivity) 
    completion(response) 
} 

가 어떻게 여기에서 내 자신의 응용 프로그램을 열 수있다? 이 확장 유형에 extensionContext 속성이있는 UIViewController이 없으므로 myapp://workout?action=start&name=pushupsThis answer과 같은 것이 적합하지 않은 것으로 보입니다.

마지막 관련 비트 : 다른 작업 (일시 중지, 종료)의 경우 기본 앱을 열지 않고 메인 앱에서 실행중인 운동을 일시 중지하는 것이 좋습니다. 비슷한 사용자 정의 URL을 사용하여 일시 중지 할 수 있지만 추가 불필요한 단계 인 앱이 열립니다. 앱을 열지 않고 INExtension에서 특정 작업을 수행하도록 기본 앱에 알리는 좋은 방법은 무엇입니까?

+0

Apple은 ['failureRequiringAppLaunch'] (https://developer.apple.com/reference/intents/instartworkoutintentresponsecode) 응답 코드를 정의했으며 이는 거의 Apple의 관점에서 볼 때 유스 케이스가 아님을 의미합니다. 앱 확장 프로그램에서 내 앱의 핵심 활용 사례를 다시 구현하도록 요구하는 것은 무리가 있다고 판단됩니다 (예 : 운동은 단순한 오디오 이상을 포함). 나는 사용자가 "Siri, 내 맞춤 어휘를 사용하여 MY-APP에서 10 분간의 상반신 운동을 시작하라"라고 말할 수있게하고 싶습니다. 그러면 앱에서 운동을 시작합니다. –

답변

0

후손 : Xcode 8 베타 3에서이 기능을 단계적으로 도입 한 것으로 Xcode 8 베타 3에서 해결되었습니다. .continueInApp 코드를 INStartWorkoutIntentResponseCode에이 버전에 추가했지만 거기에는 없었습니다. Xcode 8 beta 2.이 상태 코드는 NSUserActivity를 직접 전달할 수있게합니다 (URL 스키마를 사용할 필요가 없음).

+0

그런데 사용자가 앱을 선택하게하려는 경우 앱을 시작하지 않아도됩니다. 당신은 Siri를 통해 그것을 할 수 있습니다 –

+0

내 광고와 함께 운동을 보여주기 때문에 .continueInApp 일을 끝냈습니다. –