前言
刚刚遇到一个需求,需要在App中设置各种模块的推送功能的特定限制功能。于是为了完善用户的体验,在设置的时候需要对该应用是否被用户授权使用远程推送功能进行同步,这就需要我们去检测系统是否打开推送功能,以及进行甜系统应用中心进行设置的相关问题。
远程推送
检测当前应用是否开启了远程推送功能
- 系统版本号 < 8.0
// NS_DEPRECATED_IOS(3_0, 8_0, ...)
if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] == UIRemoteNotificationTypeNone) {
//远程推送关闭状态
}
- 系统版本号 >= 8.0
// NS_DEPRECATED_IOS(8_0, 10_0, ...)
if ([[UIApplication sharedApplication] currentUserNotificationSettings].types == UIRemoteNotificationTypeNone) {
NSLog(@" ======= 关闭了远程推送 ");
}
虽然显示的是 (8_0, 10_0),但我在9.3系统和11.0的系统上都是正确可用的。
调转到通知设置中心让用户授权使用
1.跳转到应用设置
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
// NSURL *url = [NSURL URLWithString:@“app-settings:”];
// 运行时发现UIApplicationOpenSettingsURLString的值就是 "app-settings:",固定写死了也可以跳转
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
2.在iOS 8.0,iOS 9.0 上,直接跳转到应用通知中心
NSURL *url = [NSURL URLWithString:@"prefs:root=NOTIFICATIONS_ID&path=应用的boundleId"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
只支持iOS8,iOS9系统!在iOS7系统上,仅仅只是跳转到设置应用。而在iOS10系统及以上系统笨不会跳转。
由此引发了我对进入系统应用设置中心的相关知识总结
进入系统应用设置中心
设置跳转有三种方式,每一种的使用场景都不同。 并且你在跳转到系统中自己应用下面设置的时候,你的应用要提前至少申请了某一个权限,如通知,定位等。否则,会引起崩溃。
- prefs:root=某项服务
- prefs:root=bundleID
- UIApplicationOpenSettingsURLString
注:
方法1 适用于小于iOS10.0系统有效
方法2 大于等于iOS8系统,小于iOS10的系统,即 iOS 8.0 和 iOS9.0 专用
方法3 适用于iOS8及以上的系统 即大于等于iOS8的系统
关于某项服务的相关问题配置
关于本机:prefs:root=General&path=About
软件升级:prefs:root=General&path=SOFTWARE_UPDATE_LINK
日期时间:prefs:root=General&path=DATE_AND_TIME
Accessibility:prefs:root=General&path=ACCESSIBILITY
键盘设置:prefs:root=General&path=Keyboard
VPN:prefs:root=General&path=VPN
壁纸设置:@”prefs:root=Wallpaper
APP Store:prefs:root=STORE
还原设置:prefs:root=General&path=Reset
应用通知:prefs:root=NOTIFICATIONS_ID&path=应用的boundleId
系统设置:prefs:root=INTERNET_TETHERING
WIFI设置:prefs:root=WIFI
蓝牙设置:prefs:root=Bluetooth
系统通知:prefs:root=NOTIFICATIONS_ID
通用设置:prefs:root=General
显示设置:prefs:root=DISPLAY&BRIGHTNESS
壁纸设置:prefs:root=Wallpaper
声音设置:prefs:root=Sounds
隐私设置:prefs:root=privacy
蜂窝网路:prefs:root=MOBILE_DATA_SETTINGS_ID
音乐:prefs:root=MUSIC
APP Store:prefs:root=STORE
Notes:prefs:root=NOTES
Safari:prefs:root=Safari
Music:prefs:root=MUSIC
photo”:prefs:root=Photos