iOS客户端是否接收推送的设置
来源:互联网 发布:php和python java 编辑:程序博客网 时间:2024/06/07 06:51
ios中的推送相信大家都不陌生,现在没有推送的app已经很少见了。正是因为有这种需求,故而出现了一系列的三方推送SDK,包括JPush,个推。。。等等。现在来简单谈谈设置中的是否接收推送怎么做。
如何集成极光推送、如何处理收到通知时的页面跳转问题就不细说了,在网上已经有很多人写了相关内容,不清楚的可以参考这篇文章 http://www.jianshu.com/p/f75ba85a4414 ,里面写的比较详细。
一般我们的是否接收推送都是一个UISwitch控制,在系统允许此app接收通知的条件下,switch打开即是接收通知,否则不接收。那么如何判断系统允许接收本app通知即在首次进入app时用户选择了接收推送呢?很简单,看下面代码:
//判断系统是否接收推送- (BOOL)isAllowedNotification{ //ios8及以上 UIUserNotificationSettings*settings=[UIApplication sharedApplication].currentUserNotificationSettings; if (settings.types != UIUserNotificationTypeNone) { return YES; }else return NO;}
接下来,就是在创建UISwitch的地方,根据系统是否接收通知,打开或关闭switch
if([self isAllowedNotification]){ pushSwith.on = YES;}else{ pushSwith.on = NO;}
同时,如果用户要主动控制是否接收推送,就需要添加switch的target-action:
[pushSwith addTarget:self action:@selector(swithOnOrOff) forControlEvents:UIControlEventValueChanged];
//根据NSUserDefaults中存储的switch状态决定switch的打开or关闭(**下文会讲到**)NSString *state = [[NSUserDefaults standardUserDefaults] valueForKey:@"push"];if (state != nil) { if ([state isEqualToString:@"on"]) { pushSwith.on = YES; }else if ([state isEqualToString:@"off"]) { pushSwith.on = NO; }}
//是否开启推送通知- (void)swithOnOrOff{ if (self.pushSwith.on) { if (![self isAllowedNotification]) {// NSLog(@"请到系统设置中打开通知"); MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:[UIApplication sharedApplication].keyWindow animated:YES]; //设置显示框的显示模式 hud.mode = MBProgressHUDModeText; hud.label.text = @"请在系统设置中打开通知"; hud.animationType = MBProgressHUDAnimationFade; //设置显示框的透明度 hud.bezelView.backgroundColor = hudBezelColor; hud.square = NO;//设置显示框的高度和宽度bu一样 [hud hideAnimated:YES afterDelay:1.0]; self.pushSwith.on = NO; }else{ [MyHttpDownLoad downloadWithType:LGDownloadTypePOST url:USERPUSH_URL param:@{@"ispush":@"1"} finish:^(NSData *data, NSDictionary *obj, NSError *error) { if ([obj[@"err_code"] integerValue] == 0) { [[NSUserDefaults standardUserDefaults] setValue:@"on" forKey:@"push"]; [[NSUserDefaults standardUserDefaults] synchronize]; } }]; } }else { [MyHttpDownLoad downloadWithType:LGDownloadTypePOST url:USERPUSH_URL param:@{@"ispush":@"0"} finish:^(NSData *data, NSDictionary *obj, NSError *error) { if ([obj[@"err_code"] integerValue] == 0) {// NSLog(@"关闭推送通知"); [[NSUserDefaults standardUserDefaults] setValue:@"off" forKey:@"push"]; [[NSUserDefaults standardUserDefaults] synchronize]; } }]; }}
在switchOnOrOff方法中,如果用户是打开switch,首先需要判断系统是否接收通知,如果不接收,需要提示去系统设置中打开应用的允许接收推送,如果系统接收通知,则将switch的状态传给服务器保存,服务器正确返回,将此状态用NSUserDefault保存在本地,以便下次进到包含switch的页面,正确显示switch的状态。
这样就简单实现了是否接收推送的设置,希望对大家有帮助!写的有点乱,见谅。
0 0
- iOS客户端是否接收推送的设置
- iOS获取设置的推送是否打开的方法
- Android客户端接收来自Faye的消息推送
- 客户端接收服务端消息推送sockjs-client的使用
- iOS怎么判断用户是否打开了系统设置里面推送通知的开关?
- ios的远程推送客户端及服务器
- 使用极光推送做iOS客户端的推送
- 判断iOS的推送是否打开
- iOS 本地接收消息推送
- iOS 极光推送接收通知
- iOS接收推送消息跳转相应的页面问题
- 程序中控制是否接收推送通知
- 关于IOS推送声音的设置
- 本地推送。启动画面的设置(iOS)
- iOS推送通知的证书设置
- 【转】iOS推送通知的证书设置
- iOS推送通知的证书设置
- ios推送通知设置
- Spring boot 集成 aop 配置
- 10进制和62进制相互转换
- 洛谷 P1759 通天之潜水
- HTML与XHTML之间的区别
- IPC机制
- iOS客户端是否接收推送的设置
- java中Set、List、Map
- GitHub上创建博客
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- get与post的区别
- nRF52832 PPI
- Oracle数据库基本常用命令
- JQuery 实现动画与特效练习2
- 使用ngrok 二 -- 微信公众号笔记---本地调试微信接口