博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios本地推送
阅读量:7233 次
发布时间:2019-06-29

本文共 4565 字,大约阅读时间需要 15 分钟。

// 本地通知回调函数,当应用程序在前台时调用- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {    NSLog(@"noti:%@",notification);        // 这里真实需要处理交互的地方    // 获取通知所带的数据    NSString *key = [notification.userInfo objectForKey:LocalPushKey];    NSString *title = [notification.userInfo objectForKey:@"title"];    NSString *content = [notification.userInfo objectForKey:@"content"];        NSString *sysVersion = [UIDevice currentDevice].systemVersion;    CGFloat version = [sysVersion floatValue];        if (version >= 8.0) {        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:content preferredStyle:UIAlertControllerStyleAlert];        UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil];        [alertController addAction:okAction];        [[UIApplication sharedApplication].keyWindow.rootViewController  presentViewController:alertController animated:YES completion:nil];    }    else {        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title                                                        message:content                                                       delegate:nil                                              cancelButtonTitle:@"OK"                                              otherButtonTitles:nil];        [alert show];    }    // 更新显示的徽章个数//    NSInteger badge = [UIApplication sharedApplication].applicationIconBadgeNumber;//    badge--;//    badge = badge >= 0 ? badge : 0;    [UIApplication sharedApplication].applicationIconBadgeNumber = 1;        // 在不需要再推送时,可以取消推送    [AppController cancelLocalNotificationWithKey:key];}// 设置本地通知+ (void)registerLocalNotification:(NSNumber *)alertTime key:(NSString *)key alertBody:(NSString *)alertBody title:(NSString *) title content:(NSString *) content{    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;    [AppController cancelLocalNotificationWithKey:key];    //NSLog(@"registerLocalNotification:   %long   %@   %@   %@   %@", [alertTime integerValue], key, alertBody, title, content);    UILocalNotification *notification = [[UILocalNotification alloc] init];    // 设置触发通知的时间    NSDate *fireDate = [NSDate dateWithTimeIntervalSinceNow:[alertTime integerValue]];    //NSLog(@"fireDate=%@",fireDate);        notification.fireDate = fireDate;    // 时区    notification.timeZone = [NSTimeZone defaultTimeZone];    // 设置重复的间隔    notification.repeatInterval = kCFCalendarUnitSecond;        // 通知内容    //notification.alertTitle = @"通知";    notification.alertBody = alertBody;    notification.applicationIconBadgeNumber = 1;    // 通知被触发时播放的声音    notification.soundName = UILocalNotificationDefaultSoundName;    // 通知参数    NSDictionary *userDict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects: key, title, content, nil] forKeys:[NSArray arrayWithObjects: LocalPushKey, @"title", @"content", nil]];//[NSDictionary dictionaryWithObject:userDictData  forKey:LocalPushKey];    notification.userInfo = userDict;        // 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];}// 取消某个本地推送通知+ (void)cancelLocalNotificationWithKey:(NSString *)key {    // 获取所有本地通知数组    NSArray *localNotifications = [UIApplication sharedApplication].scheduledLocalNotifications;        for (UILocalNotification *notification in localNotifications) {        NSDictionary *userInfo = notification.userInfo;        if (userInfo) {            // 根据设置通知参数时指定的key来获取通知参数            NSString *userKey = [userInfo objectForKey:LocalPushKey];            // 如果找到需要取消的通知,则取消            if (userKey != nil && [userKey isEqualToString:key]) {                [[UIApplication sharedApplication] cancelLocalNotification:notification];                break;            }        }    }}

 

转载地址:http://fkpfm.baihongyu.com/

你可能感兴趣的文章
Python lambda介绍
查看>>
BSON与JSON的区别
查看>>
文件系统存储数据,与数据库系统存储数据的差别
查看>>
linux之awk
查看>>
第九章 接口
查看>>
XCode4.2.1 使用NavigationController实现View切换
查看>>
如何让NSURLConnection在子线程中运行
查看>>
es6-Generator
查看>>
Python3.6单例模式报错TypeError: object() takes no parameters的解决方法
查看>>
HTML常用标记(选择性,不全)
查看>>
用一辈子去领悟的22条生活真谛
查看>>
1968: [Ahoi2005]COMMON 约数研究
查看>>
discuz 启用html code 显示问题
查看>>
A1027. Colors in Mars (20)
查看>>
[SRM568]DisjointSemicircles
查看>>
9个很有发展潜力的PHP开源项目
查看>>
python中pymysql数据编码的问题
查看>>
HDFS基本原理及数据存取实战
查看>>
j2ee页面静态化方案encache web cache框架详解1
查看>>
php高级注入
查看>>