您好,登錄后才能下訂單哦!
概述
在移動應用開發中,消息推送可以說是一項非常重要的功能,它能夠起到提醒或者喚醒用戶的作用,同時也是產品運營人員更高效地實現運營目標的重要手段,比如將新上架一個商品或者最新的一條新聞推送給用戶。
事實上,消息推送是一個橫跨業務服務器、第三方推送服務托管廠商、操作系統長連接推送服務、用戶終端以及移動手機應用等五方面的復雜業務應用場景。在原生iOS開發中,為了簡化消息推送,蘋果推送服務(簡稱APNs)接管了系統所有應用的消息通知需求,任何第三方消息推送都需要經過推送服務進行轉發。對于原生Android平臺來說,則可以使Google提供的類似Firebase云消息傳遞機制來實現統一的推送托管服務。
具體來說,當某個應用需要發送消息推送時,消息會由應用的服務器先發給蘋果或Google的消息推送服務器,然后經由APNs或FCM(Google的消息推送框架)發送到設備,設備接收到消息后經過系統層面完成解析,最終把消息轉發給所屬應用,整個工作流程如下圖所示。
不過,由于Google服務在大陸地區并不穩定,因此在國內的Android手機供應商通常會把Google服務換成自己開發的推送服務,并定制一套推送標準,而對于開發者來說,無疑是增大了適配的負擔。所以在處理Android端的消息推送時,通常會使用第三方推送服務,比如極光、個推和友盟推送等。公司在選擇第三方工具時候,由于權衡的尺度不一樣,所以選擇哪家作為推送服務還得根據實際情況而定。
雖然這些第三方推送服務使用自建的長連接,無法享受操作系統底層的優化,但它們會對所有使用推送服務的應用共享推送通道,只要有一個使用第三方推送服務的應用沒被系統殺死,就可以讓消息及時送達,因此并不需要考慮消息到達率的問題。
由于第三方推送服務廠商提供的功能和接入流程大都一致,考慮到極光的社區和生態相對活躍,并且在國內較早的推出Flutter插件,所以我們可以在Flutter項目中直接使用這個插件,下圖是極光推送的架構示意圖。
極光推送,英文簡稱JPush,是一個免費的第三方消息推送服務廠商,圍繞推送服務,極光官方推出了眾多平臺的SDK及插件,如圖下圖所示。
添加極光插件
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】命令 來加載依賴,如下圖所示。
直接通過git 的方式從 github上加載,與你的網速有很大關系,也很有可能加載不成功,需要耐心等待。
pub.dev方式依賴
pub 是Google官方的Dart Packages倉庫,類似于node中的npm倉庫,android中的jcenter,我們可以在上面查找我們需要的包和插件。我們可以訪問國內的pub倉庫來更快的搜索我們需要的插件。
然后在 flutter 項目的 pubspec.yaml 文件中配制極光推送的pub依賴,如下所示。
jpush_flutter: 0.1.0 jpush_flutter: ^0.1.0
兩種寫法的區別在于,后者會自動下載更高版本的,比如說這里配制的是 0.1.0 ,當 pub 倉庫中的版本升級為 0.1.3 的時候,那么我們項目中本地依賴的版本不一定是 當前設置的 0.1.0 版本,而是其他版本。當然還可以使用下面的方式。
jpush_flutter: any
前者的區別是 會根據當前的項目環境加載適合當前項目環境中的版本插件,如有時我們指定版本加載時,會出現各種異常的沖突,當幾個版本中與你使用到的功能無太大差異時,就可以考慮使用這種方法來簡單粗暴的解決。
本地依賴
除了上面兩種方式外,我們還可以把極光推送 flutter 插件下載到本地,然后在本地進行依賴。首先,去github上下載極光推送flutter插件的源碼。
然后把下載下來的 zip 文件解壓,放到一個目錄中,然后在 flutter 項目中的 pubspec.yaml 配制極光推送的本地依賴,如下所示。
# 極光推送插件 jpush_flutter: path: ../jpush-flutter-plugin
這里使用到的 ../ 是校對路徑的表示方法,當然也可以使用jpush-flutter-plugin文件夾的全路徑。
在 flutter 項目中有多種方式方法來依賴極光推送插件,依賴成功后如下圖所示。
推送示例
原生配置
Android平臺配置
由于推送會涉及到很多原生的配置,所以為了能夠正常的進行消息推送,還需要在原生Android和iOS中進行一些配置工作。對于Android平臺來說,配置工作相對簡單,打開android/app/build.gradle文件,然后在defaultConfig節點中添加如下代碼。
android: { .... defaultConfig { applicationId "替換成自己應用ID" ... //ndk用于真機運行,用來指定對應的芯片架構 ndk { abiFilters 'armeabi', 'armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a', } manifestPlaceholders = [ JPUSH_PKGNAME : applicationId, JPUSH_APPKEY : "appkey", JPUSH_CHANNEL : "developer-default", ] } }
如下圖所示。
在極光開發者平臺中創建推送應用程序,然后填寫build.gradle腳本所需的參數,如下圖所示。
然后,在Android手機上運行項目,會有 Running Gradle task ... 的提示,去 maven jcenter 下載 android 平臺使用到的依賴庫以及os庫等。
iOS平臺依賴
對于iOS平臺來說,應用配置相對Android平臺來說要繁瑣一些,因為iOS的推送配置會涉及應用權限、蘋果APNs服務和極光后臺信息關聯等過程。
然后,使用Xcode打開Flutter項目的iOS工程,然后依次選擇【Target】→【Signing & Capabilities】→【Capability】→【Push Notifications】選項開啟應用的消息推送功能,如下圖所示。
然后,在極光開發者平臺中配制 iOS的相關推送認證。
申請推送證書的過程,極光推送官網提供了比較詳細的操作步驟,可以按照官網的步驟進行申請。然后,在極光開發者服務后臺上傳申請到的推送證書,如下圖所示。
配制好證書后,運行 Flutter 項目于 iphone 手機上,如下圖所示。
運行項目
完成上述操作后,極光推送所需的所有原生環境就配置完成了。接下來,使用Android Studio打開Flutter工程,在main.dart文件的initState生命周期函數中添加初始化JPush代碼,如下所示。
void initState() { super.initState(); JPush jpush = new JPush(); jpush.setup( appKey: "96d7d7e77bee7abd4d568978", channel: "flutter_channel", production: false, debug: true, //是否打印debug日志 ); }
然后,啟動Flutter應用,并在打開極光開發者服務后臺添加一條推送消息,選擇需要推送的平臺,然后點擊【立即發送】按鈕,如下圖所示。
等待消息推送成功后,就可以在對應的移動設備上看到推送的消息,如下圖所示。
到此這篇關于Flutter應用集成極光推送的實現示例的文章就介紹到這了,更多相關Flutter集成極光推送內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。