UILocalNotification本地通知的使用方法

本文所写方法主要应用UILocalNotification达到本地推送通知栏信息

取消了其他教程里过期的UIAlertView方法

使用UILocalNotification主要分为创建 调用 取消 三个步骤

同时注意 如果调用[NSDate dateWithTimeIntervalSince1970:alertTime]这个方法 这个时间不是从显示1970年1月1日开始计算 而是1970年1月1日8点开始计算

具体详见格林威治时间相关信息

1.创建UILocalNotification 分别在AppDelegate和具体实现通知的Controller中写入以下代码 需要注意的是创建方法中的Key值 是用于后面取消时候的标记

AppDelegate

- (void)applicationDidBecomeActive:(UIApplication *)application {
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    //取消徽章
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}

#pragma mark 本地通知回调函数 当应用程序在前台时调用
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    //更新显示的徽章个数
    NSInteger badge = [UIApplication sharedApplication].applicationIconBadgeNumber;
    badge--;
    badge = badge >= 0 ? badge : 0;
    [UIApplication sharedApplication].applicationIconBadgeNumber = badge;
}
Controller

#pragma mark 本地通知功能
+ (void)registerLocalNotification:(NSInteger)alertTime {
    //建立本地通知对象
    UILocalNotification *notification=[[UILocalNotification alloc]init];
    //设置触发通知的时间
    NSDate *fireDate=[NSDate dateWithTimeIntervalSince1970:alertTime];
    NSLog(@"触发通知的时间=%@",fireDate);
    notification.fireDate=fireDate;
    //设置时区
    notification.timeZone=[NSTimeZone defaultTimeZone];
    //设置重复的间隔
    notification.repeatInterval=kCFCalendarUnitDay;
    //设置通知内容
    notification.alertBody=@"早安哦~今天也很想你";
    notification.applicationIconBadgeNumber=1;
    //通知被触发时播放的声音
    notification.soundName=UILocalNotificationDefaultSoundName;
    //创建本地通知的info信息 用于取消通知
    NSDictionary *info = [NSDictionary dictionaryWithObject:@"name"forKey:@"weather"];
    notification.userInfo = info;
    //ios8后 需要添加这个注册 才能得到授权
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
        UIUserNotificationType type =  UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type
                                                                                 categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        //通知重复提示的单位 可以是天 周 月
        notification.repeatInterval = NSCalendarUnitDay;
    } else {
        //通知重复提示的单位 可以是天 周 月
        notification.repeatInterval = NSDayCalendarUnit;
    }
    // 执行通知注册
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
}

#pragma mark 取消某个本地通知
+ (void)cancelLocalNotificationWithKey:(NSString *)key {
    //获取所有本地通知数组
    NSArray *localNotifications = [UIApplication sharedApplication].scheduledLocalNotifications;

    for (UILocalNotification *notification in localNotifications) {
        NSDictionary *userInfo = notification.userInfo;
        if (userInfo) {
            //根据设置通知参数时指定的key来获取通知参数
            NSString *info = userInfo[key];
            //如果找到需要取消的通知,则取消
            if (info != nil) {
                [[UIApplication sharedApplication] cancelLocalNotification:notification];
                break;
            }
        }
    }
}

2.调用UILocalNotification 因为上面代码把调用方法封装成了类方法 直接用相应的Controller类直接调用

#pragma mark 调用本地通知方法
- (void)localNotification
{
    //调用本地通知方法
    [MainViewController registerLocalNotification:p];
    NSLog(@"开启本地通知");
}

3.取消UILocalNotification 取消方法同理 也是类方法的调用 根据定义时的方法中Key值取消相应的通知

-(void)notificationSwitch
{
    if (noticeSwitch.on==YES) {
        //调用本地通知
        [self localNotification];
        NSLog(@"开启本地通知");
    }
    if (noticeSwitch.on==NO) {
        [MainViewController cancelLocalNotificationWithKey:@"weather"];
        NSLog(@"关闭本地通知");
    }
}
时间: 2024-10-28 09:45:38

UILocalNotification本地通知的使用方法的相关文章

iOS开发中UILocalNotification本地通知实现简单的提醒功能

这段时间项目要求做一个类似的闹钟提醒功能,对通知不太熟悉的我,决定先用到xcode自带的本地通知试试,最终成功的实现了功能,特整理分享下. 它的表现特点: app关闭的时候也能接收和显示通知. app处于后台的时候能接收通知也能显示. app处于前台的时候能接收,但不能显示,但是会走应用程序delegate中的方法 具体的创建方法: ->创建一个本地通知对象UILocalNotification ->设置fireDate,AlertBody,AlertAction,soundName,appl

UILocalNotification本地通知

// 执行通知一定要退出应用或挂起应用(进入后台)才能收到通知. 1.在iOS8及其以后版本中使用本地消息需要先获得用户的许可,否则无法成功注册本地消息.因此,我们将询问用户许可的代码片段添加到了app启动后的入口方法中(AppDelegate中的didFinishLaunchingWithOptions) func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSOb

IOS UILocalNotification 本地通知

iOS8之后,要实现badge.alert和sound等都需要用户同意才能,因为这些都算做Notification“通知”, 为了防止有些应用动不动给用户发送“通知”骚扰用户, 通知,需要我们自己注册,注册代码为 只是部分通知,仅作参考

Ios开发中UILocalNotification实现本地通知实现提醒功能

这两天在做一个日程提醒功能,用到了本地通知的功能,记录相关知识如下: 1.本地通知的定义和使用: 本地通知是UILocalNotification的实例,主要有三类属性: scheduled time,时间周期,用来指定iOS系统发送通知的日期和时间: notification type,通知类型,包括警告信息.动作按钮的标题.应用图标上的badge(数字标记)和播放的声音: 自定义数据,本地通知可以包含一个dictionary类型的本地数据. 对本地通知的数量限制,iOS最多允许最近本地通知数

iOS本地通知UILocalNotification

1.本地通知的定义和使用: 本地通知是UILocalNotification的实例,主要有三类属性: scheduled time,时间周期,用来指定iOS系统发送通知的日期和时间: notification type,通知类型,包括警告信息.动作按钮的标题.应用图标上的badge(数字标记)和播放的声音: 自定义数据,本地通知可以包含一个dictionary类型的本地数据. 对本地通知的数量限制,iOS最多允许最近本地通知数量是64个,超过限制的本地通知将被iOS忽略.  代码如下 复制代码

UILocalNotification实现本地通知实现提醒功能

1.本地通知的定义和使用: 本地通知是UILocalNotification的实例,主要有三类属性: scheduled time,时间周期,用来指定iOS系统发送通知的日期和时间: notification type,通知类型,包括警告信息.动作按钮的标题.应用图标上的badge(数字标记)和播放的声音: 自定义数据,本地通知可以包含一个dictionary类型的本地数据. 对本地通知的数量限制,iOS最多允许最近本地通知数量是64个,超过限制的本地通知将被iOS忽略.  代码如下 复制代码

本地通知 LocalNotification

本地通知 LocalNotification  在Appdelegate中实现以下两个方法 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. //设置桌面红点内的数字 // application.app

【设定本地通知为周一到周五提醒, 周末不提醒解决办法】

iOS开发中的信息提示推送方式,一类是远程服务器推送(APNS)与UILocalNotification本地通知的,我们知道UILocalNotification的通知重复提示的单位是以是秒.分.时.天.周.月等. 如图: 那么问题来了, 要实现标题所说的该怎么办呢? 哈哈... 小编第一想到是的先判断系统时间为星期几, 然后分别设置5个以周为单位的通知, 但考虑到很麻烦, 小编本人最怕麻烦了? 于是开始向他(她)人请教. 这是位美女哦~ 这里不介绍了, 感谢~~ 说到这估计有人要砍人了, 说了

iOS8 本地通知基本用法

1.本地通知的定义和使用: 本地通知是UILocalNotification的实例,主要有三类属性: scheduled time,时间周期,用来指定iOS系统发送通知的日期和时间: notification type,通知类型,包括警告信息.动作按钮的标题.应用图标上的badge(数字标记)和播放的声音: 自定义数据,本地通知可以包含一个dictionary类型的本地数据. 对本地通知的数量限制,iOS最多允许最近本地通知数量是64个,超过限制的本地通知将被iOS忽略. 在iOS8 之前的本地