1. 程式人生 > >java-js知識庫之八——cordova本地推送

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