在pubspec.yaml中添加极光推送依赖
jpush_flutter: 0.6.27
进入极光后台创建引用,填写自己项目的包名
接着在 android/app/build.gradle中添加以下代码
android: {
defaultConfig {
applicationId "替换成自己应用 ID"
ndk {
//选择要添加的对应 cpu 类型的 .so 库。
abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a',
}
manifestPlaceholders = [
JSHARE_PKGNAME : '替换成你的包名',
JPUSH_PKGNAME : ‘替换成你的包名’,
JPUSH_APPKEY :"极光上注册的包名对应的Appkey.",
JPUSH_CHANNEL :"developer-default",//暂时填写默认值即可.
TENCENT_APPID :"tencent appid",//腾讯开放平台注册应用得到的appId
FACEBOOK_APPID :"facebook appid",//facebook注册应用得到的appId
]
}
}
manifestPlaceholders = [
JSHARE_PKGNAME : 替换成你的包名,
JPUSH_PKGNAME : 替换成你的包名,
JPUSH_APPKEY :" JPush 上注册的包名对应的Appkey.",
JPUSH_CHANNEL :"developer-default",//暂时填写默认值即可.
TENCENT_APPID :"tencent appid",//腾讯开放平台注册应用得到的appId
FACEBOOK_APPID :"facebook appid",//facebook注册应用得到的appId
]
在工具类中写一个初始方法,在main文件中初始化。
class JpushPlugin {
static void initPush() {
JPush().addEventHandler(
onReceiveNotification: (Map message)async {
print("flutter onReceiveNotification: $message");
},
onOpenNotification: (Map message)async {
print("flutter onOpenNotification: $message");
},
onReceiveMessage: (Map message)async {
print("flutter onReceiveMessage: $message");
},
);
JPush().applyPushAuthority(
NotificationSettingsIOS(sound:true, alert:true, badge:true),
);
JPush().setup(
appKey: ‘你申请密钥’,
channel:"developer-default",
production:false,
debug:false,
);
}
/// 登录设置tag
static void setTags(List tags) {
JPush().setTags(tags);
}
/// 退出清空tag
static void cleanTags() {
JPush().cleanTags();
}
}
/// 清空角标
static void setBadge() {
JPush().setBadge(0);
}
在main文件中main方法中初始化这个工具类。
// 极光推送
JpushPlugin.initPush();
我看很多文章都没有讲设置tag,只是在本地测试推送。当初我也信以为真的以为那种方式就能正常推送,结果在测试时根本推送不到手机上。后面翻阅极光文档才知道需要设置tag才能推送到某一个用户的手机上。具体看极光文档 https://docs.jiguang.cn/jpush/client/Android/android_api/
我这是在登录后设置tag,退出清空tag。如果不清空用户在另一个手机登录就会导致两台手机都会收到推送消息。
此时我们去极光后台向指定用户推送消息
点击发送消息按钮后就能看见预估人数,点击确定就能发送成功手机马上就能收到消息
手机此时收到消息
此时推送完成。你就可以根据你们后端配置tags然后测试信息推送。