极光推送官方已经开发出Flutter版的插件,地址:https://pub.dev/packages/jpush_flutter 在Flutter项目里面的pubspec.yaml里面依赖极光推送:jpush_flutter: 2.1.2
截图如下:
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.
点击确认,然后直接点下一步
然后需要填写包名,把咋们项目的包名填上去,注意底下 的那些推送通道默认勾选好了,直接点击下一步
然后点击左侧菜单的概览,再点击我们刚新建好的应用,名字右边有个小齿轮,点一下就能查看应用的APPKEY了:
复制显示出来的appkey字段,填写到我们项目里的android/app/build.gradle下面的JPUSH_APPKEY对应的地方:
然后再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版本的极光推送最基础的集成就完成了,也能实现推送,但是!!!如果这个APP在手机上进程被杀掉,没有在前台运行,或者手机开机以后从来没有打开过这个APP,这样是收不到推送消息的,因为现在各个品牌的手机都有自己的推送通道,只有接入了每个厂商的推送通道,APP才会在进程被杀掉的情况下收到推送消息。所以以小米手机为例,还要做一部分工作,完成小米厂商通道的接入,推送才算完全集成,接入小米厂商推送教程如下:
登陆小米开发者官网:
现在小米开发者已经不支持 “个人开发者”的认证了,只能是企业认证,这一点注意一下,如果你没有企业认证的话,得先去认证企业开发者。
点击管理控制台,点击创建应用
填写我们项目的包名,还有应用名称
红框里的APPID APPKEY这些都是要用到的,步骤到下面这个截图就完了,点击保存就OK。
重新再次点击“管理控制台”,点击“消息推送”菜单:
点击启用推送:
点击我同意,点击启用:
然后就能看到我们新创建的应用的关键信息,
APPID,APPKEY这些信息,记住这些数据,这些待会要用到
现在回到咋们项目里面,项目还需要配置一下。
在android/app/build.gradle文件,里面的manifestPlaceholders属性要增加两句话:
XIAOMI_APPKEY : "MI-5941996139182", // 小米平台注册的appkey,注意不要将前缀去掉 MI-appkey
XIAOMI_APPID : "MI-2882303761519961182", // 小米平台注册的appid,注意不要将前缀去掉 MI-appid
build.gradle的部分截图如下:
还要依赖一下极光推送的小米厂商通道的依赖:
dependencies {
implementation 'cn.jiguang.sdk.plugin:xiaomi:4.0.6'//版本号和对应的JPush版本号相同
}
整体截图如下:
好了,Android Studio项目的配置这里就完成了,接下来要去极光推送的控制台配置一下:
注意!这一步很重要,必须配置,漏了的话,在APP被杀死的情况下会接收不到消息
下面的截图有5个红框,注意一下!
先点击激光控制台左侧菜单“消息推送”,再展开推送设置,再点击集成设置,点击厂商名称“小米”,在右边的输入框里面填写appid、appsecret、appkey,这三个字段都是前面我们在小米开发者网站上获取到的
把小米开发者网站获取到的appid、appsecret、appkey填写到上图的输入框内:
一定要点击启用开关,默认是关闭的!!!
然后跑起来项目,把进程杀掉,再次点击推送消息,测试手机是否收到消息!
小米手机在后台被杀死的情况下,收到了推送!证明接入小米厂商通道成功!大功告成!!!