31 | 如何实现原生推送能力?
陈航
该思维导图由 AI 生成,仅供参考
你好,我是陈航。
在上一篇文章中,我与你分享了如何使用 Provider 去维护 Flutter 组件共用的数据状态。在 Flutter 中状态即数据,通过数据资源封装、注入和读写这三步,我们不仅可以实现跨组件之间的数据共享,还能精确控制 UI 刷新粒度,避免无关组件的刷新。
其实,数据共享不仅存在于客户端内部,同样也存在于服务端与客户端之间。比如,有新的微博评论,或者是发生了重大新闻,我们都需要在服务端把这些状态变更的消息实时推送到客户端,提醒用户有新的内容。有时,我们还会针对特定的用户画像,通过推送实现精准的营销信息触达。
可以说,消息推送是增强用户黏性,促进用户量增长的重要手段。那么,消息推送的流程是什么样的呢?
消息推送流程
手机推送每天那么多,导致在我们看来这很简单啊。但其实,消息推送是一个横跨业务服务器、第三方推送服务托管厂商、操作系统长连接推送服务、用户终端、手机应用五方的复杂业务应用场景。
在 iOS 上,苹果推送服务(APNs)接管了系统所有应用的消息通知需求;而 Android 原生,则提供了类似 Firebase 的云消息传递机制(FCM),可以实现统一的推送托管服务。
当某应用需要发送消息通知时,这则消息会由应用的服务器先发给苹果或 Google,经由 APNs 或 FCM 被发送到设备,设备操作系统在完成解析后,最终把消息转给所属应用。这个流程的示意图,如下所示。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了在Flutter应用中实现原生推送能力的具体步骤和技术要点。作者首先介绍了在Android平台的接口实现,通过引入极光SDK并创建JPushXCustomService和JPushXMessageReceiver来实现消息的接收和回调通知。在iOS平台,作者则通过引入JPush SDK并在ApplicationDelegate中回调的方式实现了消息的处理和通知。整篇文章详实地介绍了在Flutter应用中接入原生推送能力的流程,包括插件工程的创建和Dart接口的实现。读者可以通过本文了解到如何为极光SDK提供一个Dart层的封装,以及在Android和iOS目录下完成原生代码宿主封装的方法。文章还提到了在实际工程中接入Flutter_Push_Plugin的配置方式,并提出了思考题,引发读者对推送消息处理逻辑的思考。整体而言,本文是一份有价值的技术指南,对于开发者来说具有实际指导意义。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Flutter 核心技术与实战》,新⼈⾸单¥59
《Flutter 核心技术与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(14)
- 最新
- 精选
- Geek_0ea3e4带Example的Flutter工程怎么用命令创建啊
作者回复: flutter create —org com.example —template=plugin hello
2019-11-064 - 努力为明天极光好像有一个flutter的SDK插件,比我们自己封装使用要简单一些,多种思路吧
作者回复: 可以作为参考
2019-09-074 - zzz why可以在mainActivity中注册fullter的初始化监听,这样可以在后台启动的时候及时的收到推送消息。 对于在前台的情况下,可以首先判断是不是已经在前台,并且完成初始化,如果已经完成初始化的话就直接调用callbackNotificationOpened这样fullter就可以快速收到消息了
作者回复: 厉害👍
2019-09-253 - Bula这是对纯flutter工程接极光吧,原生工程混合flutter的应该不用关心极光推送的初始化
作者回复: 是的
2019-09-20 - 小师弟可以在mainactivity里注册flutter初始化完成的监听,回调时把消息通知传递给flutter
作者回复: 可以,不过对于flutter页面已经在前台的情况下、这种就收不到push了
2019-09-08 - 鲸鱼为了让 Flutter 代码能够更快地收到推送消息,你会如何优化呢? 这里是不是可以原生侧把推送消息保存起来,待flutter启动后直接读取消息
作者回复: 可以,但对于flutter页面已经在前台的情况下,这种就收不到推送了
2019-09-08 - 鲸鱼用户点击推送那里应该由flutter来主动注册回调,这样可以避免等待
作者回复: flutter不论怎么主动,推送都需要由native去通知他呀
2019-09-08 - 灰太狼这篇文章很棒,就像楼上说的已有极光的flutter插件,但是通过此文让更多读者了解了如何接入已有的原生sdk,对推广flutter是很有好处的。2019-09-193
- 神佑小鹿flutter 老版本需要手动在启动 activity 注册,新版本无需在手动注册 通过反射的形式找到自动生成的 GeneratedPluginRegistrant 类,调用其静态方法 registerWith2023-04-09归属地:广东
- 神佑小鹿我的理解是: pubspec 里面的 dependencies 是用来依赖 flutter dart 这部分的,native 的他不会主动依赖 native plugin 的话是要通过 gradle 的依赖的;2023-04-07归属地:广东
收起评论