Flutter应用集成极光推送的实现示例

概述

在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手段,比如将新上架一个商品或者最新的一条新闻推送给用户。

事实上,消息推送是一个横跨业务服务器、第三方推送服务托管厂商、操作系统长连接推送服务、用户终端以及移动手机应用等五方面的复杂业务应用场景。在原生iOS开发中,为了简化消息推送,苹果推送服务(简称APNs)接管了系统所有应用的消息通知需求,任何第三方消息推送都需要经过推送服务进行转发。对于原生Android平台来说,则可以使Google提供的类似Firebase云消息传递机制来实现统一的推送托管服务。

具体来说,当某个应用需要发送消息推送时,消息会由应用的服务器先发给苹果或Google的消息推送服务器,然后经由APNs或FCM(Google的消息推送框架)发送到设备,设备接收到消息后经过系统层面完成解析,最终把消息转发给所属应用,整个工作流程如下图所示。

不过,由于Google服务在大陆地区并不稳定,因此在国内的Android手机供应商通常会把Google服务换成自己开发的推送服务,并定制一套推送标准,而对于开发者来说,无疑是增大了适配的负担。所以在处理Android端的消息推送时,通常会使用第三方推送服务,比如极光、个推和友盟推送等。公司在选择第三方工具时候,由于权衡的尺度不一样,所以选择哪家作为推送服务还得根据实际情况而定。

虽然这些第三方推送服务使用自建的长连接,无法享受操作系统底层的优化,但它们会对所有使用推送服务的应用共享推送通道,只要有一个使用第三方推送服务的应用没被系统杀死,就可以让消息及时送达,因此并不需要考虑消息到达率的问题。

由于第三方推送服务厂商提供的功能和接入流程大都一致,考虑到极光的社区和生态相对活跃,并且在国内较早的推出Flutter插件,所以我们可以在Flutter项目中直接使用这个插件,下图是极光推送的架构示意图。

极光推送,英文简称JPush,是一个免费的第三方消息推送服务厂商,围绕推送服务,极光官方推出了众多平台的SDK及插件,如图下图所示。

添加极光插件

Flutter插件支持多种依赖方式,通常有3种:git依赖、pub.dev依赖和本地依赖。

通过git 方式依赖

打开Flutter工程的 pubspec.yaml 配制文件,然后添加添加 如下依赖代码。

# 极光推送插件
 jpush_flutter:
  # git 依赖方式
  git:
   # git 依赖的地址
   url: git://github.com/jpush/jpush-flutter-plugin.git
   # git 仓库中的分支
   ref: master

然后,点击 【Packages get 】下载依赖或者直接在terminal 命令行中 使用【 flutter packages get】命令 来加载依赖,如下图所示。

直接通过git 的方式从 github上加载,与你的网速有很大关系,也很有可能加载不成功,需要耐心等待。

pub.dev方式依赖

pub 是Google官方的Dart Packages仓库,类似于node中的npm仓库,android中的jcenter,我们可以在上面查找我们需要的包和插件。我们可以访问国内的pub仓库来更快的搜索我们需要的插件。

然后在 flutter 项目的 pubspec.yaml 文件中配制极光推送的pub依赖,如下所示。

jpush_flutter: 0.1.0
jpush_flutter: ^0.1.0

两种写法的区别在于,后者会自动下载更高版本的,比如说这里配制的是 0.1.0 ,当 pub 仓库中的版本升级为 0.1.3 的时候,那么我们项目中本地依赖的版本不一定是 当前设置的 0.1.0 版本,而是其他版本。当然还可以使用下面的方式。

jpush_flutter: any

前者的区别是 会根据当前的项目环境加载适合当前项目环境中的版本插件,如有时我们指定版本加载时,会出现各种异常的冲突,当几个版本中与你使用到的功能无太大差异时,就可以考虑使用这种方法来简单粗暴的解决。

本地依赖

除了上面两种方式外,我们还可以把极光推送 flutter 插件下载到本地,然后在本地进行依赖。首先,去github上下载极光推送flutter插件的源码。

然后把下载下来的 zip 文件解压,放到一个目录中,然后在 flutter 项目中的 pubspec.yaml 配制极光推送的本地依赖,如下所示。

# 极光推送插件
 jpush_flutter:
  path: ../jpush-flutter-plugin

这里使用到的 ../ 是校对路径的表示方法,当然也可以使用jpush-flutter-plugin文件夹的全路径。

在 flutter 项目中有多种方式方法来依赖极光推送插件,依赖成功后如下图所示。

推送示例

原生配置

Android平台配置

由于推送会涉及到很多原生的配置,所以为了能够正常的进行消息推送,还需要在原生Android和iOS中进行一些配置工作。对于Android平台来说,配置工作相对简单,打开android/app/build.gradle文件,然后在defaultConfig节点中添加如下代码。

android: {
 ....
 defaultConfig {
  applicationId "替换成自己应用ID"
...
//ndk用于真机运行,用来指定对应的芯片架构
  ndk {
  abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a',
  }

  manifestPlaceholders = [
    JPUSH_PKGNAME : applicationId,
    JPUSH_APPKEY : "appkey",
    JPUSH_CHANNEL : "developer-default",
  ]
 }
}

如下图所示。

在极光开发者平台中创建推送应用程序,然后填写build.gradle脚本所需的参数,如下图所示。

然后,在Android手机上运行项目,会有 Running Gradle task ... 的提示,去 maven jcenter 下载 android 平台使用到的依赖库以及os库等。

iOS平台依赖

对于iOS平台来说,应用配置相对Android平台来说要繁琐一些,因为iOS的推送配置会涉及应用权限、苹果APNs服务和极光后台信息关联等过程。

然后,使用Xcode打开Flutter项目的iOS工程,然后依次选择【Target】→【Signing & Capabilities】→【Capability】→【Push Notifications】选项开启应用的消息推送功能,如下图所示。

然后,在极光开发者平台中配制 iOS的相关推送认证。

申请推送证书的过程,极光推送官网提供了比较详细的操作步骤,可以按照官网的步骤进行申请。然后,在极光开发者服务后台上传申请到的推送证书,如下图所示。

配制好证书后,运行 Flutter 项目于 iphone 手机上,如下图所示。

运行项目

完成上述操作后,极光推送所需的所有原生环境就配置完成了。接下来,使用Android Studio打开Flutter工程,在main.dart文件的initState生命周期函数中添加初始化JPush代码,如下所示。

void initState() {
  super.initState();
  JPush jpush = new JPush();
  jpush.setup(
  appKey: "96d7d7e77bee7abd4d568978",
  channel: "flutter_channel",
  production: false,
  debug: true,   //是否打印debug日志
  );
 }

然后,启动Flutter应用,并在打开极光开发者服务后台添加一条推送消息,选择需要推送的平台,然后点击【立即发送】按钮,如下图所示。

等待消息推送成功后,就可以在对应的移动设备上看到推送的消息,如下图所示。

到此这篇关于Flutter应用集成极光推送的实现示例的文章就介绍到这了,更多相关Flutter集成极光推送内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Thinkphp开发--集成极光推送

    先说说为啥选用极光推送作为第三方的推送服务. 首先我所了解的推送产品有信鸽.个推.极光,之前用到过个推,感觉还不错,只是代码没有极光简洁,信鸽是腾讯旗下的产品,出于对Tencent的不喜欢,就没有考虑过,其次目前公司之前用过极光,ios和安卓这边对极光比较熟悉,所以就决定用极光推送了. 这里项目后台用的是php搭建的,选用的是thinkphp3.2作为框架,极光选用的版本号为3.4.3,特此说明一下,需要软件包的小伙伴可以在评论留言,不说废话了,下面上代码.一切以自生逻辑为依据,这里只是展示我的

  • laravel框架使用极光推送消息操作示例

    本文实例讲述了laravel框架使用极光推送消息.分享给大家供大家参考,具体如下: 最近需要使用极光推送往客户端推消息,所以这里记录下使用过程. 极光推送的服务端文档: https://docs.jiguang.cn/jpush/server/push/server_overview/ 极光推送服务端PHP代码: https://github.com/jpush/jpush-api-php-client 在laravel项目下安装极光推送 composer require jpush/jpush

  • 解析iOS10中的极光推送消息的适配

    iOS10发布后,发现项目中的极光推送接收消息异常了. 查了相关资料后才发现,iOS10中对于通知做了不少改变.同时也发现极光也很快更新了对应的SDK. 现在就把适配修改的做法分享一下,希望对有需要的童鞋有所帮助. 具体做法如下: 注意:必须先安装Xcode8.0版本. 一.添加相关的SKD,或framework文件 1.添加UserNotification.framework 2.更新jpush的SDK(最新版本:jpush-ios-2.1.9.a)https://www.jiguang.cn

  • Yii1.1框架实现PHP极光推送消息通知功能

    一.下载极光推送PHP SDK,解压后放在/protected/components/目录下,如下图所示: 二.完善修改下官方的demo例子,我这里复制一份demo,改为NotifyPush.php,如下代码: <?php require dirname(__FILE__) . '/jpush-api-php-client/autoload.php'; use JPush\Client as JPush; class NotifyPush { static function pushAlias(

  • Flutter应用集成极光推送的实现示例

    概述 在移动应用开发中,消息推送可以说是一项非常重要的功能,它能够起到提醒或者唤醒用户的作用,同时也是产品运营人员更高效地实现运营目标的重要手段,比如将新上架一个商品或者最新的一条新闻推送给用户. 事实上,消息推送是一个横跨业务服务器.第三方推送服务托管厂商.操作系统长连接推送服务.用户终端以及移动手机应用等五方面的复杂业务应用场景.在原生iOS开发中,为了简化消息推送,苹果推送服务(简称APNs)接管了系统所有应用的消息通知需求,任何第三方消息推送都需要经过推送服务进行转发.对于原生Andro

  • android studio集成极光推送的操作步骤

    之前使用的是小米推送,感觉还不错,集成简单,这次使用极光推送,看文档,很多用不到的东西看的好乱,所以这次记录: 第一.在极光配置信息,我是因为iso先创建应用了,我直接配置自己的信息就行,就填写一个包名. 第二.build.gradle文件的配置: android { ...... defaultConfig { ........ manifestPlaceholders = [ JPUSH_PKGNAME : "应用包名",//JPush上注册的包名 JPUSH_APPKEY : &

  • SpringBoot集成极光推送完整实现代码

    目录 1.pom.xml 2.application.yml 3.MyJPushClient 4.test 工作中经常会遇到服务器向App推送消息的需求,一般企业中选择用极光推送的比较多,在集成极光时发现极光的文档并不完整,网上的文章也很多不能直接使用,这里列出我在工作中集成极光的全部代码,只需要按照如下代码保证一次性实现. 1.pom.xml <!-- 极光推送 begin --> <dependency> <groupId>cn.jpush.api</grou

  • Android消息推送:手把手教你集成小米推送(附demo)

    前言 在Android开发中,消息推送功能的使用非常常见. 为了降低开发成本,使用第三方推送是现今较为流行的解决方案. 今天,我将手把手教大家如何在你的应用里集成小米推送 目录 1. 官方Demo解析 首先,我们先对小米官方的推送Demo进行解析. 请先到官网下载官方Demo和SDK说明文档 1.1 Demo概况 目录说明: DemoApplication类 继承自Application类,其作用主要是:设置App的ID & Key.注册推送服务 DemoMessageReceiver类 继承自

  • SpringBoot集成WebSocket实现后台向前端推送信息的示例

    前言 在一次项目开发中,使用到了Netty网络应用框架,以及MQTT进行消息数据的收发,这其中需要后台来将获取到的消息主动推送给前端,于是就使用到了MQTT,特此记录一下. 一.什么是websocket? WebSocket协议是基于TCP的一种新的网络协议.它实现了客户端与服务器全双工通信,学过计算机网络都知道,既然是全双工,就说明了服务器可以主动发送信息给客户端.这与我们的推送技术或者是多人在线聊天的功能不谋而合. 为什么不使用HTTP 协议呢?这是因为HTTP是单工通信,通信只能由客户端发

  • Android极光推送处理message遇到的坑解决

    目录 正文 总结 正文 我相信现在绝大部分App几乎避免不了消息推送,其实原理还是使用了长连接,通过服务端将消息推给客户端.市面上也有不少三方库,例如极光.友盟.个推.阿里等等.今天我就分享一下我在使用极光推送时遇到的坑,希望对大家有所帮助. 极光推送的接入和使用这里就不展开说明,咱们直接进入主题.因为项目使用的是通知栏方式,就是手机会先收到一个通知栏,用户点击通知栏跳转对应页面. 在点击这个通知栏时会触发其中onNotifyMessageOpened方法,后端会把我们所需要的内容放在messa

随机推荐