欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

iOS 跳转到第三方应用或者设置页面

程序员文章站 2022-09-24 11:32:17
ios 跳转到第三方应用或者设置页面。最近在写一个widget的小项目。功能是在通知栏上快速设置一些设置,比如wifi,蓝牙,低电量模式。不过就遇到了下面咱们要讨论的问题。如何跳转?那么网上有很多资...

ios 跳转到第三方应用或者设置页面。最近在写一个widget的小项目。功能是在通知栏上快速设置一些设置,比如wifi,蓝牙,低电量模式。不过就遇到了下面咱们要讨论的问题。如何跳转?那么网上有很多资料。不过90%都是一样的,另外10%又是一模一样的。想找个东西太难。所以我要在这里面整理一下,这就是我写这篇文章的意义。

跳转方式一览

目标 url
电池电量 prefs:root=battery_usage
vpn prefs:root=general&path=vpn (网上有很多写的是prefs:root=general&path=network/vpn,就用我写的那个,亲测可用)
个人热点 prefs:root=internet_tethering
飞行模式 prefs:root=airplane_mode
锁定 prefs:root=general&path=autolock
亮度 prefs:root=brightness
时间设置 prefs:root=general&path=date_and_time
icloud prefs:root=castle
icloud备份 prefs:root=castle&path=storage_and_backup
通用设置 prefs:root=general
存储空间 prefs:root=general&path=storage_icloud_usage/device_storage
蜂窝数据 prefs:root=mobile_data_settings_id
wi-fi 设置 prefs:root=wifi
蓝牙设置 prefs:root=bluetooth
定位设置 prefs:root=privacy&path=location
辅助功能 prefs:root=general&path=accessibility
关于手机 prefs:root=general&path=about
键盘设置 prefs:root=general&path=keyboard
显示设置 prefs:root=display
语言设置 prefs:root=general&path=international
声音设置 prefs:root=sounds
app store 设置 prefs:root=store
墙纸设置 prefs:root=wallpaper
music prefs:root=music
nike + ipod prefs:root=nike_plus_ipod
notes prefs:root=notes
safari prefs:root=safari
siri prefs:root=general&path=assistant
系统更新 prefs:root=general&path=software_update_link
打开电话 mobilephone://
世界时钟 clock-worldclock://
闹钟 clock-alarm://
秒表 clock-stopwatch://
倒计时 clock-timer://
打开相册 photos://
facetime prefs:root=facetime

使用方式

在程序中,ios 9 8 7 可以用以下方式来打开设置。

nsurl *url = [nsurl urlwithstring:@"prefs:root=wifi"];

   if ([[uiapplication sharedapplication] canopenurl:url]) {  

        [[uiapplication sharedapplication] openurl:url]; // ios 9 的跳转
   }

当然也可以这样(ios10 9 8 7 可以用这种方式)(这方法虽然ios 10也可以用但是并不能去到蓝牙、wifi、电池,只能去到自身应用的系统设置。)

nsurl *url = [nsurl urlwithstring:uiapplicationopensettingsurlstring];

if ([[uiapplication sharedapplication] canopenurl:url]) {

    [[uiapplication sharedapplication] openurl:url];
}

下面的方法是ios10 新增的api

nsurl *url = [nsurl urlwithstring:@"prefs:root=wifi"];

    if ([[uiapplication sharedapplication] canopenurl:url]) {

        [[uiapplication sharedapplication] openurl:url options:@{} completionhandler:nil];
    }

如果你是通知栏应用(如pin,launcher)在ios 10通知栏widget可以像ios 9正常跳转,pin、launcher,都可以通过简单地设置 url scheme 实现此功能,你可以继续在通知中心直接跳转至系统设置的特定页面,比如蜂窝数据、wifi、定位等等。只需将原来的 prefs 开头改成 prefs 即可。
需要注意的是,这个功能只在通知中心的 today widget(即插件)有效,在应用中则无法直接跳转设置。
(如果你的是通知栏类应用可以用此办法解决,ios 10 可用)

nsurl*url=[nsurl urlwithstring:@"prefs:root=wifi"]; 
[self.extensioncontext openurl:url completionhandler:^(bool success) {

}];