說一下寫這篇文章的初衷。以前作過一個APP用到了消息推送,最近這個項目又用到了推送。可是因爲兩個項目間隔4個多月,推送集成、使用方式等都忘了,因此當時又去看了之前項目的源碼和一些推送相關的博客,尋找那些蛛絲馬跡。忽然以爲這樣很浪費時間,爲什麼本身不寫篇文章總結一下呢,之後確定還會用到推送的,下次用的時候再看看這篇文章,思路應該會比較直觀。後來再想一想,嗯,對的,寫吧!html
PS:這篇文章講是基於cordova環境下的消息推送,若是沒有cordova環境的,請先裝好該環境。
cordova create myAPP com.muzi.test
建立一個文件名爲myAPP
,APP包名爲com.muzi.test
的項目cordova platforms add android
將建立的項目加入到Android平臺中
具體的一些cordova操做能夠看我以前寫的一篇博客 從這裏飛過去android
APP_KEY
(我消息推送一直用的極光推送)APP_KEY
須要先在極光推送官網註冊,具體流程很少說。https://www.jiguang.cn/accoun...git
這裏填入的包名(填入保存以後不能再修改)就是開始cordova建立項目是的包名,兩處包名必須相同,否則不能推送,保存以後能夠下載集成好極光推送的demo,也能夠下載打包好的測試app進行推送測試。(由於公司產品特殊,只面相Android用戶,因此對其餘平臺的推送使用不是那麼熟悉,這裏就只介紹Android端的使用)github
jpush-phonegap-plugin
進入到剛開始cordova建立的項目文件根目錄,安裝插件,一共有3中方式:json
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable APP_KEY=your_jpush_appkey
cordova plugin add Your_Plugin_Path --variable APP_KEY=your_jpush_appkey
segmentfault
安裝插件的時候,注意Jpush和jcore的版本,有些版本不能初始化推送
api
your_jpush_appkey
:在極光推送建立應用時生成的APP_KEY數組
JPush
App啓動時,在deviceready
事件回調中調用window.JPush.init()
方法初始化,能夠調用window.JPush.stopPush()
結束推送app
document.addEventListener("deviceready",function(){ //插件初始化 window.JPush.init(); }, false );
registration ID
這個registration ID
是惟一的,項目中接收到這個ID後能夠存儲起來,而後發送給服務端,服務端能夠根據這個registration ID
向指定客戶端(手機)發送推送消息函數
window.JPush.getRegistrationID(function(rId) { console.log(rId); });
設備標籤(Tag)
window.JPush.setTags({ sequence: 1, tags: ['tag1', 'tag2'] }, (result) => { var sequence = result.sequence var tags = result.tags // 數組類型 }, (error) => { var sequence = error.sequence var errorCode = error.code })
參數說明sequence
: number。用戶自定義的操做序列號, 同操做結果一塊兒返回,用來標識一次操做的惟一性。tags
: Array,標籤數組。
調用這個方法後,會向極光的服務端發送設置的Tag
,設置後,會觸發相應的回調函數
設備別名(Alias)
window.JPush.setAlias({ sequence: 1, alias: 'your_alias' }, (result) => { var sequence = result.sequence var alias = result.alias }, (error) => { var sequence = error.sequence var errorCode = error.code })
參數說明sequence
: number。用戶自定義的操做序列號, 同操做結果一塊兒返回,用來標識一次操做的惟一性。tags
: string
當客戶端接收到推送消息時,會觸發這個方法,會返回一個json
結構的數據包,在裏面能夠取到須要的數據
// 接收到推送消息回調 window.plugins.jPushPlugin.receiveNotificationInAndroidCallback = function( data ) { try { console.log( "JPushPlugin:receiveNotificationInAndroidCallback:", data ); } catch (exception) { console.log("JPushPlugin:pushCallback ", exception); } };
點擊通知欄的消息時,會觸發這個方法,並返回包含具體推送內容的json
數據,能夠根據裏面的內容,來作相應的事件處理,好比說須要點擊通知欄消息,跳轉到相應頁面作處理
//點擊通知欄的回調,在這裏編寫特定邏輯 window.plugins.jPushPlugin.openNotificationInAndroidCallback = function( data ) { try { // location.href = 'index.html'; console.log(data); } catch (error) {} };
在初始化極光推送window.JPush.init()
後,當第一次運行APP時會生成了registration ID
,或者成功設置了標籤(Tag)
,別名(Alias)
,能夠在極光推送的官網上,進行消息推送測試,以下圖:
當推送初消息後,一下子就會在手機上接收到推送信息(有時可能會有幾秒到10多秒的延遲,通常狀況下是秒到)
以上就是我使用jpush-phonegap-plugin
插件推送的一些經驗,但願可以幫助到須要的道友。若是有錯誤或不足的地方,歡迎各位道友指出,若是各位以爲滿意,歡迎點贊和收藏。