Flutter 集成极光推送

本文主要介绍在应用中集成极光官方推送jpush_flutter这个插件。

安装
在工程 pubspec.yaml 中加入 dependencies

dependencies:
  jpush_flutter: 0.0.8

配置

Android:

/android/app/build.gradle 中添加下列代码:

android: {
  ....
  defaultConfig {
    applicationId "替换成自己应用 ID"
    ...
    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", //暂时填写默认值即可.
    ]
  }    
}
  • 注意
    如果真机运行报错:couldn’t find “libflutter.so”
    在android/app/build.gradle添加配置:
ndk{
     //选择要添加的对应 cpu 类型的 .so 库。
    abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64' // 'arm64-v8a',
}
或者可以增加编译选项:

--target-platform android-arm64 或者 --target-platform android-arm

`如果运行没有报错,则不用添加;添加之后会启动不起来!!!`
iOS:
在 xcode8 之后需要点开推送选项: TARGETS -> Capabilities -> Push Notification 设为 on 状态

到此 jpush_flutter 的推送集成已经完成。

  • 对于 iOS 来说还有几个坑是需要注意的:
  1. 必须要在 Apple Developer 给应用配置推送功能,创建推送证书 (并且保证 bundle id 与 Apple developer 上的是一致的)如果之前没有接触过推送证书建议看视频来 👉 官方集成视频
  2. 必须要在真机上做测试,否则无法收到推送通知。
  3. 推送环境需要保持一致,测试环境收不到生成环境的推送推送。

测试应用

  • 导入头文件
    import 'package:flutter_jpush/flutter_jpush.dart';
  • 在程序入口初始化Jpush,也就是在 main页面初始化的时候添加:
void _startupJpush() async {
    print("初始化jpush");
    await FlutterJPush.startup();
    print("初始化jpush成功");
  }
  • 在没有后台的情况下,可以在官网进行在线测试,


    20190127163650262.png

    点击发送手机就可以收到消息啦!!!

接下来有几个扩展方法一并介绍一下:
收到推送提醒
监听addReceiveNotificationListener方法:

/*
* 收到推送提醒
* */
  void _ReceiveNotification() async {
    FlutterJPush.addReceiveNotificationListener(
        (JPushNotification notification) {
      setState(() {
        /// 收到推送
        print("收到推送提醒: $notification");
      });
    });
  }
打开推送提醒
监听 addReceiveNotificationListener方法:

 /*
  * 打开推送提醒
  * */

  void _OpenNotification() async {
    FlutterJPush.addReceiveOpenNotificationListener(
        (JPushNotification notification) {
      setState(() {
        print("打开了推送提醒: $notification");
      });
    });
  }
监听接收自定义消息
一般项目这个方法会用的比较多吧!!!

监听 addReceiveCustomMsgListener方法:

  /*
  * 监听接收自定义消息
  * */

  void _ReceiveCustomMsg() async {
    FlutterJPush.addReceiveCustomMsgListener((JPushMessage msg) {
      setState(() {
        print("收到推送消息提醒: $msg");
      });
    });
  }

推荐阅读更多精彩内容