ios - 是否有非公共 URL 方案 (App-Prefs:root=LOCATION_SERVICES) 的替代方法来打开 iOS 上的系统设置?
问题描述
截至 2018 年 7 月,Apple 似乎不再接受App-Prefs:root
URL 方案的使用。请在标记为重复之前阅读以下内容,因为许多答案已过时或不合适。
问题描述我目前显示一个警报,以方便用户在电话级别激活位置。这是一个强烈的用户体验问题。也就是设置->隐私->定位服务
不幸的是,我的应用程序已被拒绝,因为我使用了非公共 API URL 方案 App-Prefs:root=LOCATION_SERVICES
我知道我不能使用这个非公共方案,但有什么替代方案?
事实上,当我停用位置并打开苹果“地图”应用程序时,它会打开非法计划所针对的位置设置。(谷歌地图也是如此)如果苹果或谷歌工程师仍然设法打开手机位置设置,那么这意味着有一种支持的方法可以这样做。
其他设法在电话级别直接访问位置服务的应用程序:
- ZARA(Inditex 公司)
- 生活360
- 寻找朋友(苹果公司)
过时或不适当的答案表明:
- using app-settings:root // 它会打开我自己的应用设置
- using UIApplicationOpenSettingsURLString // 同样 1.
- using App-Prefs:root // prefs:root // 和我一样的问题
- 使用 // Too bad for user experience 删除代码的和平
对于 1. 和 2. 请查看显示当前答案不合适的屏幕截图:
请在下面找到二进制被拒绝的消息:
您的应用使用“prefs:root=”非公共 URL 方案,这是一个私有实体。App Store 不允许使用非公共 API,因为如果这些 API 发生变化,可能会导致糟糕的用户体验。
在未来提交此应用程序时继续使用或隐藏非公开 API 可能会导致您的 Apple Developer 帐户被终止,以及从 App Store 中删除所有相关应用程序。
我今天还向 Apple Developer Technical Support 提出了请求。
重现步骤
在审查二进制文件时,苹果现在会拒绝下面的代码和平。
func showAlertGeo() {
let alertController = UIAlertController (title: "Location not active", message: "To use all the feature of this app, please activate location on your phone.", preferredStyle: .alert)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alertController.addAction(cancelAction)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
if UIApplication.shared.canOpenURL(URL(string:"App-Prefs:root=LOCATION_SERVICES")!) {
if #available(iOS 10.0, *) {
UIApplication.shared.open(URL(string:"App-Prefs:root=LOCATION_SERVICES")!, completionHandler: nil)
} else {
// Fallback on earlier versions
UIApplication.shared.openURL(URL(string:"App-Prefs:root=LOCATION_SERVICES")!)
}
}
}
alertController.addAction(settingsAction)
present(alertController, animated: true, completion: nil)
}
解决方案
推荐阅读
- flutter - 在 Flutter 的 TextPainter 中,文本颜色在调试和发布时有所不同
- typescript - 如何在带有打字稿的Vue中使用变量值作为占位符
- php - Codeigniter SQL Server [您在 config/database.php 文件中指定了无效的数据库连接组(默认)。]
- java - 根据给定的频率将日期拆分为相等的间隔
- rubygems - 在 cataline macos 上安装 therubyracer gem 时出错
- python - pandas dataframe - 如何找到满足某些条件的连续行?
- javascript - JavaScript - 将数组中的每 3 个项目包装到 div
- python - 我的 python 文件如何访问已安装的库 (Pip)
- sql - 如果某些列重复,如何使用第二行值更新第一行
- python - 使用按钮更新 dash 数据表