美文网首页
iOS Push Notification

iOS Push Notification

作者: 谁动了我的芝麻糖 | 来源:发表于2017-01-13 14:54 被阅读0次

    项目需要,写了一篇绕口令一般的东西,算作这两天的总结吧。

    iOS Push Notification

    需要考虑的情况有以下几种:

    1,静默推送(silent push)和非静默推送;

    2,iOS系统>= iOS 10,和< iOS 10;

    3,App处于前台(foreground,active),后台(background,inactive,suspend)和close(manually killed,swiped out)

    处理Push Notification的delegate有如下几个:

    A,application: didReceiveRemoteNotification:fetchCompletionHandler

    B,userNotificationCenter:willPresentNotification: withCompletionHandler

    C,userNotificationCenter:didReceiveNotificationResponse

    D,application:didReceiveLocalNotification

    E,cancelLocalNotification:

    (非silent push使用APN test,silent push使用我自己的静默推送服务)

    Situation 1:非silent push,foreground,iOS 10

    收到remote notification后,调用B

    Situation 2:非silent push,background,iOS 10

    收到remote notification后,响,弹出横幅,消息列于通知中心托盘,选某action后,调C

    Situation 3:非silent push,close,iOS 10

    同Situation 2

    ======

    Situation 7:非silent push,foreground,< iOS 10

    收到remote notification后,调用A

    Situation 8:非silent push,background,< iOS 10

    收到remote notification后,响,弹出横幅,消息列于通知中心托盘,选action后,调A

    Situation 9:非silent push,close,< iOS 10

    同Situation 8

    ======

    Situation 4:silent push,foreground,iOS 10

    收到remote notification后,调A

    从push server获取消息后,发送一个Local Notification

    立即收到此Local Notification后,调B

    Situation 5:silent push,background,iOS 10

    收到remote notification后,调A

    从push server获取消息后,发送一个Local Notification。

    此Local Notification会响,弹出横幅,消息列于通知中心托盘,选action后,调C

    Situation 6:silent push,close,iOS 10

    没有任何反应

    ======

    Situation 10:silent push,foreground,< iOS 10

    收到remote notification后,调A

    从push server获取消息后,发送一个Local Notification

    立即收到此Local Notification后,调D。

    通知中心托盘会展示此notification,可以调用E从托盘中删除action

    Situation 11:silent push,background,< iOS 10

    收到remote notification后,调A

    从push server获取消息后,发送一个Local Notification。

    此Local Notification会响,弹出横幅,消息列于通知中心托盘,选此action后,调D

    Situation 12:silent push,close,< iOS 10

    没有任何反应


    总结:

    1,在close状态下,silent push不能唤醒App,也就是收到silent push后,App没有任何反应;

    2,Close或background状态下,收到非silent push会响,弹出横幅,消息展示于通知中心托盘,从托盘点选action,会唤醒(启动)App;

    3,< iOS 10,收到silent push后,无论foreground或background,都调用A,发送local notification后,都在通知中心托盘展示。不同的是,foreground会立即调用D,而background是在托盘选中action后调用D;

    4,< iOS 10,收到非silent push后,foreground直接调用A,background或close时,在通知中心托盘选action后,调用A;

    5,由3,4可知,< iOS 10时,只要是remote notification,无论是否为silent push,都从调用A开始;

    6,iOS 10,收到silent push后,无论foreground或background,都调用A,发送local notification后,foreground不展示在通知中心托盘,foreground会立即调用B,而background是在托盘中选action后,调用C;

    7,由3,6可知,只要是silent push,无论是否为iOS 10,以及无论是foreground或background,都会调用A;

    8,iOS 10,收到非silent push后,foreground直接调用B,background或close时,在通知中心托盘选action后调用C;

    9,由6,8可知,iOS 10在foreground时收到notification,无论是remote还是local都会调用B,在background(close)时,无论是remote还是local,在通知中心托盘选action后,都会调用C。

    相关文章

      网友评论

          本文标题:iOS Push Notification

          本文链接:https://www.haomeiwen.com/subject/worsbttx.html