又到了推薦好插件的時候了。開發 APP 避免不了使用「推送」功能。好比,新上架一個商品,或者最新的一條體育新聞,實時推送給用戶。php
比較了幾家推送平臺,貌似「極光」出了 Flutter 插件,因此就拿它試試手,順便記錄下整個推送功能開發流程。html
說到「推送」,天然有推送端和接收端,接收端天然包括 Android 端和 iOS 端。android
引入插件: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");
}
);
}
複製代碼
在極光後臺建立應用,生成 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」
就是這麼簡單。
如何申請證書和籤權,具體看極光的說明: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 參考
若是知道怎麼結合原生 Android 和 iOS 插件集成到 Flutter 上,那使用極光推送,也能夠不須要官方提供的 Flutter 插件,相信你也能寫。
相反地,使用官方提供的 Flutter 插件和集成文檔,可讓咱們快速的完成 push 通知功能,可讓咱們更聚焦於咱們的產品邏輯和功能上。