java-js知識庫之八——cordova本地推送
本篇記錄cordova的本地推送,早上折騰了一個多小時,安裝本地推送外掛後,打包一直報錯,都忘記以前是怎麼安裝的了,通過和以前專案對比,發現是外掛安裝的順序不同導致的,很多外掛都有依賴的外掛,本地推送外掛依賴device外掛,在安裝本地推送外掛之前,先移除device外掛和其關聯的外掛。
一、安裝本地推送外掛
命令列輸入cordova plugin add cordova-plugin-local-notification
D:\java\android\test>cordova plugin add cordova-plugin-local-notification
檢視安裝的外掛cordova plugins ls
D:\java\android\test>cordova plugins ls cordova-hot-code-push-plugin 1.5.3 "Hot Code Push Plugin" cordova-plugin-badge 0.8.8 "Badge" cordova-plugin-camera 4.0.3 "Camera" cordova-plugin-device 2.0.2 "Device" cordova-plugin-geolocation 4.0.1 "Geolocation" cordova-plugin-local-notification 0.9.0-beta.2 "LocalNotification" cordova-plugin-whitelist 1.3.3 "Whitelist"
安裝外掛後重新打包apk。
二、推送本地訊息
2.1 推送單條訊息
在www資料夾下開啟index.html,新增:
<button id="single">單條訊息</button>
開啟index.js,新增:
var single = document.getElementById("single"); single.onclick = function(){ cordova.plugins.notification.local.schedule({ title: '單條資訊', text: '推送單條訊息內容', foreground: true }); }
命令列輸入cordova-hcp build
D:\java\android\test>cordova-hcp build
Running build
Config { update: 'start',
content_url: 'http://yktzs.top/cordova/',
release: '2019.01.01-10.30.47' }
Build 2019.01.01-10.30.47 created in D:\java\android\test\www
將更新的檔案釋出至伺服器,開啟app。
點選按鈕,工作列出現推送的小圖示,裡面有推送的訊息內容。
2.2 推送多條訊息
index.html:
<button id="more">多條訊息</button>
index.js:
var more = document.getElementById("more");
more.onclick = function(){
cordova.plugins.notification.local.schedule([{
id : 1,
title: '第一條資訊',
text: '推送第一條訊息內容',
foreground: true,
at : new Date()
},{
id : 2,
title: '第二條資訊',
text: '推送第二條訊息內容',
foreground: true,
at : new Date(new Date().getTime() + 1000)
}]);
}
數組裡面存放多條訊息,可以定義推送時間。
2.3 引數說明
獲取外掛的屬性預設值:
cordova.plugins.notification.local.getDefaults().foreground;//預設false
設定屬性的預設值
cordova.plugins.notification.local.setDefaults({
foreground: true
});
cordova.plugins.notification.local.getDefaults().foreground;//顯示true
id : 訊息的唯一標示,如果沒有值,預設為0,每次推送相同的訊息id會覆蓋之前的。
id : 1
title : 訊息的標題。
title: '單條資訊'
text : 訊息內容,可為字串和陣列。
text: '推送單條訊息內容'
陣列使用person區分物件。
text: [
{ message: 'I say:you' },
{ person: 'you', message: 'you say' },
{ person: 'she',message: 'she say' },
{ person: 'he',message: 'he say ' }
]
at : 訊息的推送時間。
at : new Date()
firstAt : 開始計算迴圈的時間,與every同時使用,重複傳送訊息。
every : 引數可為year、quarter、month、week、hour、day、minute。
//事件觸發後一分鐘之後開始迴圈觸發(不是立即觸發)
firstAt : new Date(),
every : 'minute'
icon : 訊息內容圖示。
icon : 'http://yktzs.top/work/images/first.jpg',
actions : 訊息陣列,可與事件監聽同時使用,使用者點選時觸發相應的事件。
actions: [
{ id: 'yes', title: 'Yes' },
{ id: 'no', title: 'No' }
]
2.4 事件監聽
event:add, trigger, click, clear, cancel, update, clearall and cancelall,也可為id名稱。
cordova.plugins.notification.local.on(event, callback);
cordova.plugins.notification.local.on('yes', function (notification, eopts) { alert('點選了yes'); });
本地推送apk:notification.apk 密碼:e08b