iOS开发——本地通知,本地推送(UILocalNotification)
2015-11-18 11:30
591 查看
iOS开发中经常用到本地通知,有时也叫做本地推送,两者都是同一个类UILocalNotification,这个类可以用于开发者灵活控制一些需要推送到通知栏的信息,比如提示信息,日程提醒或者是一些其他应用信息,它和远程通知(也叫远程推送,RemoteNotification)本质没有多大区别,唯一区别在于发起的地方不同,本地通知在APP内发起,而远程通知由远端服务器发起通过APNS推送到设备,两者展示的方式都一样,都会出现在通知栏,都可以携带信息。下面用通过三个步骤来讲下本地通知的使用方法。
一、发起通知,也就是本地通知的初始化,需要注意的是iOS8及以后发起通知需要先进行一个注册。
模拟器也可以接受本地通知,效果如下:
二、接收通知,发起了通知,如果我们需要处理接收到的信息,那么需要在AppDelegate里面作以下处理。
打印出的效果如下:
三、取消通知,有时候我们需要取消已经schedule的本地通知,那么就需要使用到:
Demo地址:https://github.com/LeoTangCN/LocalNotificationDemo
以上即是本次分享,多谢观看!
一、发起通知,也就是本地通知的初始化,需要注意的是iOS8及以后发起通知需要先进行一个注册。
- (void)initializeLocalNotification { // 初始化本地通知 UILocalNotification *notification = [[UILocalNotification alloc] init]; // 设置启动时间 notification.fireDate = [[NSDate date] dateByAddingTimeInterval:15.0f]; // 设置时区 notification.timeZone = [NSTimeZone defaultTimeZone]; // 设置用户信息 notification.userInfo = @{ @"test":@"test", }; // 通知栏提示信息 notification.alertBody = @"this is a local notification"; // 通知音效 notification.soundName = UILocalNotificationDefaultSoundName; // badgeNumber notification.applicationIconBadgeNumber = 1; // iOS8及以后需要添加这个注册,才能得到授权 if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) { UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound; UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; } // 调用通知 [[UIApplication sharedApplication] scheduleLocalNotification:notification]; }
模拟器也可以接受本地通知,效果如下:
二、接收通知,发起了通知,如果我们需要处理接收到的信息,那么需要在AppDelegate里面作以下处理。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 如果程序被kill掉,点击通知栏通知进入程序,那么本地通知(远程通知也是一样)将从这里接收 // 判断是否有本地通知信息,判断远程通知的Key为 UIApplicationLaunchOptionsRemoteNotificationKey if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) { [self dealLocalNotificationWithUserInfo:launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]]; } return YES; } - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { // 如果程序只是挂起,或者是程序正在运行,那么本地通知(远程通知也类似,不过是在另外一个代理方法里接收)将从这里接受 [self dealLocalNotificationWithUserInfo:notification.userInfo]; } /** * 处理本地通知 * * @param userInfo 通知内容 */ - (void)dealLocalNotificationWithUserInfo:(NSDictionary *)userInfo { NSLog(@"receive localNotification - %@", userInfo); }
打印出的效果如下:
三、取消通知,有时候我们需要取消已经schedule的本地通知,那么就需要使用到:
- (void)cancelLocalNotification { // 取消所有本地通知 [[UIApplication sharedApplication] cancelAllLocalNotifications]; // 取消特定本地通知 // 通过遍历的方式找到你想要取消的通知 for (UILocalNotification *notification in [UIApplication sharedApplication].scheduledLocalNotifications) { // 判断你需要取消的通知,本地的通知的很多属性都可以用来判断,启动日期、userInfo、alertBody都可以 if ([notification.userInfo[@"test"] isEqualToString:@"test"]) { [[UIApplication sharedApplication] cancelLocalNotification:notification]; } } }
Demo地址:https://github.com/LeoTangCN/LocalNotificationDemo
以上即是本次分享,多谢观看!
相关文章推荐
- ios上 更改 状态栏(UIStatusBar)的颜色,你值得一看、收藏
- android gradle build
- UICollectionView基础
- UVA 题目10128 Queue(DP)
- UITableViewDelete 删除
- UITabView 添加
- Random_QuickSort
- UIView常用的一些方法小记之setNeedsDisplay和setNeedsLayout 还有drawRect方法
- 根据源码总结String,StringBuffer,StringBuider差异
- iOS小技巧:用runtime 解决UIButton 重复点击问题
- UIButton篇
- 【HDU5565 BestCoder Round 62 (div1)C】【STL or 二分答案 or 计数排序】Clarke and baton n个人减肥m次求最后异或值
- UItableViewController添加UITouch事件(添加点击事件)
- MySQL 报错 Truncated incorrect INTEGER value: ''
- iOS9 Storyboard unwind segue反回传递事件时机详细步骤
- EasyUI 之datagrid 使用 【DataGrid属性解释】
- openstack通过qemu-guest-agent在物理机上操作虚拟机
- webpack + babel + vue 环境设置
- UIViewController懒加载模式_易懂版
- UIAlertController的AlertView形式 加输入框 用法