我创建了siri扩展程序包含UI,因为通过url方案打开我的应用程序的方式仅适用于UI扩展,但不适用于siri扩展。像这样:
func configure(with interaction: INInteraction!, context: INUIHostedViewContext, completion: ((CGSize) -> Void)!) {
// Do configuration here, including preparing views and calculating a desired size for presentation.
let finIntent = interaction.intent as? INSendMessageIntent
if finIntent?.content != nil{
open(scheme: "fin://ju/"+(finIntent?.content)!)
}
else{
open(scheme: "fin://ju/open")
}
if let completion = completion {
completion(self.desiredSize)
}
}
func open(scheme: String) {
if let url = URL(string: scheme) {
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:],
completionHandler: {
(success) in
print("Open \(scheme): \(success)")
})
} else {
let success = UIApplication.shared.openURL(url)
}
}
}
它可以工作,但下次打开siri时,它会自动加载扩展UI并再次调用此配置方法,因此将在没有参数的情况下再次打开我的应用程序。 我想也许这是因为UI扩展没有得到用户操作所以我需要在以编程方式打开我的应用程序后关闭它。但谁知道怎么做? 谢谢!