uniapp 消息推送与透传+语音播报

本章介绍 uniapp app端消息推送与语音播报。。此功能需要前后端相互配合 下面代码单独运行是不会推送消息的。

前面需要配置相关包名等信息以及勾选推送,配置在此处按要求填写就行

我这里只讲代码逻辑

获取 clientid

	//--------------login.vue 
	let clientInfo = plus.push.getClientInfo()
	console.log(clientInfo.clientid) // clientid os  
	// 将clientid 与 账号密码一起给后端 保存数据库(推送需要用到)
// app.vue  onLaunch:function
		onLaunch: function(params) {
			// #ifdef APP-PLUS
			let _this = this
			
			// 测试语音播报
			// _this.audio('支付宝到账,两个亿', 'token需要查看百度语音文档获取')
			
			//监听系统知栏消息点击事件
			plus.push.addEventListener('click', (msg) => {
				//处理点击消息的业务逻辑代码  
				let json = msg.payload
				let token = msg.token
				_this.audio(JSON.stringify(json), JSON.stringify(token))
				console.log('------------通知-------------')
				console.log(json, 'APP1 -----------------json----------------')
				//plus.nativeUI.alert("click:" + JSON.stringify(json))
			}, false)
			
			//监听接收透传消息事件  
			plus.push.addEventListener('receive', (msg) => {
				if (uni.getSystemInfoSync().platform == 'ios') {
					// 通知栏消息
					let payload = msg.payload
					let messageTitle = payload.title;
					let messageContent = payload.content;
					if (messageContent && msg.aps == null && msg.type == "receive" && messageContent!='火星积分') {
						// msg.aps = 'receive'
						plus.push.createMessage(messageContent, JSON.stringify(payload), {
							title: messageTitle,
							cover: false
						})
					}
				}
			}, false)

			// 通知用户打开消息通知权限
			let main = plus.android.runtimeMainActivity();
			let pkName = main.getPackageName();
			let NotificationManagerCompat = plus.android.importClass(
				"android.support.v4.app.NotificationManagerCompat");
			let packageNames = NotificationManagerCompat.from(main);
			if (!packageNames.areNotificationsEnabled()) { //手机没有开启通知的权限
				uni.showModal({
					title: '温馨提示:',
					content: '请打开通知权限,接收收款语音通知!',
					showCancel: false,
					success: (res) => {
						let uid = main.getApplicationInfo().plusGetAttribute("uid");
						let Intent = plus.android.importClass('android.content.Intent');
						let Build = plus.android.importClass("android.os.Build");
						let Settings = plus.android.importClass("android.provider.Settings");
						let Uri = plus.android.importClass("android.net.Uri");
						let intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');
						intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
						let uri = Uri.fromParts("package", main.getPackageName(), null);
						intent.setData(uri);
						main.startActivity(intent);
					}
				})
			}
			
			// #endif
		},
		methods: {
			/**
			 * 语音合成技术
			 * @param {string} string 需要合成播报的文字
			 * @param {token} token 获取的百度token
			 */
			audio(string, token) {
				const innerAudioContext = uni.createInnerAudioContext();
				innerAudioContext.autoplay = true;
				let json = { // 参数解析请打开下面百度语音地址查看
					cuid: 'abcdxxx',
					tex: string,
					tok: token, 
					lan: 'zh',
					ctp: '1',
					vol: 9,
					per: 4,
					spd: 4,
					pit: 4,
					aue: 3
				}
				let query = this.$u.queryParams(json)
				console.log(query)
				innerAudioContext.src = `https://tsn.baidu.com/text2audio` + query;
				innerAudioContext.onPlay(() => {
					console.log('开始播放')
				});
				innerAudioContext.onEnded(() => {
					console.log('语音播报结束')
					innerAudioContext.destroy() // 销毁
				});
				innerAudioContext.onError(() => {
					console.log('语音播报失败')
					innerAudioContext.destroy() // 销毁
				});
				//百度语音合成技术文档: https://ai.baidu.com/ai-doc/SPEECH/0k38y8mfh
			}
		}
  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值