113 本地通知

1.从iOS8 开始想要使用本地通知要首先注册:

// 注意: 在iOS8中, 必须提前注册通知类型
if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0) {
    UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:type categories:nil];
// 注册通知类型
[application registerUserNotificationSettings:settings];
}

2.本地通知的基本使用:

- (void)scheduleLocalNotification{
    NSLog(@"%s", __func__);
    // 1.创建本地通知对象
    UILocalNotification *note = [[UILocalNotification alloc] init];

    // 指定通知发送的时间(指定5秒之后发送通知)
    note.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
    // 注意: 在真实开发中一般情况下还需要指定时区(让通知的时间跟随当前时区)
    note.timeZone = [NSTimeZone defaultTimeZone];
    // 指定通知内容
    note.alertBody = @"这是通知内容";

    // 设置通知重复的周期(1分钟通知一期)
    //    note.repeatInterval = NSCalendarUnitSecond;

    // 指定锁屏界面的信息
    note.alertAction = @"这是锁屏界面的信息";

    // 设置点击通知进入程序时候的启动图片
    note.alertLaunchImage = @"Default";

    // 收到通知播放的音乐
    note.soundName = @"buyao.wav";

    // 设置应用程序的提醒图标
    note.applicationIconBadgeNumber = 998;

    // 注册通知时可以指定将来点击通知之后需要传递的数据
    note.userInfo = @{@"name":@"lnj",
                      @"age":@"28",
                      @"phone": @"12345678912"};

    // 2.注册通知(图片的名称建议使用应用程序启动的图片名称)
    UIApplication *app =  [UIApplication sharedApplication];
    // 每次调用添加方法都会将通知添加到scheduledLocalNotifications数组中
    [app scheduleLocalNotification:note];
}

3.取消本地通知:

1.取消全部的本地通知:
     UIApplication *app =  [UIApplication sharedApplication];
    // 清空通知
    [app cancelAllLocalNotifications];


2.取消某个本地通知:
     UIApplication *app =  [UIApplication sharedApplication];
    for (UILocalNotification *notification  in app.scheduledLocalNotifications){
        [app cancelLocalNotification:notification];
    }

4.本地通知的处理:
1>有本地通知 + app在后台存活 + 点击app图标启动 —–> 和普通app点击图标启动一样
2>有本地通知 + app在后台存活 + 点击本地通知启动 —–> 调用以下代理方法

/**
 *  当用户点击本地通知进入app的时候调用 、通知发出的时候(app当时并没有被关闭)
 */
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification{
//在这个方法中可以指定app跳转到某个界面
    if (application.applicationState == UIApplicationStateActive) return;
    HMViewController *homeVc = [self.window.rootViewController.childViewControllers firstObject];
    [homeVc performSegueWithIdentifier:@"home2detail" sender:notification];
}

3>有本地通知 + app在前台 —–> 调用情况2的代理方法(和2的区别只是3情况的看不到)
4>有本地通知 + app被杀死 + 点击app图标启动 —–> 和普通app点击图标启动一样
5>有本地通知 + app被杀死 + 点击本地通知启动 —–> 调用以下代理方法

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//通过UIApplicationLaunchOptionsLocalNotificationKey拿出本地通知,也可跳转到指定页面
    UILocalNotification *note = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
    return YES;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值