前言
說一下寫這篇文章的初衷。之前做過一個APP用到了消息推送,最近這個項目又用到了推送。但是由於兩個項目間隔4個多月,推送集成、使用方式等都忘了,所以當時又去看了以前項目的源碼和一些推送相關的博客,尋找那些蛛絲馬跡。突然覺得這樣很浪費時間,爲何自己不寫篇文章總結一下呢,以後肯定還會用到推送的,下次用的時候再看看這篇文章,思路應該會比較直觀。後來再想想,嗯,對的,寫吧!
PS:這篇文章講是基於cordova環境下的消息推送,如果沒有cordova環境的,請先裝好該環境。
正文
1.cordova創建APP項目
cordova create myAPP com.muzi.test
創建一個文件名爲myAPP
,APP包名爲com.muzi.test
的項目cordova platforms add android
將創建的項目加入到Android平臺中
具體的一些cordova操作可以看我之前寫的一篇博客 從這裏飛過去
2.申請消息推送APP_KEY
(我消息推送一直用的極光推送)
2.1 申請APP_KEY
需要先在極光推送官網註冊,具體流程不多說。
2.2 進入到APP應用創建中心
https://www.jiguang.cn/accoun...
這裏填入的包名(填入保存之後不能再修改)就是開始cordova創建項目是的包名,兩處包名必須相同,不然不能推送,保存之後可以下載集成好極光推送的demo,也可以下載打包好的測試app進行推送測試。(因爲公司產品特殊,只面相Android用戶,所以對其他平臺的推送使用不是那麼熟悉,這裏就只介紹Android端的使用)
3. 安裝極光推送插件 jpush-phonegap-plugin
進入到剛開始cordova創建的項目文件根目錄,安裝插件,一共有3中方式:
- 通過 Cordova Plugins 安裝,要求 Cordova CLI 5.0+:
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
- 或直接通過 url 安裝:
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
安裝插件的時候,注意Jpush和jcore的版本,有些版本不能初始化推送
your_jpush_appkey
:在極光推送創建應用時生成的APP_KEY
4.編碼
4.1 初始化JPush
App啓動時,在deviceready
事件回調中調用window.JPush.init()
方法初始化,可以調用window.JPush.stopPush()
結束推送
document.addEventListener("deviceready",function(){
//插件初始化
window.JPush.init();
},
false
);
4.2 極光推送的推送方式
- 廣播(所有人)
- 設備標籤(Tag)--可以是單人或者多人
- 設備別名(Alias)--可以是單人或者多人
- registration ID(具體某一個)
- 用戶分羣推送
4.3 獲取極光推送後臺返回的設備registration ID
這個registration ID
是唯一的,項目中接收到這個ID後可以存儲起來,然後發送給服務端,服務端可以根據這個registration ID
向指定客戶端(手機)發送推送消息
window.JPush.getRegistrationID(function(rId) {
console.log(rId);
});
4.4 設置設備標籤(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
,設置後,會觸發相應的回調函數
4.5 設置設備別名(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
- 每次調用設置有效的別名將覆蓋之前的設置。
- 有效的別名組成:字母(區分大小寫)、數字、下劃線、漢字、特殊字符@!#$&*+=.|。
- 限制:alias 命名長度限制爲 40 字節(判斷長度需採用 UTF-8 編碼)。
4.6 獲取推送消息內容
當客戶端接收到推送消息時,會觸發這個方法,會返回一個json
結構的數據包,在裏面可以取到需要的數據
// 接收到推送消息回調
window.plugins.jPushPlugin.receiveNotificationInAndroidCallback = function(
data
) {
try {
console.log(
"JPushPlugin:receiveNotificationInAndroidCallback:",
data
);
} catch (exception) {
console.log("JPushPlugin:pushCallback ", exception);
}
};
4.7 點擊通知欄的推送消息
點擊通知欄的消息時,會觸發這個方法,並返回包含具體推送內容的json
數據,可以根據裏面的內容,來做相應的事件處理,比如說需要點擊通知欄消息,跳轉到相應頁面做處理
//點擊通知欄的回調,在這裏編寫特定邏輯
window.plugins.jPushPlugin.openNotificationInAndroidCallback = function(
data
) {
try {
// location.href = 'index.html';
console.log(data);
} catch (error) {}
};
4.8 更多推送相關的api,可以查看phonegap插件官網
4.9 推送測試
在初始化極光推送window.JPush.init()
後,當第一次運行APP時會生成了registration ID
,或者成功設置了標籤(Tag)
,別名(Alias)
,可以在極光推送的官網上,進行消息推送測試,如下圖:
當推送初消息後,一會兒就會在手機上接收到推送信息(有時可能會有幾秒到10多秒的延遲,一般情況下是秒到)
廢話
以上就是我使用jpush-phonegap-plugin
插件推送的一些經驗,希望能夠幫助到需要的道友。如果有錯誤或不足的地方,歡迎各位道友指出,如果各位覺得滿意,歡迎點贊和收藏。