推薦一款 Flutter Push 推送功能外掛

coding01發表於2019-03-31

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

推薦一款 Flutter Push 推送功能外掛

比較了幾家推送平臺,貌似「極光」出了 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 配置好說,新增包名即可。

推薦一款 Flutter Push 推送功能外掛

在專案 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",
        ]
    }
複製程式碼

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

推薦一款 Flutter Push 推送功能外掛

當 APP 處於開啟狀態,通過命令好 log,我們能看到「收到推送提醒」:

推薦一款 Flutter Push 推送功能外掛

同時,我們在通知欄上也能收到這條訊息推送通知:

推薦一款 Flutter Push 推送功能外掛

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

推薦一款 Flutter Push 推送功能外掛

就是這麼簡單。

iOS 配置

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

需要注意的是,先在 Xcode 那開啟「Push Notifications」

推薦一款 Flutter Push 推送功能外掛

在「iOS」工程下,新增極光配置資訊:

增加
#include "FlutterJPushPlugin.h"

增加
[self startupJPush:launchOptions appKey:@"你的key" channel:@"你的渠道" isProduction:是否生產版本];
複製程式碼

好了,配置之後,dart 端還是上面的同樣程式碼,還是利用極光的後臺,推送一條測試通知,看看效果:

推薦一款 Flutter Push 推送功能外掛

開啟該通知後,也執行 print 了:

推薦一款 Flutter Push 推送功能外掛

伺服器程式設計推送

只要訊息能到達客戶端,那具體怎麼使用,或者開啟客戶端跳轉到具體頁面,這些工作就好說了,此處就沒必要展開說了。

剩下的就是後臺介面推送通知了,總不能每次都要在「極光」後臺做推送吧!

所以我們需要藉助「極光」提供的介面了。

極光提供了多語言服務端 SDK,基本可以滿足我們的整合需要了。

推薦一款 Flutter Push 推送功能外掛

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

推薦一款 Flutter Push 推送功能外掛

推薦一款 Flutter Push 推送功能外掛

okey,到目前為止,通過簡單的例子,就可以把從服務端到客戶端走通 Push 流程。

注:服務端 SDK 參考

github.com/jpush/jpush…

總結

如果知道怎麼結合原生 Android 和 iOS 外掛整合到 Flutter 上,那使用極光推送,也可以不需要官方提供的 Flutter 外掛,相信你也能寫。

相反地,使用官方提供的 Flutter 外掛和整合文件,可以讓我們快速的完成 push 通知功能,可以讓我們更聚焦於我們的產品邏輯和功能上。

相關文章