美文网首页iOS基础扩展iOS Developer
iOS——打开系统设置时的错误信息:_BSMachError

iOS——打开系统设置时的错误信息:_BSMachError

作者: DamonLu | 来源:发表于2017-02-10 10:18 被阅读51次
    问题描述

    在应用中请求定位来获取当前位置的信息,如果用户拒绝了定位,那么需要通过UIAlertController弹出调到系统设置界面来进行授权定位。
    代码如下:

    if !CLLocationManager.locationServicesEnabled() || CLLocationManager.authorizationStatus() == .denied {
        let alertController = UIAlertController(title: "定位权限被拒绝", message: "请到设置中允许定位", preferredStyle: .alert)
        let setAction = UIAlertAction(title: "设置", style: .default, handler: { (action) in
        UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
        })
        let cancelAction = UIAlertAction(title: "取消", style: .cancel, handler: nil)
        alertController.addAction(cancelAction)
        alertController.addAction(setAction)
        present(alertController, animated: true, completion: nil)
        return
    }
    

    在打开系统设置界面的时候,控制台打印了错误信息:

    _BSMachError: (os/kern) invalid capability (20)
    _BSMachError: (os/kern) invalid name (15)
    
    解决办法

    目前的解决办法是,使用多线程来调用:

    DispatchQueue.main.async {                    
        UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
    }
    

    相关文章

      网友评论

        本文标题:iOS——打开系统设置时的错误信息:_BSMachError

        本文链接:https://www.haomeiwen.com/subject/pnkgittx.html