Flutter應(yīng)用集成極光推送的實現(xiàn)示例

概述

創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)定襄,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

在移動應(yīng)用開發(fā)中,消息推送可以說是一項非常重要的功能,它能夠起到提醒或者喚醒用戶的作用,同時也是產(chǎn)品運營人員更高效地實現(xiàn)運營目標(biāo)的重要手段,比如將新上架一個商品或者最新的一條新聞推送給用戶。

事實上,消息推送是一個橫跨業(yè)務(wù)服務(wù)器、第三方推送服務(wù)托管廠商、操作系統(tǒng)長連接推送服務(wù)、用戶終端以及移動手機(jī)應(yīng)用等五方面的復(fù)雜業(yè)務(wù)應(yīng)用場景。在原生iOS開發(fā)中,為了簡化消息推送,蘋果推送服務(wù)(簡稱APNs)接管了系統(tǒng)所有應(yīng)用的消息通知需求,任何第三方消息推送都需要經(jīng)過推送服務(wù)進(jìn)行轉(zhuǎn)發(fā)。對于原生Android平臺來說,則可以使Google提供的類似Firebase云消息傳遞機(jī)制來實現(xiàn)統(tǒng)一的推送托管服務(wù)。

具體來說,當(dāng)某個應(yīng)用需要發(fā)送消息推送時,消息會由應(yīng)用的服務(wù)器先發(fā)給蘋果或Google的消息推送服務(wù)器,然后經(jīng)由APNs或FCM(Google的消息推送框架)發(fā)送到設(shè)備,設(shè)備接收到消息后經(jīng)過系統(tǒng)層面完成解析,最終把消息轉(zhuǎn)發(fā)給所屬應(yīng)用,整個工作流程如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

不過,由于Google服務(wù)在大陸地區(qū)并不穩(wěn)定,因此在國內(nèi)的Android手機(jī)供應(yīng)商通常會把Google服務(wù)換成自己開發(fā)的推送服務(wù),并定制一套推送標(biāo)準(zhǔn),而對于開發(fā)者來說,無疑是增大了適配的負(fù)擔(dān)。所以在處理Android端的消息推送時,通常會使用第三方推送服務(wù),比如極光、個推和友盟推送等。公司在選擇第三方工具時候,由于權(quán)衡的尺度不一樣,所以選擇哪家作為推送服務(wù)還得根據(jù)實際情況而定。

雖然這些第三方推送服務(wù)使用自建的長連接,無法享受操作系統(tǒng)底層的優(yōu)化,但它們會對所有使用推送服務(wù)的應(yīng)用共享推送通道,只要有一個使用第三方推送服務(wù)的應(yīng)用沒被系統(tǒng)殺死,就可以讓消息及時送達(dá),因此并不需要考慮消息到達(dá)率的問題。

由于第三方推送服務(wù)廠商提供的功能和接入流程大都一致,考慮到極光的社區(qū)和生態(tài)相對活躍,并且在國內(nèi)較早的推出Flutter插件,所以我們可以在Flutter項目中直接使用這個插件,下圖是極光推送的架構(gòu)示意圖。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

極光推送,英文簡稱JPush,是一個免費的第三方消息推送服務(wù)廠商,圍繞推送服務(wù),極光官方推出了眾多平臺的SDK及插件,如圖下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

添加極光插件

Flutter插件支持多種依賴方式,通常有3種:git依賴、pub.dev依賴和本地依賴。

通過git 方式依賴

打開Flutter工程的 pubspec.yaml 配制文件,然后添加添加 如下依賴代碼。

# 極光推送插件
 jpush_flutter:
  # git 依賴方式
  git:
   # git 依賴的地址
   url: git://github.com/jpush/jpush-flutter-plugin.git
   # git 倉庫中的分支
   ref: master

然后,點擊 【Packages get 】下載依賴或者直接在terminal 命令行中 使用【 flutter packages get】命令 來加載依賴,如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

直接通過git 的方式從 github上加載,與你的網(wǎng)速有很大關(guān)系,也很有可能加載不成功,需要耐心等待。

pub.dev方式依賴

pub 是Google官方的Dart Packages倉庫,類似于node中的npm倉庫,android中的jcenter,我們可以在上面查找我們需要的包和插件。我們可以訪問國內(nèi)的pub倉庫來更快的搜索我們需要的插件。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

然后在 flutter 項目的 pubspec.yaml 文件中配制極光推送的pub依賴,如下所示。

jpush_flutter: 0.1.0
jpush_flutter: ^0.1.0

兩種寫法的區(qū)別在于,后者會自動下載更高版本的,比如說這里配制的是 0.1.0 ,當(dāng) pub 倉庫中的版本升級為 0.1.3 的時候,那么我們項目中本地依賴的版本不一定是 當(dāng)前設(shè)置的 0.1.0 版本,而是其他版本。當(dāng)然還可以使用下面的方式。

jpush_flutter: any

前者的區(qū)別是 會根據(jù)當(dāng)前的項目環(huán)境加載適合當(dāng)前項目環(huán)境中的版本插件,如有時我們指定版本加載時,會出現(xiàn)各種異常的沖突,當(dāng)幾個版本中與你使用到的功能無太大差異時,就可以考慮使用這種方法來簡單粗暴的解決。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

本地依賴

除了上面兩種方式外,我們還可以把極光推送 flutter 插件下載到本地,然后在本地進(jìn)行依賴。首先,去github上下載極光推送flutter插件的源碼。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

然后把下載下來的 zip 文件解壓,放到一個目錄中,然后在 flutter 項目中的 pubspec.yaml 配制極光推送的本地依賴,如下所示。

# 極光推送插件
 jpush_flutter:
  path: ../jpush-flutter-plugin

這里使用到的 ../ 是校對路徑的表示方法,當(dāng)然也可以使用jpush-flutter-plugin文件夾的全路徑。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

在 flutter 項目中有多種方式方法來依賴極光推送插件,依賴成功后如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

推送示例

原生配置

Android平臺配置

由于推送會涉及到很多原生的配置,所以為了能夠正常的進(jìn)行消息推送,還需要在原生Android和iOS中進(jìn)行一些配置工作。對于Android平臺來說,配置工作相對簡單,打開android/app/build.gradle文件,然后在defaultConfig節(jié)點中添加如下代碼。

android: {
 ....
 defaultConfig {
  applicationId "替換成自己應(yīng)用ID"
...
//ndk用于真機(jī)運行,用來指定對應(yīng)的芯片架構(gòu)
  ndk {
  abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a',    
  }

  manifestPlaceholders = [
    JPUSH_PKGNAME : applicationId,
    JPUSH_APPKEY : "appkey", 
    JPUSH_CHANNEL : "developer-default",
  ]
 }  
}

如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

在極光開發(fā)者平臺中創(chuàng)建推送應(yīng)用程序,然后填寫build.gradle腳本所需的參數(shù),如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

然后,在Android手機(jī)上運行項目,會有 Running Gradle task ... 的提示,去 maven jcenter 下載 android 平臺使用到的依賴庫以及os庫等。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

iOS平臺依賴

對于iOS平臺來說,應(yīng)用配置相對Android平臺來說要繁瑣一些,因為iOS的推送配置會涉及應(yīng)用權(quán)限、蘋果APNs服務(wù)和極光后臺信息關(guān)聯(lián)等過程。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

然后,使用Xcode打開Flutter項目的iOS工程,然后依次選擇【Target】→【Signing & Capabilities】→【Capability】→【Push Notifications】選項開啟應(yīng)用的消息推送功能,如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

然后,在極光開發(fā)者平臺中配制 iOS的相關(guān)推送認(rèn)證。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

申請推送證書的過程,極光推送官網(wǎng)提供了比較詳細(xì)的操作步驟,可以按照官網(wǎng)的步驟進(jìn)行申請。然后,在極光開發(fā)者服務(wù)后臺上傳申請到的推送證書,如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

配制好證書后,運行 Flutter 項目于 iphone 手機(jī)上,如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

運行項目

完成上述操作后,極光推送所需的所有原生環(huán)境就配置完成了。接下來,使用Android Studio打開Flutter工程,在main.dart文件的initState生命周期函數(shù)中添加初始化JPush代碼,如下所示。

void initState() {
  super.initState();
  JPush jpush = new JPush();
  jpush.setup(
  appKey: "96d7d7e77bee7abd4d568978",
  channel: "flutter_channel",
  production: false,
  debug: true,   //是否打印debug日志
  );
 }

然后,啟動Flutter應(yīng)用,并在打開極光開發(fā)者服務(wù)后臺添加一條推送消息,選擇需要推送的平臺,然后點擊【立即發(fā)送】按鈕,如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

等待消息推送成功后,就可以在對應(yīng)的移動設(shè)備上看到推送的消息,如下圖所示。

Flutter應(yīng)用集成極光推送的實現(xiàn)示例

到此這篇關(guān)于Flutter應(yīng)用集成極光推送的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Flutter集成極光推送內(nèi)容請搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!

當(dāng)前文章:Flutter應(yīng)用集成極光推送的實現(xiàn)示例
網(wǎng)頁地址:http://bm7419.com/article20/jdjsco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站維護(hù)網(wǎng)站建設(shè)、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化