极光推送官方已经开发出Flutter版的插件,地址:https://pub.dev/packages/jpush_flutter 在Flutter项目里面的pubspec.yaml里面依赖极光推送:jpush_flutter: 2.1.2

截图如下:

flutter 原生ios推送 flutter 厂商推送_Flutter


Android:

在 /android/app/build.gradle 中的"android"节点添加下列代码:

android: {
  ....
  defaultConfig {
    applicationId "com.example.jpush_demo"
    ...
    ndk {
	//选择要添加的对应 cpu 类型的 .so 库。
	abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a',        
    }

    manifestPlaceholders = [
        JPUSH_PKGNAME : applicationId,
        JPUSH_APPKEY : "appkey", // NOTE: JPush 上注册的包名对应的 Appkey.
        JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
    ]
  }    
}

其中JPUSH_APPKEY需要在极光推送官网控制台创建一个应用,拿到appkey填写到这个地方,极光推送官网创建应用的步骤如下:

1.

flutter 原生ios推送 flutter 厂商推送_Flutter_02


flutter 原生ios推送 flutter 厂商推送_厂商通道_03


flutter 原生ios推送 flutter 厂商推送_Android_04


flutter 原生ios推送 flutter 厂商推送_厂商通道_05


flutter 原生ios推送 flutter 厂商推送_极光推送_06


点击确认,然后直接点下一步

flutter 原生ios推送 flutter 厂商推送_flutter 原生ios推送_07


然后需要填写包名,把咋们项目的包名填上去,注意底下 的那些推送通道默认勾选好了,直接点击下一步

flutter 原生ios推送 flutter 厂商推送_flutter 原生ios推送_08


然后点击左侧菜单的概览,再点击我们刚新建好的应用,名字右边有个小齿轮,点一下就能查看应用的APPKEY了:

flutter 原生ios推送 flutter 厂商推送_Android_09


复制显示出来的appkey字段,填写到我们项目里的android/app/build.gradle下面的JPUSH_APPKEY对应的地方:

flutter 原生ios推送 flutter 厂商推送_flutter 原生ios推送_10


flutter 原生ios推送 flutter 厂商推送_flutter 原生ios推送_11


然后再main.dart下加入如下代码,初始化极光推送:

final JPush jpush = new JPush();
@override
  void initState() {
    // TODO: implement initState
    super.initState();
    initPlatformState();
  }
// Platform messages are asynchronous, so we initialize in an async method.
  Future<void> initPlatformState() async {
    try {
      jpush.addEventHandler(
          onReceiveNotification: (Map<String, dynamic> message) async {
            print("flutter onReceiveNotification: $message");
          }, onOpenNotification: (Map<String, dynamic> message) async {
        print("flutter onOpenNotification: $message");

      }, onReceiveMessage: (Map<String, dynamic> message) async {
        print("flutter onReceiveMessage: $message");

      }, onReceiveNotificationAuthorization:
          (Map<String, dynamic> message) async {
        print("flutter onReceiveNotificationAuthorization: $message");

      });
    } on PlatformException {

    }

    jpush.setup(
      appKey: "7a77110489c2ea0389b4f90e", //你自己应用的 AppKey
      channel: "jpush_demo",
      production: false,
      debug: true,
    );
    jpush.applyPushAuthority(
        new NotificationSettingsIOS(sound: true, alert: true, badge: true));

    // Platform messages may fail, so we use a try/catch PlatformException.
    jpush.getRegistrationID().then((rid) {
      print("flutter get registration id : $rid");

    });

    // If the widget was removed from the tree while the asynchronous platform
    // message was in flight, we want to discard the reply rather than calling
    // setState to update our non-existent appearance.
    // if (!mounted) return;

  }

注意,上面代码里面的jpush.setup方面里面也要填写在控制台新建应用的appkey,至于channel,随便填

至此,最基础的Flutter版的极光推送集成完毕,可以测试推送了

点击控制台左边的“消息推送菜单”,然后点击立即体验

flutter 原生ios推送 flutter 厂商推送_厂商通道_12


点击创建推送:

flutter 原生ios推送 flutter 厂商推送_厂商通道_13


然后把要推送的标题内容都填写完,点击下方的发送预览按钮,再点击确认

flutter 原生ios推送 flutter 厂商推送_厂商通道_14


然后手机端就会收到推送消息:

flutter 原生ios推送 flutter 厂商推送_Flutter_15


注意!!!!!!

到这里Flutter版本的极光推送最基础的集成就完成了,也能实现推送,但是!!!如果这个APP在手机上进程被杀掉,没有在前台运行,或者手机开机以后从来没有打开过这个APP,这样是收不到推送消息的,因为现在各个品牌的手机都有自己的推送通道,只有接入了每个厂商的推送通道,APP才会在进程被杀掉的情况下收到推送消息。所以以小米手机为例,还要做一部分工作,完成小米厂商通道的接入,推送才算完全集成,接入小米厂商推送教程如下:

登陆小米开发者官网:

现在小米开发者已经不支持 “个人开发者”的认证了,只能是企业认证,这一点注意一下,如果你没有企业认证的话,得先去认证企业开发者。

flutter 原生ios推送 flutter 厂商推送_Flutter_16


点击管理控制台,点击创建应用

flutter 原生ios推送 flutter 厂商推送_Flutter_17


填写我们项目的包名,还有应用名称

flutter 原生ios推送 flutter 厂商推送_flutter 原生ios推送_18


红框里的APPID APPKEY这些都是要用到的,步骤到下面这个截图就完了,点击保存就OK。

flutter 原生ios推送 flutter 厂商推送_Flutter_19


重新再次点击“管理控制台”,点击“消息推送”菜单:

flutter 原生ios推送 flutter 厂商推送_Android_20


点击启用推送:

flutter 原生ios推送 flutter 厂商推送_Flutter_21


点击我同意,点击启用:

flutter 原生ios推送 flutter 厂商推送_Flutter_22


然后就能看到我们新创建的应用的关键信息,

APPID,APPKEY这些信息,记住这些数据,这些待会要用到

flutter 原生ios推送 flutter 厂商推送_厂商通道_23

现在回到咋们项目里面,项目还需要配置一下。

在android/app/build.gradle文件,里面的manifestPlaceholders属性要增加两句话:

XIAOMI_APPKEY : "MI-5941996139182", // 小米平台注册的appkey,注意不要将前缀去掉 MI-appkey
  XIAOMI_APPID : "MI-2882303761519961182", // 小米平台注册的appid,注意不要将前缀去掉 MI-appid

build.gradle的部分截图如下:

flutter 原生ios推送 flutter 厂商推送_flutter 原生ios推送_24


还要依赖一下极光推送的小米厂商通道的依赖:

dependencies {
    implementation 'cn.jiguang.sdk.plugin:xiaomi:4.0.6'//版本号和对应的JPush版本号相同
}

整体截图如下:

flutter 原生ios推送 flutter 厂商推送_极光推送_25

好了,Android Studio项目的配置这里就完成了,接下来要去极光推送的控制台配置一下:

注意!这一步很重要,必须配置,漏了的话,在APP被杀死的情况下会接收不到消息

下面的截图有5个红框,注意一下!

先点击激光控制台左侧菜单“消息推送”,再展开推送设置,再点击集成设置,点击厂商名称“小米”,在右边的输入框里面填写appid、appsecret、appkey,这三个字段都是前面我们在小米开发者网站上获取到的

flutter 原生ios推送 flutter 厂商推送_flutter 原生ios推送_26


把小米开发者网站获取到的appid、appsecret、appkey填写到上图的输入框内:

flutter 原生ios推送 flutter 厂商推送_厂商通道_27


一定要点击启用开关,默认是关闭的!!!

flutter 原生ios推送 flutter 厂商推送_厂商通道_28


然后跑起来项目,把进程杀掉,再次点击推送消息,测试手机是否收到消息!

flutter 原生ios推送 flutter 厂商推送_厂商通道_29

小米手机在后台被杀死的情况下,收到了推送!证明接入小米厂商通道成功!大功告成!!!

flutter 原生ios推送 flutter 厂商推送_极光推送_30