UILocalNotification

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取出本地推送通知对象

你可能感兴趣的:(UILocalNotification)