消息系统的建立
消息推送
在 Flutter 中,最常见的消息推送服务是 Firebase Cloud Messaging (FCM)。FCM 是 Google 提供的免费云消息传递服务,可跨平台工作,支持 Android 和 iOS 设备。除了 FCM,您也可以选择其他的推送服务,如阿里云移动推送、极光推送、个推…… 或自建的推送服务。
目前仍然没有一个统一的推送平台与标准。
在国内Android生态中,推送通道都是由终端与云端之间的长链接来维持,非常依赖于应用进程的存活状态。如今一些手机厂家会在自家ROM中做系统级别的推送通道,再由系统分发给各个App,以此提高在自家ROM上的推送送达率。所以国内需要集成各个厂商的推送通道以实现系统级别推送。
使用fcm可以在国内的拥有谷歌框架的使用魔法的app上完成系统消息推送。
消息系统是否需要依赖长连接或者websocket?
使用长连接:
应用处于前台时无需推送。应用处于后台时可推送可不推送。应用进程挂掉需要推送。
能够有效消息推送的使用量。只需要做应用内推送和离线推送即可。极大占用服务器和app资源。
不使用长连接:通过系统消息推送触发的回调函数刷新消息列表
应用处于前台时有回调。应用处于后台时有回调。应用被挂掉再打开后总会刷新列表。
对于系统消息较少时能够很大程度节约app与服务器开支。缺点:如果用户禁用了消息通知,回调是否还能够正常执行?
企业APP的消息触达用户的通道,最重要的仍然还是推送通知消息。各个头部厂商对Android原生系统均有所定制,但与国内环境还是有所区别。 在中国大陆,受地域限制,无法使用谷歌相关服务。 国内厂商对GMS服务套件进行了系统层的阉割,谷歌官方的FCM推送通道也相应的无法使用。进而替代的是各个厂商自己的厂商通道。顾名思义,厂商通道就是指手机硬件厂商提供的系统级别的推送通道,因为是系统服务,随着设备开机后就一直存在着,有效的保证了推送通道长连接的高可用性。
在海外,由于安卓系统默认支持谷歌FCM通道,且网络环境不受地域限制,因此厂商未对出口海外版的手机进行GMS的阉割,而是保留厂商通道与谷歌FCM通道共存的方式。谷歌FCM通道,是安卓系统自带的通道服务,与谷歌Firebase后台保持长连接,服务归属是谷歌而非设备厂商。
FCM通道不依赖APP的进程是否存活。
常见的推送选择
FCM 推送服务。优点: 集成了android 和 ios的apns推送。海外拥有谷歌套件的手机一站式服务。缺点:需要单独集成华为厂商推送!
第三方服务:阿里云、极光推送、个推等等。优点:支持国内外推送服务,缺点:需要集成各个厂商的推送通道、国外稳定性不得而知、dart依赖包点赞对比fcm:81 vs 3476,可靠性。
极光:免费,所有免费共享20w/s送达