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

极光推送在国内的App的覆盖率比较高,在第一时间就更新了对flutter的支持,使用极光简单配置后就可以进行远端推送和本地定时推送,非常方便。

image

推荐使用android进行测试,配置简单,ios需要证书,相对比较复杂。我也是用的安卓端进行演示。

注册极光

先到极光官网,注册账号,配置一下flutter项目的包名,如果不记得了,可以到flutter项目下的 android/app/build.gradle 中找一下,defaultConfig 下的 applicationId 就是包名,这个配置文件不要关,后续我们还会再回来。

image

image

在极光配置好安卓的包名后,我们会得到 AppKey,到这就算注册完成。

image

项目配置

继续打开,android/app/build.gradle 文件。

  1. defaultConfigminSdkVersion 修改为 17flutter创建后默认是16,无法使用极光推送。
  2. defaultConfig 中添加 manifestPlaceholders
image

下面是我的配置,大家根据自己的情况修改即可:

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);
image

本地定时推送

定时本地推送,传入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);
image

远程推送

远程推送,我们暂时可以使用极光后台进行,当然有后台能力也可以直接使用api调用。

默认优先级的消息不会弹窗显示,需要调高优先级则可以在屏幕顶部弹出。

image

跳转系统推送设置

跳转到系统设置中的推送设置(当前应用),点击返回可以直接返回当前应用。
经常用于用户关闭推送后的再提醒。

jpush.openSettingsForNotification();
image

通常需要和权限获取相配合:

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 方法,弹出授权。如果用户不同意,后续无法再次弹出,只能跳转系统配置页面开启推送权限。

其他

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


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

image
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352