本文主要介绍在应用中集成极光官方推送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 来说还有几个坑是需要注意的:
- 必须要在 Apple Developer 给应用配置推送功能,创建推送证书 (并且保证 bundle id 与 Apple developer 上的是一致的)如果之前没有接触过推送证书建议看视频来 官方集成视频
- 必须要在真机上做测试,否则无法收到推送通知。
- 推送环境需要保持一致,测试环境收不到生成环境的推送推送。
测试应用
- 导入头文件
import 'package:flutter_jpush/flutter_jpush.dart';
- 在程序入口初始化Jpush,也就是在 main页面初始化的时候添加:
void _startupJpush() async {
print("初始化jpush");
await FlutterJPush.startup();
print("初始化jpush成功");
}
-
在没有后台的情况下,可以在官网进行在线测试,
点击发送手机就可以收到消息啦!!!
接下来有几个扩展方法一并介绍一下:
收到推送提醒
监听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");
});
});
}