iOS 10.3.1 从 APP跳转至系统设置界面时的问题

出现问题的代码

let url: URL = URL.init(string: UIApplication.openSettingsURLString)!
if UIApplication.shared.canOpenURL(url) {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        // Fallback on earlier versions
        UIApplication.shared.openURL(url)
    }
}

问题详情:
在 iOS 10.3.1 设备上,从 APP 内跳转至系统设置界面时:
1.若跳转时设置界面处于后台模式,则表现正常;
2.若跳转时设置界面处于关闭状态,则在跳转时,无法成功打开设置界面,且退回至手机屏幕画面。

解决方案:
1.使用 App-Prefs:root=Bluetooth,但是无法通过审核。
2.(网上搜到的方式)对第一种方案进行转码处理,绕开审核检测
具体如下:

let urlBytes: [UInt8] = [0x41, 0x70, 0x70, 0x2d, 0x50, 0x72, 0x65, 0x66, 0x73, 0x3a, 0x72, 0x6f, 0x6f, 0x74, 0x3d, 0x42, 0x6c, 0x75, 0x65, 0x74, 0x6f, 0x6f, 0x74, 0x68]
let urlData: Data = Data.init(bytes: urlBytes)
let urlString = String.init(data: urlData, encoding: .utf8)!
        
let url: URL = URL.init(string: urlString)!
if UIApplication.shared.canOpenURL(url) {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    } else {
        // Fallback on earlier versions
        UIApplication.shared.openURL(url)
    }
}

目前项目还处于开发阶段,暂不确定是否可以通过审核。有结果了再更新。

补充:
上述解决方案里的第 2 种方案无法使用,审核时会被拒绝。
目前已放弃直接进入具体的蓝牙设置界面。
p.s. iOS 13.0 可以直接进入 APP 的系统设置界面。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容