首页 > Flutter 使用极光推送进行api和本地定时推送

极光推送,Flutter 使用极光推送进行api和本地定时推送

互联网 2021-04-20 19:34:18

极光推送在国内的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 // 修改为17targetSdkVersion 28versionCode flutterVersionCode.toInteger()versionName flutterVersionName// 极光配置manifestPlaceholders = [JPUSH_PKGNAME : applicationId,JPUSH_APPKEY : "9bf4f58ea9471001e0a4d66d", // 极光中的appkeyJPUSH_CHANNEL : "developer-default", // 默认即可.]}初始化

配置完成,可以运行推送功能了。 使用极光推送功能前,必须先执行初始化函数:

final JPush jpush = new JPush();jpush.setup(appKey: "9bf4f58ea9471001e0a4d66d", // 极光中的appkeychannel: "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 message) async {print("接收到推送: $message");},onOpenNotification: (Map message) async {print("通过点击推送进入app: $message");}, onReceiveMessage: (Map message) async {print("接收到自定义消息: $message");},onReceiveNotificationAuthorization: (Map message) async {print("通知权限状态: $message");});

推送和消息不同,推送是会显示在设备通知栏中,而消息不会。

消息是由后端api发送给设备上的,不会有任何提示,只能靠这里的监听来接收。

ios 推送是需要用户确认授权的,与安卓有差异,需要单独调用 applyPushAuthority 方法,弹出授权。如果用户不同意,后续无法再次弹出,只能跳转系统配置页面开启推送权限。 其他

推送的强大不仅如此,还有设置标签、设置别名等功能,可以将每个用户都进行精细划分,做到更精准的推送。

更多内容欢迎关注公众号:《前端拾遗》

http://weixin.qq.com/r/Yzi5oT-E4mKdrXvC921x (二维码自动识别)

- END -

免责声明:非本网注明原创的信息,皆为程序自动获取自互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件24小时内删除。