继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

推荐一款 Flutter Push 推送功能插件

叶梅树
关注TA
已关注
手记 25
粉丝 1.7万
获赞 214

又到了推荐好插件的时候了。开发 APP 避免不了使用「推送」功能。比如,新上架一个商品,或者最新的一条体育新闻,实时推送给用户。

比较了几家推送平台,貌似「极光」出了 Flutter 插件,所以就拿它试试手,顺便记录下整个推送功能开发流程。

说到「推送」,自然有推送端和接收端,接收端自然包括 Android 端和 iOS 端。

demo

引入插件:

flutter_jpush: ^0.0.4

main.dart 加入初始化代码:

void _initJPush() async {
  await FlutterJPush.startup();
  print("初始化jpush成功");

  // 获取 registrationID
  var registrationID =await FlutterJPush.getRegistrationID();
  print(registrationID);
  
  // 注册接收和打开 Notification()
  _initNotification();
}

void _initNotification() async {
  FlutterJPush.addReceiveNotificationListener(
    (JPushNotification notification) {
      print("收到推送提醒: $notification");
    }
  );

  FlutterJPush.addReceiveOpenNotificationListener(
    (JPushNotification notification) {
      print("打开了推送提醒: $notification");
    }
  );
}

Android 配置

在极光后台创建应用,生成 appkey 等信息,Android 配置好说,添加包名即可。

在项目 Android 工程 build.gradle 代码中,增加配置信息:

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.*.*"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        manifestPlaceholders = [
            JPUSH_PKGNAME : applicationId,
            JPUSH_APPKEY : "****", // 极光上注册的包名对应的appkey.
            JPUSH_CHANNEL : "developer-default",
        ]
    }

好了,我们先在极光后台编写一条消息通知,看看效果。

当 APP 处于打开状态,通过命令好 log,我们能看到「收到推送提醒」:

同时,我们在通知栏上也能收到这条消息推送通知:

打开这条通知后,执行的是「addReceiveOpenNotificationListener」

就是这么简单。

iOS 配置

如何申请证书和签权,具体看极光的说明:https://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/

需要注意的是,先在 Xcode 那打开「Push Notifications」

在「iOS」工程下,添加极光配置信息:

增加
#include "FlutterJPushPlugin.h"

增加
[self startupJPush:launchOptions appKey:@"你的key" channel:@"你的渠道" isProduction:是否生产版本];

好了,配置之后,dart 端还是上面的同样代码,还是利用极光的后台,推送一条测试通知,看看效果:

打开该通知后,也执行 print 了:

服务器编程推送

只要消息能到达客户端,那具体怎么使用,或者打开客户端跳转到具体页面,这些工作就好说了,此处就没必要展开说了。

剩下的就是后台接口推送通知了,总不能每次都要在「极光」后台做推送吧!

所以我们需要借助「极光」提供的接口了。

极光提供了多语言服务端 SDK,基本可以满足我们的集成需要了。

我还是以 Laravel 为案例,简要说一说集成。

1. composer.json 文件中添加 jpush 依赖.

"jpush/jpush": "^3.5"

2. 写一个 demo 命令行推送服务:

Artisan::command('jpush', function () {
    $client = new \JPush\Client($app_key, $master_secret);
})->describe('jpush');

3. 发送一个通知试试:

$client->push()
    ->setPlatform('all')
    ->addAllAudience()
    ->setNotificationAlert('你好, 极光推送')
    ->send();

执行命令:php artisan jpush 看看:

okey,到目前为止,通过简单的例子,就可以把从服务端到客户端走通 Push 流程。

注:服务端 SDK 参考

总结

如果知道怎么结合原生 Android 和 iOS 插件集成到 Flutter 上,那使用极光推送,也可以不需要官方提供的 Flutter 插件,相信你也能写。

相反地,使用官方提供的 Flutter 插件和集成文档,可以让我们快速的完成 push 通知功能,可以让我们更聚焦于我们的产品逻辑和功能上。

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP

热门评论

如果关闭App,是不是就收不到通知了?

不稳定,不兼容就没有意义,毕竟产品是给用户用的

你好,请问怎么自定义消息提醒铃声呢

查看全部评论