比如:JPush推送: https://www.jpush.cn
个推: http://www.getui.com
下面来说说收到推送消息的逻辑处理
一、收到推送消息有三种情况:
1、应用未启动(默认显示在通知栏,或者锁屏时显示在锁屏页面)
2、应用在后台挂起(默认显示在通知栏,或者锁屏时显示在锁屏页面)
3、应用在前台(默认不显示)
二、点击推送消息有两种情况:1、应用未启动 ->启动这个时候如论是点击推送消息打开应用还是点击icon打开应用都会调用以下方法(具体的可以根据 userInfo 进行判断):(只有重新打开APP和后台杀死后在打开APP才会走下面的方法)
2、应用在后台 ->应用在前台应用在后台挂起时点击推送消息和应用在前台时收到推送消息,都会调用以下方法:
ios 7 以上会调用下面这个方法
ios 10 会调用 下面的方法
应用在后台挂起时默认是不调用该方法的,如果你需要接收到推送消息还没点击推送就调用该方法,可以让服务器发给APNS时在aps 字典中加入:
aps = {
content-available = 1
}
首先根据APP的状态进行判断 这里当APP在前台显示的时候根据需求我们没有消息进行处理
第一步:发送通知
第二步:添加观察者
第三步:进行页面的跳转,这地方有一个重点是如何获取的当前页面的然后才能够实现跳转
在此给View写了一个分类方法
第四步:实现跳转到目的controller
如果是self addObserver填nil好了, 一般情况下你用不着这个参数
比如
[self addObserver:self.scrollView forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]
直接这样使用, 监听的是self.scrollView的contentOffset的值变化.
NSnotificationCenter是一种典型的有调度中心的观察者模式实现方式。以NSNotificationCenter为中心,观察者往Center中注册对某个主题对象的变化感兴趣,主题对象通过NSNotificationCenter进行变化广播。这种模型就是文章开始发布订阅报纸在OC中的一种类似实现。所有的观察和监听行为都向同一个中心注册,所有对象的变化也都通过同一个中心向外广播。
在通知机制中对某个通知感兴趣的所有对象都可以成为接收者。
首先,这些对象需要对通知中心(NSNotificationCenter)发出addObserver:selector:name:object:消息进行注册,在投送对象投
送通知给通知中心时,通知中心就会把通知广播给注册过的接收者。所有的接收者都不知道通知是谁投送的,更不关心它的细节。投送对象与接收者是一对多的关系。接收者如果对通知不再关注,会给通知中心发出
removeObserver:name:object:消息解除注册,以后不再接收通知。
1)注册观察者:(一般在viewDidLoad方法中实现)
2)接收广播后的处理
3)解除注册(一般在dealloc方法中解除=注册)
通过postNotificationName:object:userInfo:发送某一类型通知,广播改变。
一个通知对象要包含的内容:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)