美文网首页
Flutter Push 推送功能插件

Flutter Push 推送功能插件

作者: 高思阳 | 来源:发表于2020-08-24 09:47 被阅读0次

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

    image

    比较了几家推送平台,貌似「极光」出了 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 配置好说,添加包名即可。

    image

    在项目 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",
            ]
        }
    
    

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

    image

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


    image

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

    image

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

    image

    就是这么简单。

    iOS 配置

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

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

    image

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

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

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

    image

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

    image

    服务器编程推送

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

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

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

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

    image

    我还是以 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 看看:

    image image

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

    注:服务端 SDK 参考

    https://github.com/jpush/jpush-api-php-client/blob/master/doc/api.md#push-api

    总结

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

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

    链接:https://www.imooc.com/article/details/id/284154

    相关文章

      网友评论

          本文标题:Flutter Push 推送功能插件

          本文链接:https://www.haomeiwen.com/subject/pxigjktx.html