iOS 跳转到第三方应用或者设置页面。最近在写一个 widget 的小项目。功能是在通知栏上快速设置一些系统设置,比如 wifi,蓝牙,低电量模式。不过就遇到了下面咱们要讨论的问题。如何跳转?那么网上有很多资料。不过 90% 都是一样的,另外 10% 又是一模一样的。想找个东西太难。所以我要在这里面整理一下,这就是我写这篇文章的意义。
跳转方式一览目标 URL 电池电量 Prefs:root=BATTERY_USAGEVPNPrefs: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_TIMEiCloudPrefs:root=CASTLEiCloud 备份 Prefs:root=CASTLE&path=STORAGE_AND_BACKUP 通用设置 Prefs:root=General 存储空间 Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE 蜂窝数据 Prefs:root=MOBILE_DATA_SETTINGS_IDWi-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=SoundsApp Store 设置 Prefs:root=STORE 墙纸设置 Prefs:root=Wallpapermusicprefs:root=MUSICNike + iPodprefs:root=NIKE_PLUS_IPODNotesprefs:root=NOTESSafariprefs:root=SafariSiriprefs:root=General&path=Assistant 系统更新 prefs:root=General&path=SOFTWARE_UPDATE_LINK 打开电话 Mobilephone:// 世界时钟 Clock-worldclock:// 闹钟 Clock-alarm:// 秒表 Clock-stopwatch:// 倒计时 Clock-timer:// 打开相册 Photos://FaceTimePrefs: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) {}];
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/04-08/20140140.html