博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 本地推送
阅读量:4314 次
发布时间:2019-06-06

本文共 2372 字,大约阅读时间需要 7 分钟。

1如何生成一个本地推送

  UILocalNotification *localNotification = [[UILocalNotification alloc]init];

    // 接收到通知时,播放的音频文件

    localNotification.soundName = @"shake.wav";

    // 通知的发送时间

    localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];

    // 最好带上时区,用于对fireDate的补充

    localNotification.timeZone = [NSTimeZone defaultTimeZone];

    // 通知的内容

    localNotification.alertBody = @"通知的内容";

    // 锁屏界面显示的通知内容,灰色小字

    localNotification.alertAction = @"通知的内容2(在锁屏界面)";

    // 点击通知,打开应用时,加载的启动图片,只能是是应用的启动图片

    localNotification.alertLaunchImage = @"Default";

    // 接收到通知后,图标右上角显示的数字

    localNotification.applicationIconBadgeNumber = 20;

    // 通知的附加信息,字典类型

    localNotification.userInfo = @{

                                   @"dictKey":@"userInfo详情",

                                   @"dictKey2":@"userInfo详情2"

                                   };

    // 启用通知,按照上文的设置,上文设置的时5秒后发送通知,那就是代码执行到此行,再过5秒才会发送通知

    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];

    // 立即发送通知,也就是说上文的fireDate和timeZone就没有作用了.

  // 下面代码存在的意义就是当程序在后台运行时,立即发送通知

    // [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];

2通知的回调方法,AppDelegate.m里的2个方法

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

2.1 第1个回调方法,是在接收到通知时,程序没被杀死时调用:

  如果程序是在前台,方法会回调,不会有横幅提示;

  /*

  如果希望程序在前台时,不提示用户,可以加程序运行状态的判断 application.applicationState == UIApplicationStateActive),

   程序由后台到前台时的状态变化是下面这样的, 如果是前台到后台则反过来: 

   UIApplicationStateBackground(后台) -> UIApplicationStateInactive(未激活,此时所有UI界面无法接收用户点击) -> UIApplicationStateActive(激活)

    */   

  如果程序是在后台,方法会回调,有横幅提示.

1 - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification2 {3     if (application.applicationState == UIApplicationStateActive) return;4     self.label.text = @"收到通知时,程序还活着(前台\后台都算),就会回调本方法";  5 }

 

2.2 第2个回调方法,是在接收到通知时,程序已被杀死了的情况下调用,其实这个方法在点击应用图标启动时,或者点击横幅通知时,都会调用

    因此在处理通知时,需要判断程序到底是 点击应用图标启动的,还是 点击横幅通知启动

1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 2 { 3     UILocalNotification *note = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]; 4  5     if (note) {  6         self.label.text = @"点击横幅通知启动的程序"; 7     }else{ 8         self.label.text = @"点击app图标启动的程序"; 9     }10 11     return YES;12 }

 

  

 

转载于:https://www.cnblogs.com/oumygade/p/4243058.html

你可能感兴趣的文章
Git简明操作
查看>>
InnoDB为什么要使用auto_Increment
查看>>
课堂练习之买书打折最便宜
查看>>
定义函数
查看>>
网络虚拟化技术(二): TUN/TAP MACVLAN MACVTAP
查看>>
MQTT协议笔记之mqtt.io项目HTTP协议支持
查看>>
(转)jQuery中append(),prepend()与after(),before()的区别
查看>>
Tecplot: Legend和图像中 Dashed/Dash dot/Long dash 等虚线显示没有区别的问题
查看>>
win8 开发之旅(2) --连连看游戏开发 项目错误的总结
查看>>
一、 object c -基础学习第一天 如何定义一个类
查看>>
Kali Linux的安装
查看>>
我的大学生活-5-08-赵心宁
查看>>
入门阶段
查看>>
Android中使用http协议访问网络
查看>>
Join 与 CountDownLatch 之间的区别
查看>>
vc6下dll调试
查看>>
Ubuntu apt常用命令
查看>>
struts2 配置(部分)
查看>>
python代码迷之错误(ModuleNotFoundError: No module named 'caffe.proto')
查看>>
nodejs adm-zip 解压文件 中文文件名乱码 问题解决
查看>>