从其他应用打开"设置"应用

Fel*_*v.- 166 iphone objective-c appsettings application-settings ios

好吧,我知道有很多问题,但它们都来自很久以前.

所以.我知道这是可能的,因为地图应用程序可以做到这一点.

在地图应用程序中,如果我关闭此应用程序的本地化,它会向我发送一条消息,如果我按好,"设置应用程序"将打开.我的问题是,这怎么可能?如何从我自己的应用程序中打开"设置应用程序"?

基本上我需要做同样的事情,如果用户关闭我的应用程序的位置,那么我会给他一条消息,说明会打开"设置应用程序"

Joe*_*Joe 268

正如提到卡兰杜阿这是现在可以在iOS8上的使用UIApplicationOpenSettingsURLString苹果公司的文档.

例:

Swift 4.2

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)
Run Code Online (Sandbox Code Playgroud)

在Swift 3中:

UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)
Run Code Online (Sandbox Code Playgroud)

在Swift 2中:

UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)
Run Code Online (Sandbox Code Playgroud)

在Objective-C中

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Run Code Online (Sandbox Code Playgroud)

在iOS 8之前:

你不能.正如你所说,这已被多次覆盖,并且弹出要求你打开位置服务是由Apple提供的,而不是由应用程序本身提供.这就是为什么它能够打开设置应用程序.

以下是一些相关的问题和文章:

是否可以使用openURL打开设置应用程序?

以编程方式打开设置应用程序(iPhone)

如何在用户按下按钮时打开"设置"应用程序?

iPhone:从应用程序打开应用程序首选项面板

通过单击应用程序首选项中的条目打开UIPickerView - 如何操作?

打开设置应用?

iOS:你做的设置错了

  • [不可能在编程领域很少成真.](http://stackoverflow.com/questions/14587370/how-some-apps-can-open-setting-app-programmatically-within-their-app#14587480) (5认同)
  • 现在可以在iOS 8中使用[NSURL URLWithString:UIApplicationOpenSettingsURLString] (2认同)

小智 131

来自@Yatheeshaless回答:

您可以在iOS8中以编程方式打开设置应用程序,但不能在早期版本的iOS中打开.

迅速:

   UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)
Run Code Online (Sandbox Code Playgroud)

斯威夫特4:

if let url = NSURL(string: UIApplicationOpenSettingsURLString) as URL? {
    UIApplication.shared.openURL(url)
}
Run Code Online (Sandbox Code Playgroud)

Swift 4.2(测试版):

if let url = NSURL(string: UIApplication.openSettingsURLString) as URL? {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Run Code Online (Sandbox Code Playgroud)

Objective-C的:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Run Code Online (Sandbox Code Playgroud)

  • 这似乎打开了应用设置应用的应用部分.用户必须回几次才能看到设置的主屏幕. (22认同)
  • @Paito以上行指向**app私人设置**.有没有办法直接到**隐私**部分的设备设置?如果你知道,请评论.这种重定向是可能的,因为我在地图应用程序中找到它,它指向隐私部分中的位置设置. (10认同)

swi*_*Boy 57

是!!您可以启动设备设置屏幕,我已在iOS 9.2上测试过

第1步.我们需要添加URL方案

转到项目设置 - >信息 - > URL类型 - >添加新URL方案

在此输入图像描述

步骤2.以编程方式启动设置感谢@davidcann

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
Run Code Online (Sandbox Code Playgroud)

我们也可以通过使用正确的名称来启动音乐,位置等子屏幕

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=MUSIC"]];
Run Code Online (Sandbox Code Playgroud)

请参阅此处由Henri Normak分享的全名列表


更新:

根据评论,每个人都想知道在更改我的申请提交状态后会发生什么?

所以 YES!! I got successful update submission and application is available on store without any complain.

只是为了确认,我今天早上刚刚下载并禁用了位置服务,然后启动了应用程序,它向我询问了位置权限,然后我的警报弹出窗口就在那里发送设置 - >位置服务页面 - >已启用 - >而已!!

  • 不幸的是,这在iOS 10中不起作用 (14认同)
  • 在iOS 10上,新的url不是"prefs:root = ...."而是"App-Prefs:root = ...". (12认同)
  • 这是私有API. (2认同)

Iai*_*ith 22

似乎您可以使用prefs:<area>URL 打开设置并转到特定区域。Apple 可能会更改这些并破坏您的应用程序,因此请始终检查您是否可以先打开它们。

在这篇文章中,他们列出了其中一些适用于 iOS 13.1:

设置网址

  • 云: prefs:root=CASTLE
  • iCloud 备份: prefs:root=CASTLE&path=BACKUP

无线电

  • 无线上网: prefs:root=WIFI
  • 蓝牙: prefs:root=Bluetooth
  • 蜂窝: prefs:root=MOBILE_DATA_SETTINGS_ID

个人热点

  • 个人热点: prefs:root=INTERNET_TETHERING
  • 个人热点 ?家庭共享:prefs:root=INTERNET_TETHERING&path=Family%20Sharing
  • 个人热点 ?无线密码:prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

虚拟专用网

  • 虚拟专用网: prefs:root=General&path=VPN

通知

  • 通知: prefs:root=NOTIFICATIONS_ID
  • 通知?Siri 建议:prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

声音

  • 声音: prefs:root=Sounds
  • 铃声: prefs:root=Sounds&path=Ringtone

请勿打扰

  • 请勿打扰: prefs:root=DO_NOT_DISTURB
  • 请勿打扰 ?允许呼叫来自:prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

检测时间

  • 检测时间: prefs:root=SCREEN_TIME
  • 检测时间 ?停机时间:prefs:root=SCREEN_TIME&path=DOWNTIME
  • 检测时间 ?应用限制:prefs:root=SCREEN_TIME&path=APP_LIMITS
  • 检测时间 ?始终允许:prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

一般的

  • 一般的: prefs:root=General
  • 一般的 ?关于:prefs:root=General&path=About
  • 一般的 ?软件更新:prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • 一般的 ?车载播放器:prefs:root=General&path=CARPLAY
  • 一般的 ?后台程序刷新:prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
  • 一般的 ?多任务处理(仅限 iPad):prefs:root=General&path=MULTITASKING
  • 一般的 ?约会时间:prefs:root=General&path=DATE_AND_TIME
  • 一般的 ?键盘:prefs:root=General&path=Keyboard
  • 一般的 ?键盘 ?键盘:prefs:root=General&path=Keyboard/KEYBOARDS
  • 一般的 ?键盘 ?硬件键盘:prefs:root=General&path=Keyboard/Hardware%20Keyboard
  • 一般的 ?键盘 ?文本替换:prefs:root=General&path=Keyboard/USER_DICTIONARY
  • 一般的 ?键盘 ?单手键盘:prefs:root=General&path=Keyboard/ReachableKeyboard
  • 一般的 ?语言和地区:prefs:root=General&path=INTERNATIONAL
  • 一般的 ?字典:prefs:root=General&path=DICTIONARY
  • 一般的 ?简介:prefs:root=General&path=ManagedConfigurationList
  • 一般的 ?重启:prefs:root=General&path=Reset

控制中心

  • 控制中心: prefs:root=ControlCenter
  • 控制中心 ?自定义控件:prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

展示

  • 展示: prefs:root=DISPLAY
  • 展示 ?自动锁:prefs:root=DISPLAY&path=AUTOLOCK
  • 展示 ?字体大小:prefs:root=DISPLAY&path=TEXT_SIZE

无障碍

  • 可访问性: prefs:root=ACCESSIBILITY

墙纸

  • 墙纸: prefs:root=Wallpaper

Siri

  • 西里: prefs:root=SIRI

苹果铅笔

  • Apple Pencil(仅限 iPad): prefs:root=Pencil

人脸识别

  • 人脸识别: prefs:root=PASSCODE

紧急求救

  • 紧急求救: prefs:root=EMERGENCY_SOS

电池

  • 电池: prefs:root=BATTERY_USAGE
  • 电池 ?电池健康(仅限 iPhone):prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

隐私

  • 隐私: prefs:root=Privacy
  • 隐私 ?位置服务:prefs:root=Privacy&path=LOCATION
  • 隐私 ?联系人:prefs:root=Privacy&path=CONTACTS
  • 隐私 ?日历:prefs:root=Privacy&path=CALENDARS
  • 隐私 ?提醒:prefs:root=Privacy&path=REMINDERS
  • 隐私 ?相片:prefs:root=Privacy&path=PHOTOS
  • 隐私 ?麦克风:prefs:root=Privacy&path=MICROPHONE
  • 隐私 ?语音识别:prefs:root=Privacy&path=SPEECH_RECOGNITION
  • 隐私 ?相机:prefs:root=Privacy&path=CAMERA
  • 隐私 ?运动:prefs:root=Privacy&path=MOTION\

应用商店

  • 应用商店: prefs:root=STORE
  • 应用商店 ?应用下载:prefs:root=STORE&path=App%20Downloads
  • 应用商店 ?视频自动播放:prefs:root=STORE&path=Video%20Autoplay

钱包

  • 钱包: prefs:root=PASSBOOK

密码和帐户

  • 密码和帐户: prefs:root=ACCOUNTS_AND_PASSWORDS
  • 密码和帐户?获取新数据:prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
  • 密码和帐户?新增帐户:prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT

邮件

  • 邮件: prefs:root=MAIL
  • 邮件 ?预览:prefs:root=MAIL&path=Preview
  • 邮件 ?滑动选项:prefs:root=MAIL&path=Swipe%20Options
  • 邮件 ?通知:prefs:root=MAIL&path=NOTIFICATIONS
  • 邮件 ?阻止:prefs:root=MAIL&path=Blocked
  • 邮件 ?静音线程操作:prefs:root=MAIL&path=Muted%20Thread%20Action
  • 邮件 ?被阻止的发件人选项:prefs:root=MAIL&path=Blocked%20Sender%20Options
  • 邮件 ?标记地址:prefs:root=MAIL&path=Mark%20Addresses
  • 邮件 ?提高报价水平:prefs:root=MAIL&path=Increase%20Quote%20Level
  • 邮件 ?包括回复附件:prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
  • 邮件 ?签名:prefs:root=MAIL&path=Signature
  • 邮件 ?默认帐户:prefs:root=MAIL&path=Default%20Account

联系人

  • 联系人: prefs:root=CONTACTS

日历

  • 日历: prefs:root=CALENDAR
  • 日历 ?备用日历:prefs:root=CALENDAR&path=Alternate%20Calendars
  • 日历 ?同步:prefs:root=CALENDAR&path=Sync
  • 日历 ?默认警报时间:prefs:root=CALENDAR&path=Default%20Alert%20Times
  • 日历 ?默认日历:prefs:root=CALENDAR&path=Default%20Calendar

笔记

  • 笔记: prefs:root=NOTES
  • 注意事项?默认帐户:prefs:root=NOTES&path=Default%20Account
  • 注意事项?密码:prefs:root=NOTES&path=Password
  • 注意事项?笔记排序方式:prefs:root=NOTES&path=Sort%20Notes%20By
  • 注意事项?新笔记开始于:prefs:root=NOTES&path=New%20Notes%20Start%20With
  • 注意事项?排序检查项目:prefs:root=NOTES&path=Sort%20Checked%20Items
  • 注意事项?线条和网格:prefs:root=NOTES&path=Lines%20%26%20Grids
  • 注意事项?从锁定屏幕访问笔记:prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

提醒事项

  • 提醒: prefs:root=REMINDERS
  • 提醒?默认列表:prefs:root=REMINDERS&path=DEFAULT_LIST

语音备忘录

  • 语音备忘录: prefs:root=VOICE_MEMOS

电话

  • 电话: prefs:root=Phone

留言

  • 留言: prefs:root=MESSAGES

视频对话

  • 视频对话: prefs:root=FACETIME

地图

  • 地图: prefs:root=MAPS
  • 地图?驾驶和导航:prefs:root=MAPS&path=Driving%20%26%20Navigation
  • 地图?过境:prefs:root=MAPS&path=Transit

罗盘

  • 罗盘: prefs:root=COMPASS

措施

  • 措施: prefs:root=MEASURE

苹果浏览器

  • 苹果浏览器: prefs:root=SAFARI
  • 苹果浏览器 ?内容拦截器:prefs:root=SAFARI&path=Content%20Blockers
  • 苹果浏览器 ?下载:prefs:root=SAFARI&path=DOWNLOADS
  • 苹果浏览器 ?关闭标签:prefs:root=SAFARI&path=Close%20Tabs
  • 苹果浏览器 ?清除历史和数据:prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
  • 苹果浏览器 ?页面缩放:prefs:root=SAFARI&path=Page%20Zoom
  • 苹果浏览器 ?请求桌面网站:prefs:root=SAFARI&path=Request%20Desktop%20Website
  • 苹果浏览器 ?读者:prefs:root=SAFARI&path=Reader
  • 苹果浏览器 ?相机:prefs:root=SAFARI&path=Camera
  • 苹果浏览器 ?麦克风:prefs:root=SAFARI&path=Microphone
  • 苹果浏览器 ?地点:prefs:root=SAFARI&path=Location
  • 苹果浏览器 ?先进的:prefs:root=SAFARI&path=ADVANCED

消息

  • 消息: prefs:root=NEWS

健康

  • 健康: prefs:root=HEALTH

快捷方式

  • 快捷方式: prefs:root=SHORTCUTS

音乐

  • 音乐: prefs:root=MUSIC
  • 音乐 ?蜂窝数据:prefs:root=MUSIC&path=com.apple.Music:CellularData
  • 音乐 ?优化存储:prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
  • 音乐 ?情商:prefs:root=MUSIC&path=com.apple.Music:EQ
  • 音乐 ?音量限制:prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

电视

  • 设置?电视:prefs:root=TVAPP

相片

  • 相片: prefs:root=Photos

相机

  • 相机: prefs:root=CAMERA
  • 相机 ?录视频:prefs:root=CAMERA&path=Record%20Video
  • 相机 ?录制慢动作:prefs:root=CAMERA&path=Record%20Slo-mo

图书

  • 图书: prefs:root=IBOOKS

游戏中心

  • 游戏中心: prefs:root=GAMECENTER

  • 是的,我对 iOS 14 也有同样的问题,但就我而言,当我删除 root 前缀时,问题就解决了。例如,我使用了“App-prefs:Privacy&amp;path=LOCATION”,而不是“prefs:root=Privacy&amp;path=LOCATION”,它在 iOS 14 中工作。 (7认同)
  • 如果我们使用这样的配置,Apple 是否不再拒绝该应用程序? (2认同)

dav*_*ann 18

您可以在iOS 5.0及更高版本上使用它:这不再有效.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
Run Code Online (Sandbox Code Playgroud)

  • 它不再适用于sdk ios 5.1 :( (5认同)
  • Apple声明这不是公共API,不再受支持.此问题上有一个错误,编号为11253669. (4认同)
  • @MarkGranoff不,它似乎在技术上没有文档,但它没有普通的未记录的API那么糟糕,因为它只是一个URL方案.您可以使用canOpenURL进行检查:首先.另外,这里有一个关于它的帖子:https://devforums.apple.com/message/543818 (3认同)
  • 根据[本文](http://forums.tipb.com/iphone-4s-forum/223832-use-siri-access-system-preferences.html),您可以在设置中进入不同的区域.例如,此URL将带您进入蓝牙设置`prefs:root = General&path = Bluetooth` (3认同)
  • 我的应用程序因使用私有 API 而被拒绝,因为我打开了 URL:@"prefs:root=Brightness"。通常,无证意味着私人。 (2认同)
  • 我刚看到这适用于Strava app.关闭蓝牙,然后在应用程序中打开它.然后它要求设置应用程序并直接进入蓝牙设置.这适用于iOS5.1.有没有办法找出他们正在使用的方案? (2认同)

guy*_*omb 14

iOS 10更新

Apple更改了在主线程上打开异步的方法.但是,从现在开始,只能在本机设置中打开应用程序设置.

[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];

iOS 9更新

现在可以直接进入子设置菜单.但是,必须创建URL方案.它可以通过两种方式完成:

  1. XCode - 您可以在Target,Info,URL Scheme中找到它.然后,只需键入prefs.
  2. 直接添加到*-Info.plist.添加以下内容: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>prefs</string> </array> </dict> </array>

那么代码:

迅速

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=General&path=Keyboard")!)

Objective-C的

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=Keyboard"]];

  • 我尝试了 iOS 10.x 解决方案,但它对我不起作用 - 什么也没有发生。 (2认同)

Dam*_*amo 5

在Swift 3 / iOS 10+中,现在看起来像

if let url = URL(string: "App-Prefs:root=LOCATION_SERVICES") {
    UIApplication.shared.open(url, completionHandler: .none)
}
Run Code Online (Sandbox Code Playgroud)

  • 这会使您的应用被拒绝。他们将其置于私有API之下。 (3认同)

yna*_*mao 5

在 Swift 3 中,我需要的就是这个(这里例如重定向到我的应用程序通知):

if let url = URL(string: "App-Prefs:root=NOTIFICATIONS_ID&path=your app bundleID") {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, completionHandler: .none)
    } else {
        // Fallback on earlier versions
    }
}
Run Code Online (Sandbox Code Playgroud)

来源:phynet要点

仅当设置在后台时,这才对我有用。它会将您重定向到应用程序通知设置,但如果设置没有在后台运行,它只会将您重定向到一般通知设置。


小智 5

斯威夫特 3:

guard let url = URL(string: UIApplicationOpenSettingsURLString) else {return}
if #available(iOS 10.0, *) {
  UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
  // Fallback on earlier versions
  UIApplication.shared.openURL(url)
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

155014 次

最近记录:

6 年,11 月 前