uniapp 消息推送与透传+语音播报
本章介绍 uniapp app端消息推送与语音播报。。此功能需要前后端相互配合 下面代码单独运行是不会推送消息的。前面需要配置相关包名等信息以及勾选推送,配置在此处按要求填写就行我这里只讲代码逻辑获取 clientid//--------------login.vuelet clientInfo = plus.push.getClientInfo()console.log(clientInfo.c
·
本章介绍 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条内容
所有评论(0)