仿qq音乐,通知设置界面

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容