热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS本地推送通知

1.什么是本地推送通知不需要联网的情况下,应用程序经由系统发出的通知2.本地推送的使用场景定时提醒,如玩游戏、记账、闹钟、备忘录等3.实现本地推送通知的步骤创建本地推送通知的对象U

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 {
          
          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];
      }
  2. 写在注册通知的位置
    1. //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/LocalNotification.git


推荐阅读
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • Linux的uucico命令使用方法及工作模式介绍
    本文介绍了Linux的uucico命令的使用方法和工作模式,包括主动模式和附属模式。uucico是用来处理uucp或uux送到队列的文件传输工具,具有操作简单快捷、实用性强的特点。文章还介绍了uucico命令的参数及其说明,包括-c或--quiet、-C或--ifwork、-D或--nodetach、-e或--loop、-f或--force、-i或--stdin、-I--config、-l或--prompt等。通过本文的学习,读者可以更好地掌握Linux的uucico命令的使用方法。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 本文介绍了Windows Vista操作系统中的用户账户保护功能,该功能是为了增强系统的安全性而设计的。通过对Vista测试版的体验,可以看到系统在安全性方面的进步。该功能的引入,为用户的账户安全提供了更好的保障。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
author-avatar
珈岩夏17_963
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有