Flutter 核心技术与实战
陈航
前美团点评高级技术专家
42432 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
Flutter 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

31 | 如何实现原生推送能力?

iOS接口实现
Android接口实现
Dart接口实现
插件工程
第三方推送服务的能力和接入流程
Android原生的消息推送
iOS上的消息推送
思考题
应用工程配置
原生推送接入流程
第三方推送服务流程
消息推送流程
总结
如何实现原生推送能力

该思维导图由 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
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • Geek_0ea3e4
    带Example的Flutter工程怎么用命令创建啊

    作者回复: flutter create —org com.example —template=plugin hello

    2019-11-06
    4
  • 努力为明天
    极光好像有一个flutter的SDK插件,比我们自己封装使用要简单一些,多种思路吧

    作者回复: 可以作为参考

    2019-09-07
    4
  • zzz why
    可以在mainActivity中注册fullter的初始化监听,这样可以在后台启动的时候及时的收到推送消息。 对于在前台的情况下,可以首先判断是不是已经在前台,并且完成初始化,如果已经完成初始化的话就直接调用callbackNotificationOpened这样fullter就可以快速收到消息了

    作者回复: 厉害👍

    2019-09-25
    3
  • 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-19
    3
  • 神佑小鹿
    flutter 老版本需要手动在启动 activity 注册,新版本无需在手动注册 通过反射的形式找到自动生成的 GeneratedPluginRegistrant 类,调用其静态方法 registerWith
    2023-04-09归属地:广东
  • 神佑小鹿
    我的理解是: pubspec 里面的 dependencies 是用来依赖 flutter dart 这部分的,native 的他不会主动依赖 native plugin 的话是要通过 gradle 的依赖的;
    2023-04-07归属地:广东
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部