推送通知和NSNotification区别:
NSNotification是抽象的,不可见的
推送通知是可见的(能用肉眼看到)iOS中提供了2种推送通知
本地推送通知(Local Notification)
远程推送通知(Remote Notification)
推送通知的呈现效果:
横幅方式:
提醒样式:
锁屏时也可以获取通知:
- 推送通知有5种不同的呈现效果
1.在屏幕顶部显示一块横幅(显示具体内容)
2.在屏幕中间弹出一个UIAlertView(显示具体内容)
3.在锁屏界面显示一块横幅(锁屏状态下,显示具体内容)
4.更新app图标的数字(说明新内容的数量)
5.播放音效(提醒作用)
本地推送通知:顾名思义,就是不需要联网就能发出的推送通知(不需要服务器的支持)
由应用本身发起,一旦满足触发条件就会推送通知
本地推送通知的使用场景
闹钟,常用来定时提醒用户完成一些任务,比如
清理垃圾、记账、买衣服、看电影、玩游戏
接下来演示本地推送通知的实现
简单的界面搭建:
点击按钮的时候,创建一个本地通知,示例代码:
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
// 创建本地通知
- (IBAction)StartLocalNoteButtonClick:(id)sender {
// 创建本地通知
UILocalNotification *localNotification = [[UILocalNotification alloc]init];
// 设置属性
// 1.触发时间
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
// 2.设置通知的显示内容
localNotification.alertBody = @"收到一条新消息";
// 预定通知(UIApplication 作为系统和应用的桥梁,一般负责应用和系统相关的工作)
// iOS 8.0以后,在预定和展示通知之前必须要注册通知,请求授权
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
- (void)viewDidLoad {
[super viewDidLoad];
// 注册通知,请求授权
/*
UIUserNotificationTypeNone 无任何效果
UIUserNotificationTypeBadge 通知含有角标
UIUserNotificationTypeSound 带声音
UIUserNotificationTypeAlert 提示文字
*/
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
}
@end
从iOS 8.0开始,为了保护用户隐私,使用通知需要授权(代码注册注册通知),授权:
这里我只添加了文字,如果还需要声音和角标提醒,可以都加上
UIUserNotificationSettings *notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
接收通知之后在后台模式下才有视图显示,在前台状态可以接收数据,但是不会有视图显示,所以演示时点击按钮,将应用切换至后台,等待5s后弹出提醒,提醒样式可以通过系统设置:横幅或窗口.
设置提醒样式:
设置为横幅样式,点击创建本地通知按钮后,将程序切换至后台,5s后的通知提醒效果:
窗口样式:
![Uploading 后台窗口_179539.png . . .]