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.代码

  1. 写在AppDelegate.m中
      1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      2.  
      3. if ([UIDevice currentDevice].systemVersion.doubleValue >= 8.0) {//iOS8以后需要询问用户是否允许接收通知
      4. //一下代码回实现的效果是
      5. //第一次运行程序,系统弹出一个提示框
      6. //询问用户是否允许接收通知
      7. UIUserNotificationType noteType = UIUserNotificationTypeAlert | UIUserNotificationTypeSound | UIUserNotificationTypeBadge;
      8. UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:noteType categories:nil];
      9. [application registerUserNotificationSettings:setting];
      10. }
      11.  
      12. //如果是因为点击查看了通知而启动了应用程序
      13. //那么通知的信息都会存在launchOptions参数中
      14. UILocalNotification *notification = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey];
      15. if (notification != nil) {//点通知进来的
      16. UILabel *label = [[UILabel alloc]init];
      17. label.frame = CGRectMake(, , , );
      18. label.backgroundColor = [UIColor blueColor];
      19. label.numberOfLines = ;
      20. label.font =[UIFont systemFontOfSize:];
      21. label.textColor = [UIColor whiteColor];
      22. label.text = [NSString stringWithFormat:@"3333333%@",notification.userInfo];
      23. [self.window.rootViewController.view addSubview:label];
      24. [application setApplicationIconBadgeNumber:];
      25. }
      26. return YES;
      27. }
      28.  
      29. /*
      30. 1.App在前台,通知到了,直接自动执行该方法
      31. 2.App在后台,通知到了,点击查看通知,该方法才执行
      32. 3.App已经退出,通知到了,点击查看通知,此方法不执行,但是didFinishLaunchingWithOptions方法一定会被执行,通知传入的参数也可以在launching方法中获取到
      33. */
      34. - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
      35. UILabel *label = [[UILabel alloc]init];
      36. label.frame = CGRectMake(, , , );
      37. label.backgroundColor = [UIColor grayColor];
      38. label.numberOfLines = ;
      39. label.font =[UIFont systemFontOfSize:];
      40. label.textColor = [UIColor whiteColor];
      41. //alertBody用于存储显示的通知的文字内容
      42. //uesrInfo用于存储额外要传递的通知内容
      43. label.text = [NSString stringWithFormat:@"%@",notification.userInfo];
      44. [self.window.rootViewController.view addSubview:label];
      45. //去掉应用程序图标中出现的红色数字提醒
      46. [application setApplicationIconBadgeNumber:];
      47. }
  2. 写在注册通知的位置
      1. //1.创建本地通知对象
      2. UILocalNotification *notification = [[UILocalNotification alloc] init];
      3.  
      4. //2.设置通知的一些属性
      5. notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:];//10秒后发通知
      6. notification.alertBody = @"这是一条新的通知";
      7. notification.userInfo = @{@"name":@"张三",
      8. @"age":@
      9. };
      10. notification.applicationIconBadgeNumber = ;
      11.  
      12. //3.将通知添加到应用程序的日程清单中
      13. UIApplication *application = [UIApplication sharedApplication];
      14. [application scheduleLocalNotification:notification];

demo:https://github.com/TigerCui/LocalNotification.git

iOS 本地推送通知的更多相关文章

  1. (七十三)iOS本地推送通知的实现

    iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被 ...

  2. IOS之推送通知(本地推送和远程推送)

    推送通知和NSNotification是有区别的: NSNotification:是看不到的 推送通知:是可以看到的 IOS中提供了两种推送通知 本地推送通知:(Local Notification) ...

  3. iOS 进阶---推送通知之本地通知

    1.推送通知的2种方式 1)本地推送通知(Local Notification) 2)远程推送通知(Remote Notification) 2.通知的作用 可以让不在前台运行的app,告知用户app ...

  4. iOS 远程推送通知

    1.什么是推送通知 在某些特殊情况下,应用程序被动收到的以不同种界面形式出现的提醒信息 推送通知的作用:可以让不在前台运行的app通知app发生了改变 iOS中得推送通知种类 远程推送通知(Remot ...

  5. Swift 本地推送通知UILocalNotification

    Notification是智能手机应用开发中常用的信息传递机制,它不用消耗更多资源去不停的检查信息状态,可以非常好的节省资源. 在iOS中分为两种通知:本地.远程.本地的UILocalNotifica ...

  6. IOS 本地推送(UILocalNotification)

    推送通知 ● 注意:这里说的推送通知跟NSNotification有所区别 • NSNotification是抽象的,不可见的 • 推送通知是可见的(能用肉眼看到) ● iOS中提供了2种推送通知 ● ...

  7. iOS 10推送通知开发

    原文地址:Developing Push Notifications for iOS 10,译者:李剑飞 虽然通知经常被过度使用,但是通知确实是一种获得用户关注和通知他们需要更新或行动的有效方式.iO ...

  8. iOS 远程推送通知 详解

    1: ios本地通知和远程通知 http://wangjun.easymorse.com/?p=1482 2: 苹果远程通知服务申请激活例图 (外国佬写的.) http://mobiforge.com ...

  9. 81、iOS本地推送与远程推送详解

    一.简介 分为本地推送和远程推送2种.可以在应用没打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户石否同意,如果同意则正常使用:如果用户不同意则下次打开程序 ...

随机推荐

  1. Oracle_SQL函数-单行函数

    SQL函数 SQL函数分类 SQL函数主要有两种,分为单行函数.多行函数 单行函数:只对一行进行变换,每行返回一个结果.可以转换数据类型,可以嵌套参数可以是一列或一个值 多行函数:多行函数,每次对一组 ...

  2. Android 短信监听及用途分析

    监听系统短信这个只能作为一个技术点来研究下,读者可能在工作中可能不会哦涉及到,一般的应用软件也不会有这个需求 但是作为程序员呢,多了解一下也是好的. Android 监听系统短信有什么用? 1.对系统 ...

  3. Windows下程序启动时出现0xc000007b错误的解决方案

    一.背景介绍 不久前用Qt开发了一款小工具在公司使用,Debug运行时一切正常.可是当Release编译发布打包之后,运行时弹出这样的提示框: 略一思考,首先排除了DLL缺失的可能性.我知道Qt应用程 ...

  4. AngularJS------认识AngularJS

    之前在C#中也经常使用MVC开发模式,对其的使用有一定的了解,但是现在需要学习AngularJS,这是纯前台的JS代码,那么为什么需要学习这个呢,就是想将验证这里全部在前台执行,不需要在后台代码里面出 ...

  5. 移动端click事件延迟300ms问题

    因为历史原因,移动端点击事件会有300ms延迟,来判断用户是连续双击缩放还是点击跳转.即如果300ms内连续点击两次,则会理解为对页面进行缩放操作(当然前提是移动端页面设置为可缩放的):在一次点击之后 ...

  6. git切换到远程分支

    远程仓库 git clone 下来,当你执行 git branch,你只会看到 * master 并不会看到其他分支,即便远程仓库上有其他分支,使用 git branch -va 可以查看本地+远程分 ...

  7. Nancy之结合tinyfox给我们的应用提供简单的数据服务

    说到提供数据服务给我们的一些应用,估计用的最多的也就是json和xml这两种数据格式 实现的方法也是多种多样,web api,mvc的jsonresult和contentresult...等等 本文是 ...

  8. 用NPOI从DataBase到Excel

    NPOI的C# Helper代码 public static void WriteExcel(DataTable dt, string filePath) { ) { HSSFWorkbook wk ...

  9. 积累一下SQL

    开篇先自我检讨一下,写了博客几年以来首次试过连续两个月没出过博文,有客观也有主观原因,但是最近这年里博文数量也越来越少,博文的质量也每况日下.希望自己一直能坚持下来,多写写博文,这月尽量多写几篇来弥补 ...

  10. Devexpress TextAnnotation

    private void BindData() { chartControl1.AnnotationRepository.Clear(); chartControl1.Series.Clear(); ...