夜间模式&消息推送

夜间模式按钮

if (indexPath.row == 2 || indexPath.row == 3)
{
UISwitch * swi = [[UISwitch alloc]initWithFrame:CGRectMake(SCREEN_W - 60, 5, 50, 30)];
//设置颜色
swi.onTintColor = [UIColor greenColor];
swi.tag = indexPath.row;
[swi addTarget:self action:@selector(changeOption:) forControlEvents:UIControlEventValueChanged];
[cell.contentView addSubview:swi];
}

实现方法
-(void)changeOption:(UISwitch *)swi
{
if (swi.tag == 2) {
//夜间模式
if (swi.on) {
UIApplication * app = [UIApplication sharedApplication];
AppDelegate * delegate = app.delegate;
//设置view的背景色
_darkView.backgroundColor = [UIColor blackColor];
_darkView.alpha = 0.2;
//关掉view的交互属性
_darkView.userInteractionEnabled = NO;
[delegate.window addSubview:_darkView];
}
else
{
[_darkView removeFromSuperview];
}
}
else
{
//推送消息
if (swi.on) {
//创建本地推送任务
[self createLocalNotification];
}
else
{
//取消推送任务
[self cancelLocalNotification];
}
}
}

创建推送消息

推送按钮

-(void)createLocalNotification
{

//解决iOS8以后本地推送无法接收到推送消息的问题
//获取系统的版本号
float systemVersion = [[UIDevice currentDevice].systemVersion floatValue];
if (systemVersion >= 8.0)
{
    //设置推送消息的类型
    UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
    //将类型添加到设置里
    UIUserNotificationSettings * settings = [UIUserNotificationSettings settingsForTypes:type categories:nil];
    //将设置内容注册到系统管理里面
    [[UIApplication sharedApplication]registerUserNotificationSettings:settings];
}

//初始化本地推送
UILocalNotification * localNotification = [[UILocalNotification alloc]init];
//设置从当前开始什么时候开始推送
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:30];
//设置需要推送的重复周期
localNotification.repeatInterval = NSCalendarUnitDay;
//设置推送的时区
localNotification.timeZone = [NSTimeZone defaultTimeZone];
//设置推送内容
localNotification.alertBody = @"亲~~~你好久没来爱生活了,快来看看我吧!";
//设置推送时的音效
localNotification.soundName = @"";
//设置提示消息的个数
localNotification.applicationIconBadgeNumber = 1;
//将推送任务添加到系统管理里面
[[UIApplication sharedApplication]scheduleLocalNotification:localNotification];

}

-(void)cancelLocalNotification
{
UILocalNotification * localNotification;

//第一种,直接取消全部的推送任务
//[[UIApplication sharedApplication]cancelAllLocalNotifications];

//第二种,取消指定条件下的推送任务
NSArray * array = [[UIApplication sharedApplication]scheduledLocalNotifications];
for (UILocalNotification * noti in array) {
    if ([noti.alertBody isEqualToString:@"亲~~~你好久没来爱生活了,快来看看我吧!"]) {
        [[UIApplication sharedApplication]cancelLocalNotification:noti];
        //取消推送任务后重置icon 的数值
        [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    }
}

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,088评论 3 38
  • 哦吼吼,又研究了几天,把FMDB这个封装好的数据库搞定了,写了个简单的例子,基于FMDB的添删改查操作,界面很一般...
    lichengjin阅读 562评论 0 0
  • 作者唯一QQ:228544117。。。。。 =========后面的都要新建一个文章 AppDelegate.h ...
    CC_iOS阅读 948评论 0 0
  • 本文讲解的是最基本的JSON数据解析过程: 新创建一个json文件:如下图所示: 代码: {"human":[{"...
    你正哥来了阅读 521评论 0 4
  • 文|似舞 -1- 秋风习习,拂得人心旷神怡,我和先生步行在去超市的路上。他挽着我的手,指着天上的月亮: “天上弯弯...
    陈欢欢阅读 1,599评论 75 64