iOS 本地推送

iOS 本地推送

概念

1.推送通知有5种不同的呈现效果

在屏幕顶部显示一块横幅(显示具体内容)
在屏幕中间弹出一个UIAlertView(显示具体内容)
在锁屏界面显示一块横幅(锁屏状态下,显示具体内容)
更新app图标的数字(说明新内容的数量)
播放音效(提醒作用)
2.用户也可以决定是否要开启以下4个功能:

显示App图标数字
播放音效
锁屏显示
显示在“通知中心”

3、注意:

发送推送通知时,如果程序正在前台执行,那么推送通知就不会被呈现出来,但是微信在前台的时候也能推送消息,方法是:创建一个view,仿造系统消息通知的样式向下出现,点击后回到根控制器再进行跳转(注意压栈)
点击通知会打开该通知的app
不管程序打开还是关闭,推送都能如期发出
步骤:

1.创建本地通知对象

UILocalNotification *localNotifi = [UILocalNotification new];

2、设置属性

3、调度本地通知 (将本地通知加入本地通知调度池,iOS 7 到这一步完毕,不需要授权)

[[UIApplication sharedApplication] scheduleLocalNotification:localNotifi];

4、 注册通知权限(多个通知只需一次, 建议放在AppDelegate 的
didFinishLaunchingWithOptions方法中) ,iOS8以后必须需要用户授权才可以发送通知

授权效果

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

参数:

settingsForTypes 通知需要更改的东西,可以修改多个地方,
UIUserNotificationType 枚举:
UIUserNotificationTypeNone = 0,
UIUserNotificationTypeBadge = 1 << 0,
//图标标记UIUserNotificationTypeSound = 1 << 1, //声音
UIUserNotificationTypeAlert = 1 << 2, //提醒

categories:用于添加下拉快速回复功能,下面有介绍

5、删除通知(如果设置了 repeatInterval 重复属性,注意手动删除通知对象)

两种方式:
(1)删除当前程序注册的所有通知,不重复的也会被取消

[[UIApplication sharedApplication] cancelAllLocalNotifications];

(2) 删除指定的通知,一般用于取消重复的通知或者还没有被调用的通知,先获取通知,再遍历根据条件去删除(条件是 UserInfo 的值,是发送通知时所携带的参数)

NSArray *notifiArray = [[UIApplication sharedApplication] scheduledLocalNotifications];for (UILocalNotification *local in notifiArray) {
//将来可以根据UserInfo的值,来查看这个是否是你想要删除的通知
if (local.userInfo) { //删除单个通知
[[UIApplication sharedApplication]cancelLocalNotification:local];
}
}

UIApplication 方法

1、调度本地推送通知(调度完毕后,推送通知会在特定的时间fireDate发出)

[[UIApplication sharedApplication] scheduleLocalNotification:localNotifi];

2、获取被调度的所有本地推送通知
注意:已经发出且过期的推送通知就算调度结束,会自动从这个数组中移除

@property(nullable,nonatomic,copy) NSArray *scheduledLocalNotifications;

3、取消调度本地推送通知

  • (void)cancelAllLocalNotifications;
  • (void)cancelLocalNotification:(UILocalNotification *)notification;

4、立即发出本地推送通知

[[UIApplication sharedApplication]presentLocalNotificationNow:localNotifi];

推荐阅读更多精彩内容

  • 概念 1.推送通知有5种不同的呈现效果 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出一个UIAlertV...
    JzRo阅读 91评论 0 0
  • iOS中通知机制又叫消息机制,其包括两类:一类是本地通知;另一类是推送通知,也叫远程通知。两种通知在iOS中...
    七里汀阅读 710评论 3 2
  • 一、简介 目前说的是基于ios10之前,所以有些类是过期的. 推送分为本地推送和远程推送2种。可以在应用没有打开甚...
    JingYa_Lu阅读 448评论 0 0
  • 概念 1.推送通知有5种不同的呈现效果 在屏幕顶部显示一块横幅(显示具体内容) 在屏幕中间弹出一个UIAlertV...
    我是滕先生阅读 16,205评论 20 93
  • @(〓〓 iOS-实用技术)[远程/本地推送] 作者: Liwx 邮箱: 1032282633@qq.com 目...
    Liwx阅读 2,495评论 6 28