这两年有做过关注过一定的推送知识,特此记录备忘
一般,我们做推送,会按照如下流程完成一个基本的iOS推送:
在这个图上可以看到,我们基本向一个iOS的推送,基本上分了几步,业务系统向消息系统请求消息发送(为什么会有消息系统?免得你每次都重新写一大堆逻辑),消息系统进行APNs(百度link)请求,APNs将请求的消息发送到对应设备。设备自动弹出对应通知。
ok,这里面大家是不是很容易发现一些问题呢?我们这样好像是把一个消息发出去了,但是真的发出去了么?
而且作为运营的需求,往往都是要知道,我们到底推送到了几个人,有几个人点开了吧?
那么这里怎么做呢?
对于iOS10以下设备,我们只能认为通知APNs成功之后便是推送完成了,实际是否送达了对应设备,也无法确切获得不过iOS10及之后设备提供了Service Extension模块,此模块与Application独立,可以通过此模块获取推送结果上报,进行推送结果统计
也就是说,对于iOS设备,iOS10以下的系统,我们只能认为APNs告诉你成功了,你就认为成功了。iOS10以上的系统,我们可以通过完成ServiceExtension的开发,来进行推送结论的上报,这样数据都是你自己产生并且获取的,这样你就可以放心了吧~
那么点击情况呢?对于点击,我们可以通过Application内置消息解析部分逻辑,默认上报一个点击事件就可以知道点击情况了。
ok 那我们来继续补充一些这个图例把:
上来就说了一下如何推送,如何记录推送结果,其实对于推送来说,这个事儿无非是:
推送其实就是在一个特定的时间,推送到特定的用户手机,显示特定的内容,并且点开之后有特定的效果
ok,那么这四个概念,我们来分析分析:
特定的时间:这里我们需要关注两个时间,一个是我们真正调用APNs的时间,还有就是APNs送达的延迟情况
特定的用户手机:如果是我们给用户发红包,还比较简单,用UID就行了,那么发推送呢?实际上iOS在开始的时候可以主动向APNs获取本机的APNsToken,而对于我们和APNs来说,这个APNsToken就是这个手机了,对于到底是不是特定的用户,那就需要我们自己将用户和对应设备建立关联了。
特定的内容:之前的推送,基本的推送只能承载文本,我们本文也至介绍一下这种推送,这个内容其实是APNs的payload要求内的填写,只要我们在payload组装时,将内容按要求组装清楚就没的问题了
特定的效果:刚刚提了很多次的payload,这里面除了影响我们的展示以外,其实还有另一部分的功能,就是:自定义结构,我们只要和Application制定好规则,跳转规则,只要按照规则进行处理就能完成对应的特定的效果啦~实际上,这个特定的效果,还是Application内完成哒~