从另一个应用程序打开“设置”应用程序
好吧,我知道有很多关于它的问题,但它们都是很久以前的事了。
所以。我知道这是可能的,因为地图应用程序可以做到这一点。
在地图应用程序中,如果我关闭该应用程序的本地化,它会向我发送一条消息,如果我按“确定”,“设置应用程序”将打开。 我的问题是,这怎么可能? 如何从我自己的应用程序中打开“设置应用程序”?
基本上我需要做同样的事情,如果用户关闭我的应用程序的位置,那么我会向他显示一条消息,说明将打开“设置应用程序”的内容
Okay, I know that there are many question about it, but they are all from many time ago.
So. I know that it is possible because the Map app does it.
In the Map app if I turn off the localization for this app, it send me a message, and if I press okay, the "Settings App" will be open.
And my question is, how is this possible?
How can I open the "Setting app" from my own app?
Basically I need to do the same thing, if the user turn off the location for my app, then I'll show him a message saying something that will open the "Setting app"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(19)
正如Karan Dua所述,这是现在可以在 iOS8 中使用
UIApplicationOpenSettingsURLString
请参阅 Apple 文档。示例:
Swift 4.2
在 Swift 3 中:
在 Swift 2 中:
在 Objective-C 中 >
iOS 8 之前:
不能。正如您所说,这已经被多次提及,并且弹出窗口要求您打开位置服务是由 Apple 提供的,而不是由应用程序本身提供的。这就是为什么它能够打开设置应用程序。
以下是一些相关问题&文章:
是否可以使用 openURL 打开设置应用程序?
以编程方式打开设置应用 (iPhone)
当用户按下 a 时如何打开“设置”应用按钮?
iPhone:从应用程序打开应用程序首选项面板
通过单击应用程序首选项中的条目 - 如何操作?
打开“设置”应用程序?
iOS:您的设置错误
As mentioned by Karan Dua this is now possible in iOS8 using
UIApplicationOpenSettingsURLString
see Apple's Documentation.Example:
Swift 4.2
In Swift 3:
In Swift 2:
In Objective-C
Prior to iOS 8:
You can not. As you said this has been covered many times and that pop up asking you to turn on location services is supplied by Apple and not by the App itself. That is why it is able to the open the settings application.
Here are a few related questions & articles:
is it possible to open Settings App using openURL?
Programmatically opening the settings app (iPhone)
How can I open the Settings app when the user presses a button?
iPhone: Opening Application Preferences Panel From App
Open UIPickerView by clicking on an entry in the app's preferences - How to?
Open the Settings app?
iOS: You’re Doing Settings Wrong
来自@Yatheeshaless的答案:
您可以在 iOS8 中以编程方式打开设置应用程序,但在早期版本的 iOS 中则不能。
Swift:
Swift 4:
Swift 4.2(测试版):
Objective-C:
From @Yatheeshaless's answer:
You can open settings app programmatically in iOS8, but not in earlier versions of iOS.
Swift:
Swift 4:
Swift 4.2 (BETA):
Objective-C:
是!!您可以启动“设备设置”屏幕,我已经在 iOS 9.2 上进行了测试
第 1 步。我们需要添加 URL 方案
转到项目设置-->信息--> URL 类型 -->添加新的 URL 方案
第 2 步。 以编程方式启动设置 感谢 @davidcann< /a>
此外,我们还可以通过使用正确的名称来启动音乐、位置等子屏幕。
请参阅此完整名称列表此处 由 Henri Normak 分享
更新:
根据评论,每个人都想知道会发生什么在我的申请提交状态发生此更改之后?
所以
是!!我成功提交了更新,并且应用程序可以在商店中使用,没有任何抱怨。
只是确认一下,
我今天早上刚刚下载并禁用了位置服务,然后启动了该应用程序,它要求我提供位置许可,然后我的警报弹出窗口向我发送设置 -> 。位置服务页面-->已启用-->就是这样!!
![注意:
您的应用程序可能会被拒绝...即使已获得批准,如果您使用此方法,在未来版本中也可能会被拒绝...]4
YES!! you can launch Device Settings screen, I have tested on iOS 9.2
Step 1. we need to add URL schemes
Go to Project settings --> Info --> URL Types --> Add New URL Schemes
Step 2. Launch Settings programmatically Thanks to @davidcann
Also we can launch sub-screens like Music, Location etc. as well by just using proper name
See this full name list here shared by Henri Normak
Update:
As per the comment everyone wants to know what happens after this change to my application submission status?
So
YES!! I got successful update submission and application is available on store without any complain.
Just to confirm,
I Just downloaded this morning and disabled Location services, and then started the app, which asked me for location permission and then my alert popup was there to send me on settings -> location services page --> Enabled --> That's it!!
![NOTICE:
Your app might be rejected ... even if it's approved it can be rejected in future version if you use this method...]4
似乎您可以使用
prefs:
URL 打开设置并转到特定区域。 Apple 可能会更改这些内容并破坏您的应用程序,因此请务必先检查您是否可以打开它们。
从这个 文章 他们列出了 iOS 13.1 的其中一些:
设置 URL
iCloud
prefs:root=CASTLE
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
VPN
prefs:root=General&path=VPN
通知
prefs:root=NOTIFICATIONS_ID
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
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
prefs:root=Pencil
Face ID
prefs: root=PASSCODE
紧急求救
prefs:root=EMERGENCY_SOS
电池
prefs:root=BATTERY_USAGE< /code>
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
code>prefs:root=Privacy&path=MICROPHONE
prefs:root=Privacy&path=SPEECH_RECOGNITION
prefs:root=Privacy&path=CAMERA
prefs:root=Privacy&path=MOTION\
App Store
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 =通知
prefs:root=MAIL&path=Blocked
prefs:root=MAIL&path=Mulated%20Thread%20Action
code>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
< strong>联系人
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
< strong>语音备忘录
prefs:root=VOICE_MEMOS
电话
prefs:root=Phone
消息< /strong>
prefs:root=MESSAGES
FaceTime
prefs:root=FACETIME
地图
prefs:root=MAPS&path=Driving%20%26%20Navigation
prefs:root=MAPS&path=Transit
指南针 strong>
prefs:root=COMPASS
测量
prefs:root=MEASURE
Safari
prefs:root=SAFARI
prefs:root=SAFARI&path=Content%20Blockers
prefs:root=SAFARI&path=DOWNLOADS< /code>
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=麦克风
prefs:root=SAFARI&path=Location
prefs:root=SAFARI&path=ADVANCED
新闻
prefs:root=NEWS
健康
prefs:root=HEALTH
快捷方式
prefs:root=SHORTCUTS
音乐
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&path=Record%20Video
prefs:root=CAMERA& path=Record%20Slo-mo
书籍
prefs:root=IBOOKS
游戏中心
偏好: root=GAMECENTER
Seems like you can use the
prefs:<area>
URL to open the settings and go to specific areas. Apple could change these and break your app so always check if you can open them first.From this article they have listed some of them for iOS 13.1:
Settings URLs
iCloud
prefs:root=CASTLE
prefs:root=CASTLE&path=BACKUP
Wireless Radios
prefs:root=WIFI
prefs:root=Bluetooth
prefs:root=MOBILE_DATA_SETTINGS_ID
Personal Hotspot
prefs:root=INTERNET_TETHERING
prefs:root=INTERNET_TETHERING&path=Family%20Sharing
prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password
VPN
prefs:root=General&path=VPN
Notifications
prefs:root=NOTIFICATIONS_ID
prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions
Sounds
prefs:root=Sounds
prefs:root=Sounds&path=Ringtone
Do Not Disturb
prefs:root=DO_NOT_DISTURB
prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From
Screen Time
prefs:root=SCREEN_TIME
prefs:root=SCREEN_TIME&path=DOWNTIME
prefs:root=SCREEN_TIME&path=APP_LIMITS
prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED
General
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
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
Control Center
prefs:root=ControlCenter
prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS
Display
prefs:root=DISPLAY
prefs:root=DISPLAY&path=AUTOLOCK
prefs:root=DISPLAY&path=TEXT_SIZE
Accessibility
prefs:root=ACCESSIBILITY
Wallpaper
prefs:root=Wallpaper
Siri
prefs:root=SIRI
Apple Pencil
prefs:root=Pencil
Face ID
prefs:root=PASSCODE
Emergency SOS
prefs:root=EMERGENCY_SOS
Battery
prefs:root=BATTERY_USAGE
prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH
Privacy
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\
App Store
prefs:root=STORE
prefs:root=STORE&path=App%20Downloads
prefs:root=STORE&path=Video%20Autoplay
Wallet
prefs:root=PASSBOOK
Passwords & Accounts
prefs:root=ACCOUNTS_AND_PASSWORDS
prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT
Mail
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
Contacts
prefs:root=CONTACTS
Calendar
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
Notes
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
Reminders
prefs:root=REMINDERS
prefs:root=REMINDERS&path=DEFAULT_LIST
Voice Memos
prefs:root=VOICE_MEMOS
Phone
prefs:root=Phone
Messages
prefs:root=MESSAGES
FaceTime
prefs:root=FACETIME
Maps
prefs:root=MAPS
prefs:root=MAPS&path=Driving%20%26%20Navigation
prefs:root=MAPS&path=Transit
Compass
prefs:root=COMPASS
Measure
prefs:root=MEASURE
Safari
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
News
prefs:root=NEWS
Health
prefs:root=HEALTH
Shortcuts
prefs:root=SHORTCUTS
Music
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
TV
prefs:root=TVAPP
Photos
prefs:root=Photos
Camera
prefs:root=CAMERA
prefs:root=CAMERA&path=Record%20Video
prefs:root=CAMERA&path=Record%20Slo-mo
Books
prefs:root=IBOOKS
Game Center
prefs:root=GAMECENTER
您可以在 iOS 5.0 及更高版本上使用此功能:这不再有效。You can use this on iOS 5.0 and later:This no longer works.iOS 10更新
Apple更改了在主线程上打开异步的方法。但是,从现在开始,只能在本机设置中打开应用程序设置。
[[UIApplication sharedApplication] openURL:url options:@{}completionHandler:nil];
iOS 9 更新
现在可以直接进入子设置菜单。但是,必须创建 URL 方案。可以使用两种方式完成:
<数组>
<字典>
<键>CFBundleTypeRole
<字符串>编辑器
<键>CFBundleURLSchemes
<数组>
<字符串>首选项
然后代码:
Swift
UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=General&path=Keyboard")!)
Objective-c
[[ UIApplication shareApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=Keyboard"]];
iOS 10 update
Apple changed the method to open async on the main thread. However, from now it is only possible to open the app settings in native settings.
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
iOS 9 update
It is now possible to go directly to sub-settings menu. However, a URL scheme has to be created. It can be done using two ways:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>prefs</string>
</array>
</dict>
</array>
Then the code:
Swift
UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=General&path=Keyboard")!)
Objective-c
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=Keyboard"]];
在 Swift 3 / iOS 10+ 中,现在看起来像
In Swift 3 / iOS 10+ this now looks like
在 Swift 3 中,我需要的就是这个(例如,重定向到我的应用程序通知):
来源:phynet gist。
仅当设置在后台时,这才对我有用。它会将您重定向到应用程序通知设置,但如果设置没有在后台运行,它只会将您重定向到一般通知设置。
In Swift 3 all I needed is this (here for example redirect to my app notifications):
Source: phynet gist.
This worked with me only when settings is in background. It will redirect you to your app notification settings but if settings wasn't running in the background it will just redirect you to notification settings in general.
斯威夫特3:
Swift 3:
UIApplicationOpenSettingsURLString
仅当您之前允许任何权限时,此操作才会起作用。例如位置、照片、联系人、推送通知访问。因此,如果您没有获得用户的此类权限:如果是iOS 10 或更高版本,
它将打开“设置”,但随后会崩溃。原因是,您的应用程序的设置中没有任何内容。
下面的代码将在 iOS 设置中打开您的应用程序设置。
由于设备不可用,我无法在 iOS 上检查此内容 < 10.
另外,我可以从一些要点中找到下面的代码,它在 iOS 10 上也能正常工作。但我不确定这是否会得到苹果审核团队的批准。
UIApplicationOpenSettingsURLString
this will only work if you have previously allowed for any permission. For example Location, Photo, Contact, Push notification access. So if you have not such permission(s) from the user:If iOS 10 or above,
It will open the Settings but then crash it. The reason, there's nothing in settings for your app.
Below code will open your application settings inside the iOS Setting.
Due to device unavailability, I couldn't check this on iOS < 10.
Also, I could find below code from some gist and it works fine on iOS 10 as well. But I am not sure if this will approve by Apple review team or not.
https://gist.github.com/johnny77221/bcaa5384a242b64bfd0b8a715f48e69f
由于
openURL(_:)
在 iOS 10.0 后已被弃用,因此请使用open(_:options:completionHandler:)
代替。As
openURL(_:)
is deprecated after iOS 10.0, useopen(_:options:completionHandler:)
instead.您可以使用下面的代码。
You can use the below code for it.
使用 iOS 10 进行测试。
快乐编码:)
Tested with iOS 10. Working
Happy Coding :)
SWIFT 4.0
SWIFT 4.0
Swift 4
我更喜欢以更安全的方式打开设置,
Swift 4
I prefer to open setting in a safer way,
从 iOS 16 开始,您可以使用 openSettingsURLString
From iOS 16, you can use openSettingsURLString
迅速
您可以使用以下功能通过蓝牙页面打开设置应用程序
,但这不会打开应用程序的设置。这将打开带有蓝牙的设置应用程序,因为这是与蓝牙的深度链接。
Swift
You can use following function to open Settings App with Bluetooth Page
Again this would not open the App's Settings. This would open settings app with Bluetooth as this is deep linking to bluetooth.
要添加到接受的答案:(来自苹果开发人员文档)“当您打开从此字符串 (openSettingsURLString) 构建的 URL 时,系统将启动“设置”应用程序并显示该应用程序的自定义设置(如果有)。”因此,如果您想打开应用程序的设置,请创建您自己的 Settings.bundle。
To add to accepted answer: (from apple developer documentation) "When you open the URL built from this string (openSettingsURLString), the system launches the Settings app and displays the app’s custom settings, if it has any." So, if you want to open settings for your app, create your own Settings.bundle.
将其添加到您的班级中,
像这样调用,
Add this to your class,
Call like this,