如何在swift中以编程方式关闭siri UI扩展

时间:2017-02-28 06:29:34

标签: sirikit

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

0 个答案:

没有答案