iOS小笔记 | 通知关闭开启状态的监控
相似于简书的通知管理页:
不同的是我这里是用的一个UISwitch
来表示通知的关闭开启状态:
监听通知状态.gif
整个流程就是:
- 点击switch,跳转到设置页;
- 开启or关闭通知;
- 回到app,刷新switch状态。
1.关于switch
假如单纯的放一个UISwitch上去,客户点击,switch的状态切换动画会与跳转到系统设置页的转场动画同时执行,尽管很快,但还是可以看到switch的状态切换,我不想让switch的状态在这个时候改变。一个处理方案是在switch上放一个透明button,由button来解决客户事件,而switch只用于表示通知开闭状态:
- (UISwitch *)notifSwitch { if (!_notifSwitch) { _notifSwitch = [[UISwitch alloc] init]; // 在switch上add一个透明button UIButton *button = [[UIButton alloc] initWithFrame:_notifSwitch.bounds]; [_notifSwitch addSubview:button]; [button addTarget:self action:@selector(switchButtonClicked) forControlEvents:UIControlEventTouchUpInside]; } return _notifSwitch;}
注:UISwitch的size是固定的:
// This class enforces a size appropriate for the control, and so the frame size is ignored.
2.跳转到设置页
- (void)switchButtonClicked { // 跳转到系统设置 NSURL *settingURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; if (@available(iOS 10.0, *)) { [[UIApplication sharedApplication] openURL:settingURL options:[NSDictionary dictionary] completionHandler:nil]; } else { [[UIApplication sharedApplication] openURL:settingURL]; }}
两个跳转方法,一个是iOS10之前的,一个是iOS10之后的。
3.刷新switch
UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSettings];self.notifSwitch.on = (setting.types != UIUserNotificationTypeNone);
4.刷新时机
系统设置其实也是一个app,从你的app跳转到系统设置,app此时由前端进入后端;从系统设置回到你的app,app由后端进入前端。此时AppDelegate的applicationWillEnterForeground:
会被调用。
系统提供了一个通知,标识APP将要进入前端:
UIKIT_EXTERN NSNotificationName const UIApplicationWillEnterForegroundNotification NS_AVAILABLE_IOS(4_0);
所以可以通过监听这个通知来执行刷新:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshSwitch) name:UIApplicationWillEnterForegroundNotification object:nil];
整个过程就是这样的,假如你有更好的思路,欢迎分享。
上一篇 目录 下一篇
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » iOS小笔记 | 通知关闭开启状态的监控
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » iOS小笔记 | 通知关闭开启状态的监控