共计 2638 个字符,预计需要花费 7 分钟才能阅读完成。
极光推送在国内的 App 的覆盖率比拟高,在第一工夫就更新了对 flutter
的反对,应用极光简略配置后就能够进行远端推送和本地定时推送,十分不便。
举荐应用
android
进行测试,配置简略,ios 须要证书,绝对比较复杂。我也是用的安卓端进行演示。
注册极光
先到极光官网,注册账号,配置一下 flutter
我的项目的包名,如果不记得了,能够到 flutter 我的项目下的 android/app/build.gradle
中找一下,defaultConfig
下的 applicationId
就是包名,这个配置文件不要关,后续咱们还会再回来。
在极光配置好安卓的包名后,咱们会失去 AppKey,到这就算注册实现。
我的项目配置
持续关上,android/app/build.gradle
文件。
- 将
defaultConfig
中minSdkVersion
批改为 17,flutter
创立后默认是16
,无奈应用极光推送。 defaultConfig
中增加manifestPlaceholders
。
上面是我的配置,大家依据本人的状况批改即可:
defaultConfig { | |
applicationId "cn.idiocy66.fe_mp" // 包名 | |
minSdkVersion 17 // 批改为 17 | |
targetSdkVersion 28 | |
versionCode flutterVersionCode.toInteger() | |
versionName flutterVersionName | |
// 极光配置 | |
manifestPlaceholders = [ | |
JPUSH_PKGNAME : applicationId, | |
JPUSH_APPKEY : "9bf4f58ea9471001e0a4d66d", // 极光中的 appkey | |
JPUSH_CHANNEL : "developer-default", // 默认即可. | |
] | |
} |
初始化
配置实现,能够运行推送性能了。
应用极光推送性能前,必须先执行初始化函数:
final JPush jpush = new JPush(); | |
jpush.setup( | |
appKey: "9bf4f58ea9471001e0a4d66d", // 极光中的 appkey | |
channel: "theChannel", | |
production: false, | |
debug: true, | |
); |
如果不进行初始化操作,在极光后盾无奈查问到对应的机器信息,也就无奈应用推送性能。
取得惟一 rid
在同一个极光利用中,每个设施都领有惟一的一个 id,用于身份验证,后盾也能够独自向这个 rid 进行音讯推送。
应用 getRegistrationID
函数获取以后设施的rid
:
jpush.getRegistrationID().then((rid) {print("以后设施的 rid:${rid}"); | |
}); |
本地推送
本地推送并不会收到极光的条数限度:
var localNotification = LocalNotification( | |
id: 234, | |
title: "本地推送", | |
buildId: 1, | |
content: "???? 轻易写点内容,工夫 ${DateTime.now().toIso8601String()}", | |
fireTime: DateTime.now(), // 立刻发送 | |
subtitle: "副标题 123456", | |
badge: 1, | |
extra: {"myInfo": "推送信息 balabla"} // 携带数据 | |
); | |
jpush.sendLocalNotification(localNotification); |
本地定时推送
定时本地推送,传入 DateTime,相对工夫。
// 3 秒后进行本地推送 | |
var fireDate = DateTime.fromMillisecondsSinceEpoch(DateTime.now().millisecondsSinceEpoch + 3000); | |
var localNotification = LocalNotification( | |
id: 1, | |
title: '定时推送', | |
buildId: 1, | |
content: '三秒后本地推送', | |
fireTime: fireDate, | |
subtitle: '子标题', | |
badge: 5, | |
extra: {"data": "附带数据"} | |
); | |
jpush.sendLocalNotification(localNotification); |
近程推送
近程推送,咱们临时能够应用极光后盾进行,当然有后盾能力也能够间接应用 api 调用。
默认优先级的音讯不会弹窗显示,须要调高优先级则能够在屏幕顶部弹出。
跳转零碎推送设置
跳转到零碎设置中的推送设置(以后利用),点击返回能够间接返回以后利用。
常常用于用户敞开推送后的再揭示。
jpush.openSettingsForNotification();
通常须要和权限获取相配合:
jpush.isNotificationEnabled().then((bool value) {// 返回是否开启告诉});
当用户禁止告诉时,提醒跳转系统配置进行开启告诉操作。
音讯监听
举荐在 初始化函数 setup
前进行告诉监控:
jpush.addEventHandler(onReceiveNotification: (Map<String, dynamic> message) async {print("接管到推送: $message"); | |
}, | |
onOpenNotification: (Map<String, dynamic> message) async {print("通过点击推送进入 app: $message"); | |
}, | |
onReceiveMessage: (Map<String, dynamic> message) async {print("接管到自定义音讯: $message"); | |
}, | |
onReceiveNotificationAuthorization: (Map<String, dynamic> message) async {print("告诉权限状态: $message"); | |
} | |
); |
推送和音讯不同,推送是会显示在设施告诉栏中,而音讯不会。
音讯是由后端 api 发送给设施上的,不会有任何提醒,只能靠这里的监听来接管。
ios 推送是须要用户确认受权的,与安卓有差别,须要独自调用
applyPushAuthority
办法,弹出受权。如果用户不批准,后续无奈再次弹出,只能跳转系统配置页面开启推送权限。
其余
推送的弱小不仅如此,还有 设置标签
、 设置别名
等性能,能够将每个用户都进行精密划分,做到更精准的推送。
更多内容欢送关注公众号:《前端拾遗》