UILocalNotification
2015-12-30 本文已影响203人
kriskangdev
iOS提供两种推送机制: 本地推送通知(Local Notification)与远程推送通知(Remote Notification)
推送通知展示方式
- 屏幕顶部显示横幅
- 锁屏界面中间显示横幅
- 屏幕中间弹出提示框
- 应用图标角标数字
- 提示音
本地推送通知: 不需要接入网络就能发出的推送通知(不需要服务器的支持)
使用场景: 常用来定时提醒用户完成一些任务, 如事项提醒、日历、记账类应用等
1.创建本地通知
UILocalNotification *localNoti = [[UILocalNotification alloc]init];
2.设置相关属性
// 设置通知出现时间
localNoti.fireDate = [NSDate dateWithTimeIntervalSinceNow:fireDate];
// 设置通知主题内容
localNoti.alertBody = @"This is alertBody";
// 设置通知操作标题
localNoti.alertAction = @"LocalNotification";
// 设置重复提示时间间隔
localNoti.repeatInterval = kCFCalendarUnitMinute;
// 设置通知被触发时播放声音
localNoti.soundName = UILocalNotificationDefaultSoundName;
// 设置应用图标标记
localNoti.applicationIconBadgeNumber = 1;
// 设置通知参数(userInfo:字典类型)
localNoti.userInfo = [NSDictionary dictionaryWithObject:@"userInfo!" forKey:@"key"];
3.注册通知
// iOS 8.0后
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil]];
// 执行注册 添加一个推送到application对象
[[UIApplication sharedApplication] scheduleLocalNotification:localNoti];
} else {
[[UIApplication sharedApplication] scheduleLocalNotification:localNoti];
}
当用户点击本地推送通知,会自动打开app,这里有2种情况
- app并没有关闭,一直隐藏在后台,让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
- app已经被关闭(进程已死),启动app,启动完毕会调用AppDelegate的方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
其中launchOptions
参数通过UIApplicationLaunchOptionsLocalNotificationKey
取出本地推送通知对象