李勇

1.sdk修复屏幕共享屏幕分辨率高和宽值获取不正确的问题;2.修复第三方消息通道在ios9中无法使用导致加载失败的Bug

此 diff 太大无法显示。
@@ -2,6 +2,7 @@ require('es6-promise').polyfill(); @@ -2,6 +2,7 @@ require('es6-promise').polyfill();
2 require('whatwg-fetch'); 2 require('whatwg-fetch');
3 require('jquery-touchswipe'); 3 require('jquery-touchswipe');
4 require('string.fromcodepoint'); 4 require('string.fromcodepoint');
  5 +//require('messenger');
5 6
6 import Emiter from './Emiter'; 7 import Emiter from './Emiter';
7 import Sass from 'Sass'; 8 import Sass from 'Sass';
@@ -30,7 +31,7 @@ import MediaSharedApe from 'apes/MediaSharedApe'; @@ -30,7 +31,7 @@ import MediaSharedApe from 'apes/MediaSharedApe';
30 import UTF8 from 'utf-8'; 31 import UTF8 from 'utf-8';
31 32
32 let loger = Loger.getLoger('McuClient'); 33 let loger = Loger.getLoger('McuClient');
33 -let _sdkInfo = {"version": "v1.30.7.20170606", "author": "www.3mang.com"}; 34 +let _sdkInfo = {"version": "v1.30.20.20170607", "author": "www.3mang.com"};
34 35
35 //APE 36 //APE
36 let _sass; 37 let _sass;
@@ -205,8 +206,6 @@ export default class MessageEntrance extends Emiter { @@ -205,8 +206,6 @@ export default class MessageEntrance extends Emiter {
205 206
206 this.mediaSharedPlay = this._sendMediaSharedPlay.bind(this); //播放 207 this.mediaSharedPlay = this._sendMediaSharedPlay.bind(this); //播放
207 this.mediaSharedStop = this._sendMediaSharedStop.bind(this);//停止 208 this.mediaSharedStop = this._sendMediaSharedStop.bind(this);//停止
208 - //this.mediaSharedPause=this._sendMediaSharedPause.bind(this);//暂停  
209 - //this.mediaSharedSeek=this._sendMediaSharedSeek.bind(this);//seek  
210 this.mediaSharedUpdate=this._sendMediaSharedUpdate.bind(this); //更新媒体的状态 209 this.mediaSharedUpdate=this._sendMediaSharedUpdate.bind(this); //更新媒体的状态
211 210
212 this.setDeviceInfo = this._setDeviceInfo.bind(this);//设置设备信息(麦克风,摄像头等等.....) 211 this.setDeviceInfo = this._setDeviceInfo.bind(this);//设置设备信息(麦克风,摄像头等等.....)
@@ -823,8 +822,8 @@ export default class MessageEntrance extends Emiter { @@ -823,8 +822,8 @@ export default class MessageEntrance extends Emiter {
823 GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_2); 822 GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_2);
824 GlobalConfig.classJoinSuccess=true; 823 GlobalConfig.classJoinSuccess=true;
825 824
826 - GlobalConfig.screenWidth=window.screen.availWidth;  
827 - GlobalConfig.screenHeight=window.screen.availHeight; 825 + GlobalConfig.screenWidth=window.screen.width;
  826 + GlobalConfig.screenHeight=window.screen.height;
828 827
829 828
830 //返回给客户端初始化成功的数据 829 //返回给客户端初始化成功的数据
@@ -1563,26 +1562,6 @@ export default class MessageEntrance extends Emiter { @@ -1563,26 +1562,6 @@ export default class MessageEntrance extends Emiter {
1563 _mediaShareApe.mediaSharedStop(_param); 1562 _mediaShareApe.mediaSharedStop(_param);
1564 } 1563 }
1565 } 1564 }
1566 - //暂停  
1567 - _sendMediaSharedPause(_param){  
1568 - if (!_mcu.connected) {  
1569 - loger.warn(GlobalConfig.getCurrentStatus());  
1570 - return;  
1571 - }  
1572 - if (_mediaShareApe) {  
1573 - _mediaShareApe.mediaSharedPause(_param);  
1574 - }  
1575 - }  
1576 - //seek  
1577 - _sendMediaSharedSeek(_param){  
1578 - if (!_mcu.connected) {  
1579 - loger.warn(GlobalConfig.getCurrentStatus());  
1580 - return;  
1581 - }  
1582 - if (_mediaShareApe) {  
1583 - _mediaShareApe.mediaSharedSeek(_param);  
1584 - }  
1585 - }  
1586 1565
1587 //媒体共享模块加入频道成功,同步到MCU服务器上的数据 1566 //媒体共享模块加入频道成功,同步到MCU服务器上的数据
1588 mediaShareApeJoinChannelSuccess() { 1567 mediaShareApeJoinChannelSuccess() {
  1 +import Emiter from 'Emiter';
  2 +import Loger from 'Loger';
  3 +let loger = Loger.getLoger('MessengerMoudle');
  4 +class MessengerMoudle {
  5 + // 信使类
  6 + // 创建Messenger实例时指定, 必须指定Messenger的名字, (可选)指定项目名, 以避免Mashup类应用中的冲突
  7 + // !注意: 父子页面中projectName必须保持一致, 否则无法匹配
  8 + constructor(messengerName, projectName){
  9 + this.prefix = "[PROJECT_NAME]";
  10 + this.supportPostMessage = 'postMessage' in window;
  11 + this.targets = {};
  12 + this.name = messengerName;
  13 + this.listenFunc = [];
  14 + this.prefix = projectName || this.prefix;
  15 + this.initListen();
  16 + }
  17 +
  18 + // Target 类, 消息对象
  19 + Target(target, name, prefix) {
  20 + let errMsg = '';
  21 + if (arguments.length < 2) {
  22 + errMsg = 'target error - target and name are both required';
  23 + } else if (typeof target != 'object') {
  24 + errMsg = 'target error - target itself must be window object';
  25 + } else if (typeof name != 'string') {
  26 + errMsg = 'target error - target name must be string type';
  27 + }
  28 + if (errMsg) {
  29 + //throw new Error(errMsg);
  30 + loger.warn(errMsg);
  31 + }
  32 + this.target = target;
  33 + this.name = name;
  34 + this.prefix = prefix;
  35 + }
  36 +
  37 + targetSend(_targetObj,_msg,_supportPostMessage,_prefix,_name){
  38 + loger.log('_supportPostMessage',_supportPostMessage,'_prefix:'+_prefix,'_name:'+_name);
  39 + if (_supportPostMessage) {
  40 + // IE8+ 以及现代浏览器支持
  41 + if(_targetObj&&_targetObj.target){
  42 + _targetObj.target.postMessage(_prefix + '|' + _name + '__Messenger__' + _msg, '*');
  43 + }else{
  44 + loger.warn('第三方消息通道发送消息失败->target->',_targetObj);
  45 + }
  46 + }else {
  47 + // 兼容IE 6/7
  48 + try{
  49 + let targetFunc = window.navigator[_prefix + _name];
  50 + if (typeof targetFunc == 'function') {
  51 + targetFunc(_prefix + _msg, window);
  52 + } else {
  53 + //throw new Error("target callback function is not defined");
  54 + loger.warn('第三方消息通道发送消息失败->target callback function is not defined');
  55 + }
  56 + }catch (err){
  57 + loger.warn('第三方消息通道发送消息失败->',err.message);
  58 + }
  59 + }
  60 + }
  61 + // 添加一个消息对象
  62 + addTarget(target, name) {
  63 + let errMsg = '';
  64 + if (arguments.length < 2) {
  65 + errMsg = 'target error - target and name are both required';
  66 + } else if (typeof target != 'object') {
  67 + errMsg = 'target error - target itself must be window object';
  68 + } else if (typeof name != 'string') {
  69 + errMsg = 'target error - target name must be string type';
  70 + }
  71 + if (errMsg) {
  72 + loger.warn(errMsg);
  73 + }
  74 +
  75 + //let targetObj = new Target(target, name, this.prefix);
  76 + this.supportPostMessage = 'postMessage' in window;
  77 + loger.log('addTarget->supportPostMessage',this.supportPostMessage);
  78 + let targetObj = new Object();
  79 + targetObj.target = target;
  80 + targetObj.name = name;
  81 + targetObj.targetSend=this.targetSend;
  82 + targetObj.prefix = this.prefix;
  83 + this.targets[name] = targetObj;
  84 + };
  85 +
  86 + // 初始化消息监听
  87 + initListen () {
  88 + let self = this;
  89 + let generalCallback = function (_msg) {
  90 + let msgData;
  91 + if (typeof _msg == 'object' && _msg.data) {
  92 + msgData = _msg.data;
  93 + }
  94 +
  95 + let msgPairs = msgData.split('__Messenger__');
  96 + let msg1 = msgPairs[1];
  97 + let pairs = msgPairs[0].split('|');
  98 + let prefix = pairs[0];
  99 + let name = pairs[1];
  100 +
  101 + for (let i = 0; i < self.listenFunc.length; i++) {
  102 + if (prefix + name === self.prefix + self.name) {
  103 + self.listenFunc[i](msg1);
  104 + }
  105 + }
  106 + };
  107 +
  108 + if (this.supportPostMessage) {
  109 + if ('addEventListener' in document) {
  110 + window.addEventListener('message', generalCallback, false);
  111 + } else if ('attachEvent' in document) {
  112 + window.attachEvent('onmessage', generalCallback);
  113 + }
  114 + } else {
  115 + // 兼容IE 6/7
  116 + window.navigator[this.prefix + this.name] = generalCallback;
  117 + }
  118 + };
  119 +
  120 + // 监听消息
  121 + listen (callback) {
  122 + let i = 0;
  123 + let len = this.listenFunc.length;
  124 + let cbIsExist = false;
  125 + for (; i < len; i++) {
  126 + if (this.listenFunc[i] == callback) {
  127 + cbIsExist = true;
  128 + break;
  129 + }
  130 + }
  131 + if (!cbIsExist) {
  132 + this.listenFunc.push(callback);
  133 + }
  134 + };
  135 + // 注销监听
  136 + clear () {
  137 + this.listenFunc = [];
  138 + };
  139 + // 广播消息
  140 + send (msg) {
  141 + let targets = this.targets;
  142 + let target;
  143 + for (target in targets) {
  144 + if (targets.hasOwnProperty(target)) {
  145 + let targetObj= targets[target];
  146 + //console.log('target->', targetObj);
  147 + //targets[target].send(msg);
  148 + if(targetObj){
  149 + targetObj.targetSend(targetObj,msg,this.supportPostMessage,targetObj.prefix,targetObj.name);
  150 + }
  151 + }
  152 + }
  153 + };
  154 +}
  155 +
  156 +export default MessengerMoudle;
@@ -25,30 +25,30 @@ class ShareApe extends Emiter { @@ -25,30 +25,30 @@ class ShareApe extends Emiter {
25 } 25 }
26 init(){ 26 init(){
27 27
28 - // // 版本信息  
29 - // ss.on(ss.VERSION_INFO_CHANGE, (d) => {  
30 - // console.log('VERSION_INFO_CHANGE->', d);  
31 - // })  
32 -  
33 - // // 本地摄像头设备  
34 - // ss.on(ss.CAMERA_INFO_CHANGE, (d) => {  
35 - // console.log('CAMERA_INFO_CHANGE->', d);  
36 - // })  
37 -  
38 - // // 本地麦克风设备  
39 - // ss.on(ss.MIC_INFO_CHANGE, (d) => {  
40 - // console.log('MIC_INFO_CHANGE->', d);  
41 - // })  
42 -  
43 - // // 本地RTMP服务端口  
44 - // ss.on(ss.RTMP_PORT_CHANGE, (d) => {  
45 - // console.log('RTMP_PORT_CHANGE->', d);  
46 - // })  
47 -  
48 - // // 麦克风音量  
49 - // ss.on(ss.MIC_VOL_CHANGE, (d) => {  
50 - // console.log('MIC_VOL_CHANGE->', d);  
51 - // }) 28 + // 版本信息
  29 + this.shareScreen.on(ShareScreen.VERSION_INFO_CHANGE, (d) => {
  30 + console.log('VERSION_INFO_CHANGE->', d);
  31 + })
  32 +
  33 + // 本地摄像头设备
  34 + this.shareScreen.on(ShareScreen.CAMERA_INFO_CHANGE, (d) => {
  35 + console.log('CAMERA_INFO_CHANGE->', d);
  36 + })
  37 +
  38 + // 本地麦克风设备
  39 + this.shareScreen.on(ShareScreen.MIC_INFO_CHANGE, (d) => {
  40 + console.log('MIC_INFO_CHANGE->', d);
  41 + })
  42 +
  43 + // 本地RTMP服务端口
  44 + this.shareScreen.on(ShareScreen.RTMP_PORT_CHANGE, (d) => {
  45 + console.log('RTMP_PORT_CHANGE->', d);
  46 + })
  47 +
  48 + // 麦克风音量
  49 + this.shareScreen.on(ShareScreen.MIC_VOL_CHANGE, (d) => {
  50 + console.log('MIC_VOL_CHANGE->', d);
  51 + })
52 52
53 // 媒体信息 53 // 媒体信息
54 this.shareScreen.on(ShareScreen.MOVIE_INFO_CHANGE, (d) => { 54 this.shareScreen.on(ShareScreen.MOVIE_INFO_CHANGE, (d) => {
1 -require('messenger');  
2 import Emiter from 'Emiter'; 1 import Emiter from 'Emiter';
3 -import McuObj from 'mcu';  
4 import Loger from 'Loger'; 2 import Loger from 'Loger';
  3 +import MessengerMoudle from './MessengerMoudle';
  4 +
5 let loger = Loger.getLoger('ThirdMessage'); 5 let loger = Loger.getLoger('ThirdMessage');
6 class ThirdMessage extends Emiter{ 6 class ThirdMessage extends Emiter{
7 constructor(){ 7 constructor(){
8 super(); 8 super();
9 // 初始化消息通道 9 // 初始化消息通道
10 - this.messenger = new Messenger(ThirdMessage.IFRAME_MESSAGE_ID, ThirdMessage.PARENT_MESAGE_ID);  
11 - this.messenger.addTarget(window.parent, ThirdMessage.PARENT);  
12 - this.messenger.listen(this._reciveParentMessage.bind(this))  
13 - loger.log('ThirdMessage'); 10 + try{
  11 + //this.messenger = new Messenger(ThirdMessage.IFRAME_MESSAGE_ID, ThirdMessage.PARENT_MESAGE_ID);
  12 + this.messenger = new MessengerMoudle(ThirdMessage.IFRAME_MESSAGE_ID, ThirdMessage.PARENT_MESAGE_ID);
  13 + this.messenger.addTarget(window.parent, ThirdMessage.PARENT);
  14 + this.messenger.listen(this._reciveParentMessage.bind(this))
  15 + loger.log('ThirdMessage');
  16 + }catch (err){
  17 + console.warn('第三方消息通道创建失败');
  18 + }
  19 +
14 } 20 }
15 21
16 //发送消息给父级页面 22 //发送消息给父级页面
@@ -430,7 +430,6 @@ class VideoApe extends Ape { @@ -430,7 +430,6 @@ class VideoApe extends Ape {
430 430
431 431
432 tableUpdateHandler(owner, itemIdx, itemData,seek) { 432 tableUpdateHandler(owner, itemIdx, itemData,seek) {
433 - // debugger;  
434 let unpackChannelInfo = this.unPackPdu(owner, itemIdx, itemData); 433 let unpackChannelInfo = this.unPackPdu(owner, itemIdx, itemData);
435 loger.log("tableUpdateHandler->channel",itemIdx,'mediaType',unpackChannelInfo.mediaType,'status->',unpackChannelInfo.status,"seek->",seek); 434 loger.log("tableUpdateHandler->channel",itemIdx,'mediaType',unpackChannelInfo.mediaType,'status->',unpackChannelInfo.status,"seek->",seek);
436 435
@@ -76,7 +76,6 @@ window.Messenger = (function () { @@ -76,7 +76,6 @@ window.Messenger = (function () {
76 Messenger.prototype.initListen = function () { 76 Messenger.prototype.initListen = function () {
77 var self = this; 77 var self = this;
78 var generalCallback = function (msg) { 78 var generalCallback = function (msg) {
79 - debugger;  
80 if (typeof msg == 'object' && msg.data) { 79 if (typeof msg == 'object' && msg.data) {
81 msg = msg.data; 80 msg = msg.data;
82 } 81 }