关闭

本地通知

标签: 本地通知小红帽
81人阅读 评论(0) 收藏 举报
分类:

在iOS下应用分为两种不同的notification种类,分别是本地和远程(APNS),本地notification是由iOS系统下notificationManager统一管理,我们只需要将组装好的本地通知对象添加到系统的notification管理队列中,系统会在指定的时间进行激发该通知。本地通知只能在前台后台触发,不能在其他状态下触发。

1.由于iOS8之后注册通知和之前不一样,所以要在AppDelegate的didFinishLaunchingWithOptions中进行判断:

#ifdef __IPHONE_8_0

    if ([[UIApplication sharedApplication]respondsToSelector:@selector(registerUserNotificationSettings:)]) {

        

        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound |UIUserNotificationTypeAlert |UIUserNotificationTypeBadge categories:nil];

        [[UIApplication sharedApplication]registerUserNotificationSettings:settings];

        

    }else {


        //ios8.0之前

        UIRemoteNotificationType myTypes = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;

        [[UIApplication sharedApplication]registerForRemoteNotificationTypes:myTypes];

   

    }

#else

#endif

2.在AppDelegate中写接收通知的方法

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {

    

    NSLog(@"%@",notification.userInfo);

    //在前台就不需要小红帽提醒

    application.applicationIconBadgeNumber = 0;

    

}

3.在ViewController中:

//创建本地通知对象

UILocalNotification *localNotification =[[UILocalNotification alloc]init];

//时间上的调度。时间有两种:一种是1970年以后的秒数 一种是2000年

localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10.0];//fireDate就是激发的准确时间

 //timeZone是通知激发的时间是否根据时区的改变而改变,如果是nil,通知会在一段时间后激发,而不是在某一确定的时间被激发

    //repeatInterval被重复激发的时间差,时间差会根据日历单位,例如每周,如果不设置将不会被重复

//    localNotification.timeZone

//    localNotification.repeatInterval

//内容

localNotification.alertBody = @"心情很美丽";

//其他内容

localNotification.applicationIconBadgeNumber = 1;

localNotification.userInfo = @{@"someKey":@"someValue"};

//注册

[[UIApplication sharedApplication]scheduleLocalNotification:localNotification];

//4.写到这里发现之前明明注册了小红帽却没有出来,这时就需要在appDelegate的

didFinishLaunchingWithOptions中写上一句话:

application.applicationIconBadgeNumber = 99;




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1846次
    • 积分:125
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档