我创建了包含 UI 的 siri 扩展,因为通过 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 扩展没有得到用户操作,所以我需要在以编程方式打开我的应用程序后关闭它。但有人知道怎么做吗?谢谢 !