仿qq音乐,通知设置界面

2016-04-13  本文已影响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

上一篇 下一篇

猜你喜欢

热点阅读