美文网首页
仿qq音乐,通知设置界面

仿qq音乐,通知设置界面

作者: 流行的武 | 来源:发表于2016-04-13 13:05 被阅读118次

    QQ音乐 通知设置界面

    EA845F70110F2EB35C5289F8ED7DDFDE.png

    关键代码

    //iOS8之后 
    UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSettings];
        
    //获取各个状态(声音,提醒,标记)
    int typeSound = setting.types & UIUserNotificationTypeSound;
    int typeBadge = setting.types & UIUserNotificationTypeBadge;
    int typeAlert = setting.types & UIUserNotificationTypeAlert;
        
    //iOS8之前
    UIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
    
    //获取各个状态(声音,提醒,标记
    int typeSound = (type & UIRemoteNotificationTypeSound);
    int typeBadge = (type & UIRemoteNotificationTypeBadge);
    int typeAlert = (type & UIRemoteNotificationTypeAlert);
    

    获取了这些状态就可以进行显示了

    笔者写成了一个类 下载地址

    将这个view添加到你的controller中就大功告成了。

    SystemNotificationView *view = [[SystemNotificationView alloc]initWithFrame:self.view.bounds];
    [self.view addSubview:view];
    

    SystemNotificationView.h

    #import <UIKit/UIKit.h>
    
    @interface SystemNotificationView : UIView<UITableViewDataSource,UITableViewDelegate>
    
    @property(nonatomic,copy)NSString *statue;
    
    @property(nonatomic,strong)UITableView *tableView;
    @property(nonatomic,strong)NSMutableArray *data;
    @property(nonatomic,strong)NSArray *titleArr;
    
    
    @end
    
    

    SystemNotificationView.m

    #import "SystemNotificationView.h"
    
    #define IS_OS_8_OR_LATER    ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    #define ScreenWidth ([UIScreen mainScreen].bounds.size.width)
    #define ScreenHeight ([UIScreen mainScreen].bounds.size.height)
    #define KNotiStatueOpen @"已开启    "
    #define KNotiStatueClose @"未开启    "
    @implementation SystemNotificationView
    
    - (instancetype)initWithFrame:(CGRect)frame{
        self = [super initWithFrame:frame];
        if(self){
    //        self.backgroundColor = BGColor;
            self.titleArr = @[@"声音",@"提醒",@"标记"];
            
            self.data = [NSMutableArray array];
            [self judgePushStatue];
            [self addSubview:self.tableView];
            [self.tableView reloadData];
        }
        return self;
    }
    /**
     *  tableView的get方法  懒加载
     *
     *  @return UITableView
     */
    -(UITableView *)tableView
    {
        if(_tableView==nil)
        {
            _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenHeight-10) style: UITableViewStylePlain];
            _tableView.delegate=self;
            _tableView.dataSource=self;
            _tableView.backgroundColor = BGColor;
            _tableView.contentSize = CGSizeMake(ScreenWidth, ScreenHeight-64);
            UIView *head = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, 5)];
            head.backgroundColor = BGColor;
            _tableView.tableHeaderView = head;
            UIView *foot = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, 5)];
            foot.backgroundColor = BGColor;
            
            _tableView.tableFooterView = foot;
            
        }
        return  _tableView;
    }
    #pragma mark - tableview 代理方法
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return self.data.count;
    }
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [self.data[section] count];;
    }
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        UITableViewCell *cell;
        {
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"123"];
        }
        
        if(indexPath.section == 0){
            cell.textLabel.text  =  @"接收新消息通知";
        }else{
            cell.textLabel.text = self.titleArr[indexPath.row];
        }
        
        cell.backgroundColor = [UIColor whiteColor];
        
        cell.textLabel.font = [UIFont systemFontOfSize:16];
        
        cell.detailTextLabel.text = self.data[indexPath.section][indexPath.row];
        cell.detailTextLabel.textAlignment = NSTextAlignmentLeft;
        cell.detailTextLabel.font = [UIFont systemFontOfSize:14];
        cell.detailTextLabel.textColor = [UIColor lightGrayColor];
        
        return cell;
    }
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
        [tableView deselectRowAtIndexPath:indexPath animated:NO];
        NSLog(@"如果你要开启或者关闭系统消息,请在iPhone的“设置”-“通知” 功能中,找到应用程序 进行修改");
        //[SVProgressHUD showSuccessWithStatus:@"如果你要开启或者关闭系统消息,请在iPhone的“设置”-“通知” 功能中,找到应用程序 进行修改" duration:5];
        
    }
    
    
    
    - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
    {
        return 0.1;
    }
    - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    {
        return 10;
    }
    /*
     UIUserNotificationTypeNone    = 0,      // the application may not present any UI upon a notification being received
     UIUserNotificationTypeBadge   = 1 << 0, // the application may badge its icon upon a notification being received
     UIUserNotificationTypeSound   = 1 << 1, // the application may play a sound upon a notification being received
     UIUserNotificationTypeAlert   = 1 << 2,
     */
    -(void)judgePushStatue{
        bool b ;
        NSMutableArray *arrTwo = [NSMutableArray array];
        if (IS_OS_8_OR_LATER) {
            UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSettings];
            if (UIUserNotificationTypeNone == setting.types) {
                b = NO;
            }else{
                b = YES;
            }
            int typeSound = setting.types & UIUserNotificationTypeSound;
            int typeBadge = setting.types & UIUserNotificationTypeBadge;
            int typeAlert = setting.types & UIUserNotificationTypeAlert;
            
            if(typeSound !=0){
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueOpen]];
            }else{
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueClose]];
            }
            if(typeBadge !=0){
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueOpen]];
            }else{
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueClose]];
            }
            if(typeAlert !=0){
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueOpen]];
            }else{
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueClose]];
            }
            
            
        } else {
            UIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
            int typeSound = (type & UIRemoteNotificationTypeSound);
            int typeBadge = (type & UIRemoteNotificationTypeBadge);
            int typeAlert = (type & UIRemoteNotificationTypeAlert);
            NSLog(@"%d,%d,%d",typeBadge,typeSound,typeAlert);
            
            
            if(UIRemoteNotificationTypeNone != type){
                b = YES;
            }
            if(typeSound !=0){
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueOpen]];
            }else{
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueClose]];
            }
            if(typeBadge !=0){
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueOpen]];
            }else{
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueClose]];
            }
            if(typeAlert !=0){
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueOpen]];
            }else{
                [arrTwo addObject:[NSString stringWithFormat:@"%@",KNotiStatueClose]];
            }
        }
    
        if(b){
            _statue = KNotiStatueOpen;
        }else{
            _statue = KNotiStatueClose;
        }
    
        NSMutableArray *arrOne = [NSMutableArray array];
        [arrOne addObject:[NSString stringWithFormat:@"%@",_statue]];
        [self.data addObject:arrOne];
        if(b){
            [self.data addObject:arrTwo];
        }
    }
    @end
    
    

    相关文章

      网友评论

          本文标题:仿qq音乐,通知设置界面

          本文链接:https://www.haomeiwen.com/subject/fcgwlttx.html