FCM(Firebase Cloud Messaging),谷歌推出的推送服务,支持IOS和Android,集成之后可以实现创建、发送、统计效果,基本满足个人开发者或初创产品消息推送的需要。FCM中,消息按照以下几个维度分类:- 处理方式 - Notification messages:App在后台时,发送的消息会出现在顶部通知栏;在前台,不自动处理消息,只交给客户端处理 - Data messages:不出现在通知栏,客户端自行处理数据前者定义用户可见的消息,包括标题、文案、图标等,一般展示在屏幕顶部通知栏,后者只有自定义的Key:Value数据。- 接收方式 - Non-collapsible:每条消息独立送达到设备 - Collapsible:如果前一条没有被送达,会被新消息覆盖- 优先级 - Normal:App处于前台时立即送达,在Doze(节能)模式下,延迟送达。适用于邮件、后台数据同步等不需要用户立刻知晓的消息。 - High:此类消息可唤醒锁屏中的设备。官方建议,这种消息在推送后应该让用户有互动,如安全警告、好友信息,如果系统检测到无互动,优先级会被降低## 创建消息标准Android消息构成:

除必小图标(1)、产品名称(2)、发送时间(3)之外,可以自定义以下内容:- Large Icon(4):大图标,多为用户头像- Title(5):消息标题- Text(6):消息文本一条消息内容有了,接下来编辑推送通道等信息:- 目标人群:选择设备、topics API、版本、地区、设备语言、自定义用户群、首次打开时间、上次活跃时间- 转化事件:选择某个自定义埋点事件,看它发生的次数或转化率,衡量推送效果;选择的事件会进入统计报告- 发送时间:立刻发送或定时,可以选择用户当地时间,不用费力换算结合A/B test来测试推送效果。给两组推送不同文案,标题一样。两组文案确定之后,选择一个胜出指标。比如电商类产品,比较好定位到某个活动页面的购买转化率,就选择相应事件流,最后转化率高的胜出。或者A/B test本来就会随机将用户分组,可以直接看某个事件的发生次数。## 一条消息的生命周期集成FCM后,每次推送失败,会返回错误码和解释,返回推送成功的信息,也只说明尝试送达,不是真的被用户看到。一次又一次尝试送达未成,什么时候停止?- 消息过期:在后台可设置过期时间,最大28天- 被其他消息覆盖,比如体育App连续推送比分,最近消息更重要覆盖之前的消息- 设备离线一个月Android系统本身会对消息限制,影响送达率:- 设备离线- 优先级发送时被设置成“Normal”- Android系统 - Doze mode:节能模式 - App Standby Buckets - Background Restrictions: 无法留在后台、进程被清理 - User-initiated Background Restrictions:用户自己限制App对系统资源的使用 - App被卸载:此原因为送达,会返回设备未注册的错误码 ## 效果报告不管从可视化后台,还是通过API发送的消息都可以看到这三个指标:- Sends:发送出去的消息,包括从第三方通道发送出去的,如IOS的APN- Impressions:展现在通知栏的数量,此项只统计安卓设备- Opens:被打开的消息数从Impressions展现的限制看来,每次推送,最好IOS和Android分开,不然统计维度混在一起,不利于分析。