在 swift 3.0 中从我的键盘扩展打开我的应用程序 [英] Open My application from my keyboard extension in swift 3.0
问题描述
我正在尝试从我的键盘扩展中打开.我有自定义键盘,并且已从设置中添加该键盘.在我的自定义键盘上有一个显示更多"按钮,我想点击这个按钮打开我的应用.
I am trying to open from my keyboard extension. I am having custom keyboard and I have add that keyboard from setting. On my custom keyboard there is one button "Show More", and I want to open my app on this button click.
所以我尝试了以下代码:
So I have tried following code :
let context = NSExtensionContext()
context.open(url! as URL, completionHandler: nil)
var responder = self as UIResponder?
while (responder != nil) {
if responder?.responds(to: Selector("openURL:")) == true {
responder?.perform(Selector("openURL:"), with: url)
}
responder = responder!.next
}
它运行成功,但正如我们在 swift 中所知 Selector("method_name:")
已被弃用并使用 #selector(classname.methodname(_:))
相反,它发出警告.我想解决这个警告.所以我尝试过 Xcode 自动建议:
It is working successfully, but as we know in swift Selector("method_name:")
is deprecated and use #selector(classname.methodname(_:))
instead so it is giving warning. And I want to solve that warning. So I have tried as Xcode automatically suggested :
if responder?.responds(to: #selector(UIApplication.openURL(_:))) == true {
responder?.perform(#selector(UIApplication.openURL(_:)), with: url)
}
也试过:
if responder?.responds(to: #selector(NSExtensionContext.open(_:))) == true {
responder?.perform(#selector(NSExtensionContext.open(_:)), with: url)
}
我也尝试了其他可能的方法,但没有运气.如果有人知道怎么做,请告诉我.
I have also tried others possible ways, but no luck. If anyone know how to do, please let me know.
我参考了这个链接,Julio Bailon 的回答:
I referred this link, Julio Bailon’s answer :
openURL 在 Action Extension 中不起作用
推荐答案
Swift 5.0:
打开托管应用程序的 Info.plist.
Open Info.plist of hosting app.
- 添加网址类型 -> Item 0 -> Url Schemes -> Item 0 : "yourappname"
- 添加Url Types -> Item 0 -> Url Schemes -> URL Identifier:你的包id"
转到键盘应用程序:
正确添加以下代码:
@objc func openURL(_ url: URL) {
return
}
func openApp(_ urlstring:String) {
var responder: UIResponder? = self as UIResponder
let selector = #selector(openURL(_:))
while responder != nil {
if responder!.responds(to: selector) && responder != self {
responder!.perform(selector, with: URL(string: urlstring)!)
return
}
responder = responder?.next
}
}
调用:openApp("yourappname://your bundle id")
Call : openApp ("yourappname://your bundle id")
这篇关于在 swift 3.0 中从我的键盘扩展打开我的应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!