美文网首页iOS随笔
iOS 本地推送通知

iOS 本地推送通知

作者: TIGER_XXXX | 来源:发表于2017-08-02 17:56 被阅读13次
  1. 什么是本地推送通知
    不需要联网的情况下,应用程序经由系统发出的通知
  2. 本地推送的使用场景
    定时提醒,如玩游戏、记账、闹钟、备忘录等
  3. 实现本地推送通知的步骤
    1. 创建本地推送通知的对象UILocalNotification
    2. 设置本地推送通知对象的属性
      • fireDate 推送的时间
      • alertBody 通知的内容
      • alertName 锁屏时的标题
      • soundName 音效名称
      • applicationIconBadgeNumber 徽章显示的数字
      • timeZone 时区
    3. 将通知排入到应用程序中
  4. 点击通知内容的处理
    1. 应用没有关闭,在后台
      1. 自动进入前台
      2. 自动调用AppDelegate下的didReceiveLocalNotification方法
    2. 应用已关闭
      1. 自动进入应用
      2. 自动执行AppDelegate下的didFinishLaunchingWithOptions方法
  5. 代码
    写在AppDelegate.m中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0) {//iOS8以后需要询问用户是否允许接收通知
        //一下代码回实现的效果是
        //第一次运行程序,系统弹出一个提示框
        //询问用户是否允许接收通知
        UIUserNotificationType noteType = UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge;
        UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:noteType categories:nil];
        [application registerUserNotificationSettings:setting];
    }
    
    //如果是因为点击查看了通知而启动了应用程序
    //那么通知的信息都会存在launchOptions参数中
    UILocalNotification *notification = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
    if (notification != nil) {//点通知进来的
        UILabel *label = [[UILabel alloc]init];
        label.frame = CGRectMake(0, 40, 300, 200);
        label.backgroundColor = [UIColor blueColor];
        label.numberOfLines = 0;
        label.font =[UIFont systemFontOfSize:30];
        label.textColor = [UIColor whiteColor];
        label.text = [NSString stringWithFormat:@"3333333%@",notification.userInfo];
        [self.window.rootViewController.view addSubview:label];
        [application setApplicationIconBadgeNumber:0];
    }
    return YES;
}


/*
 1.App在前台,通知到了,直接自动执行该方法
 2.App在后台,通知到了,点击查看通知,该方法才执行
 3.App已经退出,通知到了,点击查看通知,此方法不执行,但是didFinishLaunchingWithOptions方法一定会被执行,通知传入的参数也可以在launching方法中获取到
 */
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    UILabel *label = [[UILabel alloc]init];
    label.frame = CGRectMake(0, 250, 300, 200);
    label.backgroundColor = [UIColor grayColor];
    label.numberOfLines = 0;
    label.font =[UIFont systemFontOfSize:30];
    label.textColor = [UIColor whiteColor];
    //alertBody用于存储显示的通知的文字内容
    //uesrInfo用于存储额外要传递的通知内容
    label.text = [NSString stringWithFormat:@"%@",notification.userInfo];
    [self.window.rootViewController.view addSubview:label];
    //去掉应用程序图标中出现的红色数字提醒
    [application setApplicationIconBadgeNumber:0];
}

写在注册通知的位置

//1.创建本地通知对象
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    
    //2.设置通知的一些属性
    notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10];//10秒后发通知
    notification.alertBody = @"这是一条新的通知";
    notification.userInfo = @{@"name":@"张三",
                               @"age":@20
                              };
    notification.applicationIconBadgeNumber = 2;
    
    //3.将通知添加到应用程序的日程清单中
    UIApplication *application = [UIApplication sharedApplication];
    [application scheduleLocalNotification:notification];

demo:https://github.com/TigerCui/iOSDemo/tree/master/LocalNotification

相关文章

  • iOS 通知机制总结

    iOS中提供了2种推送通知 本地推送通知(Local Notification) 远程推送通知(Remote No...

  • iOS-消息推送

    iOS 消息推送包括远程推送通知(Remote Notification)和本地推送通知(Local Notifi...

  • iOS 推送通知及通知扩展

    级别: ★★☆☆☆标签:「iOS 本地推送」「iOS 远程推送」「iOS通知扩展」作者: dac_1033审校: ...

  • 26 - 推送

    iOS中提供了2种推送通知: 本地推送通知(Local Notification) 远程推送通知(Remote N...

  • iOS推送通知概览

    iOS推送通知概览 一、响应推送(本地通知 和 远程通知 都合适) iOS 10 以前 1. UIUserNoti...

  • iOS本地通知和远程推送

    iOS 本地通知和远程推送 推送通知的应用,可以推送最新的消息给用户,获得更多的关注。推送分为本地推送和远程推送两...

  • iOS 本地推送通知

    本地推送通知 对本地通知的数量限制,iOS最多允许最近本地通知数量是64个,超过限制的本地通知将被iOS忽略。 a...

  • UILocalNotification

    iOS提供两种推送机制: 本地推送通知(Local Notification)与远程推送通知(Remote Not...

  • 技术贴:5.iOS中的推送(本地推送、极光推送)

    iOS中分为本地推送和远程推送两种; 本地推送: 1.创建一个本地通知(UILocalNotification)(...

  • iOS 关于远程推送的知识普及

    首先简单介绍一下iOS下推送通知吧!,推送通知分为有local本地推送,remote远程推送,而iOS7之后对远程...

网友评论

    本文标题:iOS 本地推送通知

    本文链接:https://www.haomeiwen.com/subject/ltrylxtx.html