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提供的,而不是由应用程序本身提供.这就是为什么它能够打开设置应用程序.
以下是一些相关的问题和文章:
通过单击应用程序首选项中的条目打开UIPickerView - 如何操作?
小智 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)
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.
只是为了确认,我今天早上刚刚下载并禁用了位置服务,然后启动了应用程序,它向我询问了位置权限,然后我的警报弹出窗口就在那里发送设置 - >位置服务页面 - >已启用 - >而已!!
Iai*_*ith 22
似乎您可以使用prefs:<area>URL 打开设置并转到特定区域。Apple 可能会更改这些并破坏您的应用程序,因此请始终检查您是否可以先打开它们。
在这篇文章中,他们列出了其中一些适用于 iOS 13.1:
设置网址
云
prefs:root=CASTLEprefs:root=CASTLE&path=BACKUP无线电
prefs:root=WIFIprefs:root=Bluetoothprefs:root=MOBILE_DATA_SETTINGS_ID个人热点
prefs:root=INTERNET_TETHERINGprefs:root=INTERNET_TETHERING&path=Family%20Sharingprefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password虚拟专用网
prefs:root=General&path=VPN通知
prefs:root=NOTIFICATIONS_IDprefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions声音
prefs:root=Soundsprefs:root=Sounds&path=Ringtone请勿打扰
prefs:root=DO_NOT_DISTURBprefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From检测时间
prefs:root=SCREEN_TIMEprefs:root=SCREEN_TIME&path=DOWNTIMEprefs:root=SCREEN_TIME&path=APP_LIMITSprefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED一般的
prefs:root=Generalprefs:root=General&path=Aboutprefs:root=General&path=SOFTWARE_UPDATE_LINKprefs:root=General&path=CARPLAYprefs:root=General&path=AUTO_CONTENT_DOWNLOADprefs:root=General&path=MULTITASKINGprefs:root=General&path=DATE_AND_TIMEprefs:root=General&path=Keyboardprefs:root=General&path=Keyboard/KEYBOARDSprefs:root=General&path=Keyboard/Hardware%20Keyboardprefs:root=General&path=Keyboard/USER_DICTIONARYprefs:root=General&path=Keyboard/ReachableKeyboardprefs:root=General&path=INTERNATIONALprefs:root=General&path=DICTIONARYprefs:root=General&path=ManagedConfigurationListprefs:root=General&path=Reset控制中心
prefs:root=ControlCenterprefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS展示
prefs:root=DISPLAYprefs:root=DISPLAY&path=AUTOLOCKprefs:root=DISPLAY&path=TEXT_SIZE无障碍
prefs:root=ACCESSIBILITY墙纸
prefs:root=WallpaperSiri
prefs:root=SIRI苹果铅笔
prefs:root=Pencil人脸识别
prefs:root=PASSCODE紧急求救
prefs:root=EMERGENCY_SOS电池
prefs:root=BATTERY_USAGEprefs:root=BATTERY_USAGE&path=BATTERY_HEALTH隐私
prefs:root=Privacyprefs:root=Privacy&path=LOCATIONprefs:root=Privacy&path=CONTACTSprefs:root=Privacy&path=CALENDARSprefs:root=Privacy&path=REMINDERSprefs:root=Privacy&path=PHOTOSprefs:root=Privacy&path=MICROPHONEprefs:root=Privacy&path=SPEECH_RECOGNITIONprefs:root=Privacy&path=CAMERAprefs:root=Privacy&path=MOTION\应用商店
prefs:root=STOREprefs:root=STORE&path=App%20Downloadsprefs:root=STORE&path=Video%20Autoplay钱包
prefs:root=PASSBOOK密码和帐户
prefs:root=ACCOUNTS_AND_PASSWORDSprefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATAprefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT邮件
prefs:root=MAILprefs:root=MAIL&path=Previewprefs:root=MAIL&path=Swipe%20Optionsprefs:root=MAIL&path=NOTIFICATIONSprefs:root=MAIL&path=Blockedprefs:root=MAIL&path=Muted%20Thread%20Actionprefs:root=MAIL&path=Blocked%20Sender%20Optionsprefs:root=MAIL&path=Mark%20Addressesprefs:root=MAIL&path=Increase%20Quote%20Levelprefs:root=MAIL&path=Include%20Attachments%20with%20Repliesprefs:root=MAIL&path=Signatureprefs:root=MAIL&path=Default%20Account联系人
prefs:root=CONTACTS日历
prefs:root=CALENDARprefs:root=CALENDAR&path=Alternate%20Calendarsprefs:root=CALENDAR&path=Syncprefs:root=CALENDAR&path=Default%20Alert%20Timesprefs:root=CALENDAR&path=Default%20Calendar笔记
prefs:root=NOTESprefs:root=NOTES&path=Default%20Accountprefs:root=NOTES&path=Passwordprefs:root=NOTES&path=Sort%20Notes%20Byprefs:root=NOTES&path=New%20Notes%20Start%20Withprefs:root=NOTES&path=Sort%20Checked%20Itemsprefs:root=NOTES&path=Lines%20%26%20Gridsprefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen提醒事项
prefs:root=REMINDERSprefs:root=REMINDERS&path=DEFAULT_LIST语音备忘录
prefs:root=VOICE_MEMOS电话
prefs:root=Phone留言
prefs:root=MESSAGES视频对话
prefs:root=FACETIME地图
prefs:root=MAPSprefs:root=MAPS&path=Driving%20%26%20Navigationprefs:root=MAPS&path=Transit罗盘
prefs:root=COMPASS措施
prefs:root=MEASURE苹果浏览器
prefs:root=SAFARIprefs:root=SAFARI&path=Content%20Blockersprefs:root=SAFARI&path=DOWNLOADSprefs:root=SAFARI&path=Close%20Tabsprefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATAprefs:root=SAFARI&path=Page%20Zoomprefs:root=SAFARI&path=Request%20Desktop%20Websiteprefs:root=SAFARI&path=Readerprefs:root=SAFARI&path=Cameraprefs:root=SAFARI&path=Microphoneprefs:root=SAFARI&path=Locationprefs:root=SAFARI&path=ADVANCED消息
prefs:root=NEWS健康
prefs:root=HEALTH快捷方式
prefs:root=SHORTCUTS音乐
prefs:root=MUSICprefs:root=MUSIC&path=com.apple.Music:CellularDataprefs:root=MUSIC&path=com.apple.Music:OptimizeStorageprefs:root=MUSIC&path=com.apple.Music:EQprefs:root=MUSIC&path=com.apple.Music:VolumeLimit电视
prefs:root=TVAPP相片
prefs:root=Photos相机
prefs:root=CAMERAprefs:root=CAMERA&path=Record%20Videoprefs:root=CAMERA&path=Record%20Slo-mo图书
prefs:root=IBOOKS游戏中心
prefs:root=GAMECENTERdav*_*ann 18
您可以在iOS 5.0及更高版本上使用它:这不再有效.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
Run Code Online (Sandbox Code Playgroud)
guy*_*omb 14
iOS 10更新
Apple更改了在主线程上打开异步的方法.但是,从现在开始,只能在本机设置中打开应用程序设置.
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
iOS 9更新
现在可以直接进入子设置菜单.但是,必须创建URL方案.它可以通过两种方式完成:
<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"]];
在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)
在 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 次 |
| 最近记录: |