SiriKit, Como exibir resposta para iniciar o Workout Intent?
IntentHandler classe:
import Intents
class IntentHandler: INExtension, INStartWorkoutIntentHandling {
public func handle(startWorkout intent: INStartWorkoutIntent, completion: @escaping (INStartWorkoutIntentResponse) -> Void) {
let userActivity = NSUserActivity(activityType: NSStringFromClass(INStartWorkoutIntent.self))
let response = INStartWorkoutIntentResponse(code: .continueInApp, userActivity: userActivity)
completion(response)
}
//MARK: - INStartWorkoutIntentHandling
func confirm(startWorkout intent: INStartWorkoutIntent, completion: @escaping (INStartWorkoutIntentResponse) -> Void) {
completion(INStartWorkoutIntentResponse(code: .continueInApp, userActivity: nil))
}
}
A documentação da Apple diz:
A Siri abre o aplicativo, mas preciso exibir a interface do usuário no IntentUI. Como fazer isso?
Em outras palavras:Como se preparar para exibir a resposta, carregar a intenção da extensão da interface do usuário, preparar a interface e exibi-la no código?
IntentViewController classe:
import IntentsUI
class IntentViewController: UIViewController, INUIHostedViewControlling {
//MARK: - INUIHostedViewControlling
func configure(with interaction: INInteraction!, context: INUIHostedViewContext, completion: ((CGSize) -> Void)!) {
if let completion = completion {
completion(self.desiredSize)
}
}
var desiredSize: CGSize {
return self.extensionContext!.hostedViewMaximumAllowedSize
}
}
Base emesta tutorial é possível mesmo.