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];

你可能感兴趣的:(iOS 本地推送)