码迷,mamicode.com
首页 > 其他好文 > 详细

本地通知

时间:2015-10-15 14:23:29      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

本地通知是由本地应用触发的,它是基于时间行为的一种通知形式

步骤:

  1. 创建UILocalNotification。 
  2. 设置处理通知的时间fireDate。 
  3. 配置通知的内容:通知主体、通知声音、图标数字等。 
  4. 配置通知传递的自定义数据参数userInfo(这一步可选)。 
  5. 调用通知,可以使用scheduleLocalNotification:按计划调度一个通知,也可以使用presentLocalNotificationNow立即调用通知。

 

AppDelegate.h文件中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//兼容iOS7.0及以后的版本, 版本适配
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]];
    }
    
    //被杀掉进程后,接收本地通知
    UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
    if (notification) {
        //应用程序是点击本地通知启动的
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:notification.userInfo[@"notification"] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [alert show];
    }
    return YES;
}
#pragma mark 调用过用户注册通知方法之后执行(也就是调用完registerUserNotificationSettings:方法之后执行)
//接收本地通知, 应用程序在后台
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
    NSLog(@"%@", notification.userInfo[@"notification"]);
    //取消本地通知
    [application cancelLocalNotification:notification];
}

#pragma mark 进入前台后设置消息信息
- (void)applicationWillEnterForeground:(UIApplication *)application {
    [[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];// 默认0 进入前台取消应用消息图标
}

 

.m文件中

- (IBAction)addNotification:(id)sender {
    //1.注册通知
    
    //实例化通知对象
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    //通知发出的时间, 当前时间7秒钟之后
    notification.fireDate = [[NSDate date] dateByAddingTimeInterval:7];
    
    //设置循环提醒
    //循环标准的日历
    notification.repeatCalendar = [NSCalendar currentCalendar];
    //循环的标准  通知重复次数
    notification.repeatInterval = NSCalendarUnitMinute;
    
    //时区
    notification.timeZone = [NSTimeZone defaultTimeZone];
    //提醒的内容
    notification.alertBody = @"今天没吃药,吃药时间到了。";
    notification.alertAction = @"打开";  //待机界面的滑动动作提示
    //提醒的声音
    notification.soundName = @"msgcome.wav";
    
    notification.alertLaunchImage=@"";//通过点击通知打开应用时的启动图片
    
    //应用程序图标右上角显示的消息数
    notification.applicationIconBadgeNumber = 1;
    //附加的备注信息
    notification.userInfo = @{@"notification" : @"吃药"};
    
    //调用通知
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    
}

效果:

技术分享

 

7秒之后:

技术分享

点击后进入程序:

技术分享

本地通知

标签:

原文地址:http://www.cnblogs.com/10-19-92/p/4882159.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!