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

猜你喜欢

转载自blog.csdn.net/qq_37926711/article/details/85533017
今日推荐