个推消息推送,实现推送消息和语音合成

消息推送的实现:
1.打开应用的时候
2.通过plus.push.getClientInfo().clientid获取到clientid
3.接口传到服务器
4.进行判断表里是否存在该条数据,没有就插入,有则不插入,另外关联登录的companyid
5.在服务器进行轮询,如果有新的订单进入的时候,就调用消息接口,查询关联的companyid,推送消息到相应的门店的app
6.服务器集成phpsdk(使用composer安装https://packagist.org/?query=getui)
7.点击消息跳转到特定页面(在点击消息事件中进行跳转页面)
8.多进程处理
9.通过透传实现点餐语音提示
10.获取当前客户端的消息数据
11.设置当前客户端的消息配置
12.查询新消息的列表
13.扫码点餐下单后,获取到桌台号,进行md5加密,调用语音接口,生成语音文件,调用消息推送接口并传入文件路径,推送消息到前台,前台获取到消息的信息后,设置语音的路径,是否进行语音响铃的话,可以传入所有的client_id和sound的数组,进行循环,匹配到就进行sound的判断是否推送消息
14.扫码点餐和外卖,外卖通过小张的接口来实时的监听,扫码点餐
15.5+SDK获取client_id为null(https://blog.csdn.net/xiaomen417/article/details/76916390)
16.低版本的安卓机推送的消息的logo是空白的
17.低版本的安卓播放语音,遇到逗号会停止,部分文字无法播放,例如:(龙王阁有新的订单),而(龙王阁有新的扫码点餐订单)可以播放,而且还受到语音长度的限制
18.本来是想把plusready写在vue的组件里的,但是这样只会执行一次,没有办法使用receive事件实时监听,所以只能把plusready放在index.html里,这样就会导致vue的路由问题,只能重新通过script标签引入router,但是我发现没法使用,应该是页面main.js没有加载完成,然后我使用mui.plusReady先加载完页面后,再去调用还是不行,路由已经是我想跳转的页面,大概是页面没加载完,找不到组件,所以我只能使用location.href来拼接url来进行跳转
19.安卓5.1.1通知栏logo空白
20.http://ask.dcloud.net.cn/question/28840(html5+语音设置)

php透传模板代码
public static function IGtTransmissionTemplateDemo($attributes){extract($attributes);$template = new IGtTransmissionTemplate();$template->setAppId(APPID);//应用appid$template->setAppKey(APPKEY);//应用appkey$template->setTransmissionType(2);//透传消息类型$template->setTransmissionContent(json_encode(["url"      => $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST']."/speech/".md5($tablename).".mp3","sound"    => $sound,"title"    => $title,"content"  => $content,"table_id" => $table_id,"tablename"=> $tablename,"type"     => $type,"time"     => time()]));//透传内容//iOS推送需要设置的pushInfo字段//$template ->setPushInfo($actionLocKey,$badge,$message,$sound,$payload,$locKey,$locArgs,$launchImage);//$template ->setPushInfo('', 0, '', '', '', '', '', '');return $template;}
js代码
document.addEventListener( "plusready", function(){var messageList = [];var message = document.getElementById("message");// 监听点击消息事件plus.push.addEventListener( "click", function( msg ) {// alert(JSON.stringify(msg));// 判断是从本地创建还是离线推送的消息switch( msg.payload ) {case "LocalMSG":document.addEventListener("resume", function () {mui.plusReady(function(){// 循环清除通知栏var all_message = plus.push.getAllMessage();if(all_message.length > 0){for(var i = 0; i < all_message.length; i++){plus.push.remove(all_message[i]);}}// 进行跳转,使用vue-router跳转失败if(msg){location.href = window.location.href.split('#')[0]+'#/msgcenter';}// 需要销毁这个对象,要不然每次启动app都会跳转到指定页面msg = false;})}, false);outSet( "点击本地创建消息启动:" );break;default:outSet( "点击离线推送消息启动:");break;}// 处理其它数据logoutPushMsg( msg );}, false );// 监听在线消息事件plus.push.addEventListener( "receive", function( msg ) {// alert(JSON.stringify(msg));// 把监听到的消息添加数组messageList.push(JSON.parse(msg.payload));// 排队只有队伍执行完了,才再次调用排队函数if(messageList.length == 1){queue(messageList);}}, false );}, false );// 消息进行排队设置function queue(messageList){if(messageList.length > 0){var reponse = messageList[0];// 创建消息plus.push.createMessage(reponse['content'],'LocalMSG',{"title":reponse['title'],"sound":"none","cover":false});// 如果设置了响铃,就apend一个audio到id为app的标签里if(reponse['sound'] == 't'){// createAudio(reponse['url'],reponse['table_id']);createSpeech(reponse);}// 延迟8秒后,再播放下一条通知setTimeout(function(){messageList.splice(0,1);queue(messageList);},10000);         }}// 创建audio标签(这块我之前是使用百度api的语音合成的phpSDK的,但是在5.1.1的安卓机没法完全播完(高版本的安卓机完全没有问题),老是播放一部分,实在没有找到解决的方案,感觉5+SDK可以解决,后来我就没有使用这块的代码了,我就改用科大讯飞的在线合成,hbuilder的html5+的speech)function createAudio(url,table_id) {var audio = document.createElement('audio');var app = document.getElementById('app');var oldAudio = document.getElementById(table_id.toString());// 如果已经存在这个id,就先移除掉if(oldAudio){app.removeChild(oldAudio);}audio.setAttribute('controls','controls');audio.setAttribute('autoplay','autoplay');audio.setAttribute('src',url);audio.setAttribute('id',table_id.toString());// audio.setAttribute('loop','loop');audio.style.display = 'none';app.appendChild(audio);}// 使用科大讯飞function createSpeech(reponse) {var main = plus.android.runtimeMainActivity();var SpeechUtility = plus.android.importClass('com.iflytek.cloud.SpeechUtility');var SpeechConstant = plus.android.importClass('com.iflytek.cloud.SpeechConstant');SpeechUtility.createUtility(main,"appid=5af2af41");        var SynthesizerPlayer = plus.android.importClass('com.iflytek.cloud.SpeechSynthesizer');var play = SynthesizerPlayer.createSynthesizer(main, null);play.setParameter(SpeechConstant.VOICE_NAME, "xiaoyan");//设置发音人play.setParameter(SpeechConstant.SPEED, "10");//设置语速  play.setParameter(SpeechConstant.VOLUME, "90");//设置音量,范围0~100  // play.setParameter(SpeechConstant.ENGINE_TYPE, SpeechConstant.TYPE_CLOUD); //设置云端 if(reponse['type'] == 1){play.startSpeaking(reponse['tablename'] + '新的扫码点餐订单,' + reponse['tablename'] + '新的扫码点餐订单',null);}else if(reponse['type'] == 2){play.startSpeaking(reponse['tablename'] + '新的外卖订单' + reponse['tablename'] + '新的外卖订单',null);}else if(reponse['type'] == 3){play.startSpeaking(reponse['tablename'] + '请用餐,' + reponse['tablename'] + '请用餐',null);}}
最后给条很好的消息推送的链接:http://ask.dcloud.net.cn/article/503

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter嵌套深?扩展函数了解一下

背景 嵌套层级深的问题让众多刚接触Flutter的同学感到困扰&#xff0c;它不仅是看起来让人感到不适&#xff0c;还非常影响编码体验。 大佬们会告诉你应该拆分自己的嵌套代码(自定义widget或者抽取build方法&#xff09;来减少嵌套层级。这确实是个行之有效的方法&#xff0c…

VS Code 中的文件添加图标的插件vscode-icons

文章目录1. 效果图2. 用法1. 效果图 2. 用法 一旦你安装了该插件你重启VS Code后会在右下角收到一个该插件的提示&#xff0c;这时你要点击Activate激活icons。 你也可以通过点击以下功能来激活它(VS Code中可能存在很多主题&#xff0c;想用哪个就激活哪个)。 Linux & W…

WebSphere 应用服务器都支持哪些认证

WebSphere 应用服务器支持的认证方案包括基本认证、摘要认证、定制认证、证书认证。 基本认证&#xff1a;使用 HTTP 或 HTTPS 请求来自客户机的用户名和口令。 用普通文本将用于验证的信息发送给服务器验证。所有浏览器都支持基本认证。如果一个用户标识符和口令提供了足够的认…

开发者说:如何使用插件降低上传文件部署服务的复杂度

“ 这里描述我们实际服务部署的时候频繁发生的两个常用场景。 第一个场景&#xff0c;我们“办公网环境”想要在“准生产环境”下部署&#xff0c;需要做如下工作&#xff1a; 打包、将文件上传到堡垒机上、scp将上传好的包裹传输到“准生产环境”的目标机器、ssh 目标机器、r…

打开通往新零售时代的大门,数据中台这把钥匙可行吗?

2016年“新零售”概念提出即被引爆&#xff0c;如今看来依然让人热血沸腾&#xff0c;因为这三个字&#xff0c;极有可能影响未来十年、二十年的商业格局。在新零售概念下&#xff0c;大数据技术可以在任何时间和地点无形地收集和沉淀客户的主要行为数据&#xff0c;直接掌握客…

Vue+mui实现图片的本地缓存

效果&#xff1a; const menu {state: {products: {},GLOBAL_CONFIG:GLOBAL_CONFIG[GLOBAL_CONFIG]},mutations: {get_product: function (state, products) {//商品列表state.products products;for(let i 0; i < state.products.length; i){if(state.products[i][image…

年度回顾 | 2019 年的 Apache Flink

2019 年即将落下帷幕&#xff0c;这一年对于 Apache Flink 来说是非常精彩的一年&#xff0c;里程碑式的一年。随着这一年在邮件列表发送了超过 1 万封邮件&#xff0c;JIRA 中超过 4 千个 tickets&#xff0c;以及 GitHub 上超过 3 千个 PR&#xff0c;Apache Flink 迎来了快速…

VS Code 报错Vetur can‘t find ‘tsconfig.json‘ or ‘jsconfig.json‘的解决方法

文章目录一、原因二、说明三、显式项目四、解决方法&#xff08;3选1&#xff09;4.1. 配置Vetur插件&#xff0c;忽略提示4.2.在项目根目录创建jsconfig.json文件4.3.在项目根目录创建vetur.config.js文件一、原因 Vetur 0.31.0版本新增了一个vetur.config.js的配置文件&…

IDE 插件新版本发布,总有一个功能帮到你——开发部署提速 8 倍

对于开发者而言&#xff0c;提高工作效率大概有 2 种主要方式&#xff0c;第一种方式就是加快自己的工作速度&#xff0c;争取在同一段时间内多码一些代码、多干一些活来实现多产&#xff1b;而聪明的开发者会选择第二种方式&#xff0c;就是通过插件&#xff0c;让一些重复性的…

推特惊爆史诗级漏洞,App 恶意窃取用户隐私,云端安全路向何方?

作者 | 马超来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;近日&#xff0c;全球安全事件频发&#xff0c;先是推特惊爆史诗级漏洞&#xff0c;黑客对推特进行比特币钓鱼骗局&#xff0c;获取了对包括美国前总统奥巴马、钢铁侠埃隆马斯克、和世界首富比尔盖茨推特…

VS Code 直接跳到下一行编辑快捷键

在书写HTML代码的时候&#xff0c;快速编辑下一行快捷键非常好用。 系统快捷键windowsctrl Entermaccommand Enter

读懂这本书,才算读懂阿里大数据

2019年&#xff0c;是阿里巴巴第11个双11。众所周知&#xff0c;阿里的电商在线体系经过多年发展&#xff0c;可以支持峰值超过每秒50几万笔交易。但鲜有人知的是&#xff0c;海量的交易&#xff0c;创造了海量的数据&#xff0c;爆炸性的数据量激增&#xff0c;给狂欢过后的大…

Vue封装预约日期插件和发布到npm上

插件代码 <template><div class"subscribe-time" v-show"setting.display"><div class"subscribe-content"><div class"subscribe-date" v-if"setting.dateBlock true"><div class"subsc…

VS Code Element 提示 VSCode-Element-Helper 插件

文章目录1. 安装插件2. 效果图1. 安装插件 2. 效果图

9张图总结一下阿里云的2019

9月25日云栖大会&#xff0c;阿里云智能总裁张建锋展示了阿里巴巴第一颗自研芯片——含光800&#xff0c;打破了两项世界纪录&#xff0c;性能和能效比均为第一&#xff0c;是全球最强的AI推理芯片。 张建锋说&#xff1a;“在全球芯片领域&#xff0c;阿里巴巴是一个新人&…

坦白讲!做 Java 工程师,挺好!

很多想要入行编程圈的人问到我该学哪一种语言&#xff0c;我都毫不犹豫的说Java。首先我们先看个排行榜&#xff0c;来自权威开发语言排行榜TIOBE的数据&#xff08;截止到2020年4月&#xff09;&#xff0c;可以看到Java语言依然在语言排行榜霸占第一的位置&#xff01;看到这…

达摩院2020十大科技趋势发布:科技浪潮新十年序幕开启

2020年第一个工作日&#xff0c;“达摩院2020十大科技趋势”发布。这是继2019年之后&#xff0c;阿里巴巴达摩院第二次预测年度科技趋势。 回望2019年的科技领域&#xff0c;静水流深之下仍有暗潮涌动。AI芯片崛起、智能城市诞生、5G催生全新应用场景……达摩院去年预测的科技…

Vue封装hbuilder热更新

main.js import AutoUpdateApp from ./common/AutoUpdateApp/AutoUpdateApp //我存放AutoUpdateApp.js的目录 Vue.use(AutoUpdateApp)AutoUpdateApp.js export default {install(Vue,options){Vue.prototype.AutoUpdateApp function () {return {// 获取本地应用资源版本号g…

VS Code Rainbow Fart 小姐姐语音提示插件

文章目录1. 安装插件2. 启用Rainbow Fart3. 效果图1. 安装插件 Rainbow Fart2. 启用Rainbow Fart ctrl shirt p输入Rainbow Fart回车&#xff08;Enter&#xff09; 打开open 3. 效果图

日志服务(SLS)集成 Spark 流计算实战

前言 日志服务作为一站式的日志的采集与分析平台&#xff0c;提供了各种用户场景的日志采集能力&#xff0c;通过日志服务提供的各种与与SDK&#xff0c;采集客户端&#xff08;Logtail&#xff09;&#xff0c;Producer&#xff0c;用户可以非常容易的把各种数据源中的数据采…