Swift3 在“我的应用”中单击按钮时打开手机设置
我最近升级到Xcode 8,并将代码转换为Swift 3。我正在制作一个自定义键盘(扩展),它在iOS 9之前工作得非常好,但在iOS 10中我面临着几个问题Swift3 在“我的应用”中单击按钮时打开手机设置,swift3,ios10,emoji,custom-keyboard,Swift3,Ios10,Emoji,Custom Keyboard,我最近升级到Xcode 8,并将代码转换为Swift 3。我正在制作一个自定义键盘(扩展),它在iOS 9之前工作得非常好,但在iOS 10中我面临着几个问题 自定义键盘的容器应用程序包含一个按钮,可将用户引导到键盘设置以添加键盘 问题:此按钮单击在iOS 10中不起作用,即用户未被定向到设置。我已在项目中配置了URL方案,并尝试了以下代码: @IBAction func btnGetStarted(_ sender: AnyObject) { let settingsUrl = UR
@IBAction func btnGetStarted(_ sender: AnyObject) {
let settingsUrl = URL(string: UIApplicationOpenSettingsURLString)
if let url = settingsUrl {
UIApplication.shared.openURL(url)
}
}
还尝试:
@IBAction func btnGetStarted(_ sender: AnyObject) {
if let settingsURL = URL(string:"prefs:root=General&path=Keyboard/KEYBOARDS") {
UIApplication.shared.openURL(settingsURL)
}
}
let settingsUrl = NSURL(string:UIApplicationOpenSettingsURLString) as! URL
UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)
祝酒词:
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath){
let pbWrapped: UIPasteboard? = UIPasteboard.general
if let pb = pbWrapped {
if currentKeyboard == XXXXXX.emoji {
if let data = UIImagePNGRepresentation(dataEmoji[(indexPath as NSIndexPath).row]) {
pb.setData(data, forPasteboardType: "public.png")
self.makeToast(pasteMessage, duration: 3.0, position: .center)
}
}
} else {
var style = ToastStyle()
style.messageColor = UIColor.red
style.messageAlignment = .center
//style.backgroundColor = UIColor.whiteColor()
self.makeToast("To really enjoy the keyboard, please Allow Full Access in the settings application.", duration: 8.0, position: .center, title: nil, image: UIImage(named: "toast.png"), style: style, completion: nil)
}
}
我确实在stackoverflow上查看了一些解决方案,但没有一个对我有效,正如我之前所说,我的应用程序在除iOS 10之外的所有版本上都运行良好。
有人能帮我吗?@persianBlue:这是在Xcode8+iOS10上工作
UIApplication.shared.openURL(URL(string:UIApplicationOpenSettingsURLString)!)
ui应用程序开放设置surlstring
提供指向应用程序设置的链接。在iOS10之前,如果应用程序缺少settings.Bundle,它将链接到settings主页。日志将显示:
_BSMachError:(操作系统/内核)无效功能(20)
_BSMachError:(os/kern)名称无效(15)
如果您想链接到应用程序的设置,只需添加一个设置包即可
我还没有找到链接到手机设置主页的方法。如果你看到像@PersianBlue一样的白色屏幕,你的应用程序可能缺少自定义设置。 以下是有关
UIApplicationOpenSettingsURLString
的文档说明:
用于创建可传递给openURL(:)方法的URL。什么时候
打开根据此字符串构建的URL,系统将启动
设置应用程序并显示应用程序的自定义设置(如果有)
Swift 3 iOS 10
let settingsUrl = NSURL(string:UIApplicationOpenSettingsURLString) as! URL
UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)
我写了下面的函数,它对我有用。我会帮你们的
func openLocationSettings(){
let scheme:String=ui应用程序开放设置surlstring
如果let url=url(字符串:scheme){
如果可用(iOS 10,*){
UIApplication.shared.open(url,选项:[:],
completionHandler:{
(成功)在
打印(“打开\(方案):\(成功)”)
})
}否则{
让success=UIApplication.shared.openURL(url)
打印(“打开\(方案):\(成功)”)
}
}
}
这在iOS11中不再可能,我们可以打开如下设置:
if let url = URL(string:UIApplicationOpenSettingsURLString), UIApplication.shared.canOpenURL(url) {
//iOS 10 +
UIApplication.shared.open(url, options: [:], completionHandler:{ didOpen in
print("Opened \(didOpen)")
})
//iOS 9 +
UIApplication.shared.open(url)
}
@正如我在上面写的,我已经试过了,力的作用me@PersianBlue:你知道答案了吗,我也面临着同样的问题。@Raj_216不,我还没有找到解决方案。@PersianBlue:好的,我会在得到解决方案后发布它&如果你在我之前找到了,请也这样做。我已经试过了。这会将应用程序定向到手机设置应用程序,但它只是一个白色屏幕,在显示设置选项之前,应用程序会关闭,就像有些人不会受到崩溃的影响一样。从我升级到iOS 10那天起,我就面临着同样的崩溃。即使更新到iOS 10.0.2也无法解决此问题。此处的崩溃日志仅供参考:。希望有人能够提取实际发生的事情。openURL(url:url)在Swift 3中被弃用。你需要使用open(url:,options,completionHandler:)@PeterJohnson它在iOS 10中被弃用了,但是如果你的目标是iOS 10以外的任何东西,你需要继续使用
openUrl
我也尝试过这个,但它只是将我引导到一个空白屏幕。看起来你忘记了在didFinishLaunchingWithOptions中请求用户权限。检查itI在设置中添加的URL类型如下-。那么,在DidFinishLaunchingWithOptions中需要用户权限吗?因为它是swift 3,我认为您应该执行URL(string:UIApplicationOpenSettingsURLString)
而不是NSURL->URL case您找到链接手机设置的方法了吗?