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

又到了推薦好插件的時候了。開發 APP 避免不了使用「推送」功能。好比,新上架一個商品,或者最新的一條體育新聞,實時推送給用戶。php

比較了幾家推送平臺,貌似「極光」出了 Flutter 插件,因此就拿它試試手,順便記錄下整個推送功能開發流程。html

說到「推送」,天然有推送端和接收端,接收端天然包括 Android 端和 iOS 端。android

demo

引入插件:ios

flutter_jpush: ^0.0.4
複製代碼

main.dart 加入初始化代碼:git

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 配置好說,添加包名便可。github

在項目 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",
        ]
    }
複製代碼

好了,咱們先在極光後臺編寫一條消息通知,看看效果。json

當 APP 處於打開狀態,經過命令好 log,咱們能看到「收到推送提醒」: api

同時,咱們在通知欄上也能收到這條消息推送通知:bash

打開這條通知後,執行的是「addReceiveOpenNotificationListener」

就是這麼簡單。

iOS 配置

如何申請證書和籤權,具體看極光的說明:docs.jiguang.cn/jpush/clien…

須要注意的是,先在 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 參考

github.com/jpush/jpush…

總結

若是知道怎麼結合原生 Android 和 iOS 插件集成到 Flutter 上,那使用極光推送,也能夠不須要官方提供的 Flutter 插件,相信你也能寫。

相反地,使用官方提供的 Flutter 插件和集成文檔,可讓咱們快速的完成 push 通知功能,可讓咱們更聚焦於咱們的產品邏輯和功能上。

相關文章
相關標籤/搜索