李勇

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

此 diff 太大无法显示。
... ... @@ -2,6 +2,7 @@ require('es6-promise').polyfill();
require('whatwg-fetch');
require('jquery-touchswipe');
require('string.fromcodepoint');
//require('messenger');
import Emiter from './Emiter';
import Sass from 'Sass';
... ... @@ -30,7 +31,7 @@ import MediaSharedApe from 'apes/MediaSharedApe';
import UTF8 from 'utf-8';
let loger = Loger.getLoger('McuClient');
let _sdkInfo = {"version": "v1.30.7.20170606", "author": "www.3mang.com"};
let _sdkInfo = {"version": "v1.30.20.20170607", "author": "www.3mang.com"};
//APE
let _sass;
... ... @@ -205,8 +206,6 @@ export default class MessageEntrance extends Emiter {
this.mediaSharedPlay = this._sendMediaSharedPlay.bind(this); //播放
this.mediaSharedStop = this._sendMediaSharedStop.bind(this);//停止
//this.mediaSharedPause=this._sendMediaSharedPause.bind(this);//暂停
//this.mediaSharedSeek=this._sendMediaSharedSeek.bind(this);//seek
this.mediaSharedUpdate=this._sendMediaSharedUpdate.bind(this); //更新媒体的状态
this.setDeviceInfo = this._setDeviceInfo.bind(this);//设置设备信息(麦克风,摄像头等等.....)
... ... @@ -823,8 +822,8 @@ export default class MessageEntrance extends Emiter {
GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_2);
GlobalConfig.classJoinSuccess=true;
GlobalConfig.screenWidth=window.screen.availWidth;
GlobalConfig.screenHeight=window.screen.availHeight;
GlobalConfig.screenWidth=window.screen.width;
GlobalConfig.screenHeight=window.screen.height;
//返回给客户端初始化成功的数据
... ... @@ -1563,26 +1562,6 @@ export default class MessageEntrance extends Emiter {
_mediaShareApe.mediaSharedStop(_param);
}
}
//暂停
_sendMediaSharedPause(_param){
if (!_mcu.connected) {
loger.warn(GlobalConfig.getCurrentStatus());
return;
}
if (_mediaShareApe) {
_mediaShareApe.mediaSharedPause(_param);
}
}
//seek
_sendMediaSharedSeek(_param){
if (!_mcu.connected) {
loger.warn(GlobalConfig.getCurrentStatus());
return;
}
if (_mediaShareApe) {
_mediaShareApe.mediaSharedSeek(_param);
}
}
//媒体共享模块加入频道成功,同步到MCU服务器上的数据
mediaShareApeJoinChannelSuccess() {
... ...
import Emiter from 'Emiter';
import Loger from 'Loger';
let loger = Loger.getLoger('MessengerMoudle');
class MessengerMoudle {
// 信使类
// 创建Messenger实例时指定, 必须指定Messenger的名字, (可选)指定项目名, 以避免Mashup类应用中的冲突
// !注意: 父子页面中projectName必须保持一致, 否则无法匹配
constructor(messengerName, projectName){
this.prefix = "[PROJECT_NAME]";
this.supportPostMessage = 'postMessage' in window;
this.targets = {};
this.name = messengerName;
this.listenFunc = [];
this.prefix = projectName || this.prefix;
this.initListen();
}
// Target 类, 消息对象
Target(target, name, prefix) {
let errMsg = '';
if (arguments.length < 2) {
errMsg = 'target error - target and name are both required';
} else if (typeof target != 'object') {
errMsg = 'target error - target itself must be window object';
} else if (typeof name != 'string') {
errMsg = 'target error - target name must be string type';
}
if (errMsg) {
//throw new Error(errMsg);
loger.warn(errMsg);
}
this.target = target;
this.name = name;
this.prefix = prefix;
}
targetSend(_targetObj,_msg,_supportPostMessage,_prefix,_name){
loger.log('_supportPostMessage',_supportPostMessage,'_prefix:'+_prefix,'_name:'+_name);
if (_supportPostMessage) {
// IE8+ 以及现代浏览器支持
if(_targetObj&&_targetObj.target){
_targetObj.target.postMessage(_prefix + '|' + _name + '__Messenger__' + _msg, '*');
}else{
loger.warn('第三方消息通道发送消息失败->target->',_targetObj);
}
}else {
// 兼容IE 6/7
try{
let targetFunc = window.navigator[_prefix + _name];
if (typeof targetFunc == 'function') {
targetFunc(_prefix + _msg, window);
} else {
//throw new Error("target callback function is not defined");
loger.warn('第三方消息通道发送消息失败->target callback function is not defined');
}
}catch (err){
loger.warn('第三方消息通道发送消息失败->',err.message);
}
}
}
// 添加一个消息对象
addTarget(target, name) {
let errMsg = '';
if (arguments.length < 2) {
errMsg = 'target error - target and name are both required';
} else if (typeof target != 'object') {
errMsg = 'target error - target itself must be window object';
} else if (typeof name != 'string') {
errMsg = 'target error - target name must be string type';
}
if (errMsg) {
loger.warn(errMsg);
}
//let targetObj = new Target(target, name, this.prefix);
this.supportPostMessage = 'postMessage' in window;
loger.log('addTarget->supportPostMessage',this.supportPostMessage);
let targetObj = new Object();
targetObj.target = target;
targetObj.name = name;
targetObj.targetSend=this.targetSend;
targetObj.prefix = this.prefix;
this.targets[name] = targetObj;
};
// 初始化消息监听
initListen () {
let self = this;
let generalCallback = function (_msg) {
let msgData;
if (typeof _msg == 'object' && _msg.data) {
msgData = _msg.data;
}
let msgPairs = msgData.split('__Messenger__');
let msg1 = msgPairs[1];
let pairs = msgPairs[0].split('|');
let prefix = pairs[0];
let name = pairs[1];
for (let i = 0; i < self.listenFunc.length; i++) {
if (prefix + name === self.prefix + self.name) {
self.listenFunc[i](msg1);
}
}
};
if (this.supportPostMessage) {
if ('addEventListener' in document) {
window.addEventListener('message', generalCallback, false);
} else if ('attachEvent' in document) {
window.attachEvent('onmessage', generalCallback);
}
} else {
// 兼容IE 6/7
window.navigator[this.prefix + this.name] = generalCallback;
}
};
// 监听消息
listen (callback) {
let i = 0;
let len = this.listenFunc.length;
let cbIsExist = false;
for (; i < len; i++) {
if (this.listenFunc[i] == callback) {
cbIsExist = true;
break;
}
}
if (!cbIsExist) {
this.listenFunc.push(callback);
}
};
// 注销监听
clear () {
this.listenFunc = [];
};
// 广播消息
send (msg) {
let targets = this.targets;
let target;
for (target in targets) {
if (targets.hasOwnProperty(target)) {
let targetObj= targets[target];
//console.log('target->', targetObj);
//targets[target].send(msg);
if(targetObj){
targetObj.targetSend(targetObj,msg,this.supportPostMessage,targetObj.prefix,targetObj.name);
}
}
}
};
}
export default MessengerMoudle;
\ No newline at end of file
... ...
... ... @@ -25,30 +25,30 @@ class ShareApe extends Emiter {
}
init(){
// // 版本信息
// ss.on(ss.VERSION_INFO_CHANGE, (d) => {
// console.log('VERSION_INFO_CHANGE->', d);
// })
// // 本地摄像头设备
// ss.on(ss.CAMERA_INFO_CHANGE, (d) => {
// console.log('CAMERA_INFO_CHANGE->', d);
// })
// // 本地麦克风设备
// ss.on(ss.MIC_INFO_CHANGE, (d) => {
// console.log('MIC_INFO_CHANGE->', d);
// })
// // 本地RTMP服务端口
// ss.on(ss.RTMP_PORT_CHANGE, (d) => {
// console.log('RTMP_PORT_CHANGE->', d);
// })
// // 麦克风音量
// ss.on(ss.MIC_VOL_CHANGE, (d) => {
// console.log('MIC_VOL_CHANGE->', d);
// })
// 版本信息
this.shareScreen.on(ShareScreen.VERSION_INFO_CHANGE, (d) => {
console.log('VERSION_INFO_CHANGE->', d);
})
// 本地摄像头设备
this.shareScreen.on(ShareScreen.CAMERA_INFO_CHANGE, (d) => {
console.log('CAMERA_INFO_CHANGE->', d);
})
// 本地麦克风设备
this.shareScreen.on(ShareScreen.MIC_INFO_CHANGE, (d) => {
console.log('MIC_INFO_CHANGE->', d);
})
// 本地RTMP服务端口
this.shareScreen.on(ShareScreen.RTMP_PORT_CHANGE, (d) => {
console.log('RTMP_PORT_CHANGE->', d);
})
// 麦克风音量
this.shareScreen.on(ShareScreen.MIC_VOL_CHANGE, (d) => {
console.log('MIC_VOL_CHANGE->', d);
})
// 媒体信息
this.shareScreen.on(ShareScreen.MOVIE_INFO_CHANGE, (d) => {
... ...
require('messenger');
import Emiter from 'Emiter';
import McuObj from 'mcu';
import Loger from 'Loger';
import MessengerMoudle from './MessengerMoudle';
let loger = Loger.getLoger('ThirdMessage');
class ThirdMessage extends Emiter{
constructor(){
super();
// 初始化消息通道
this.messenger = new Messenger(ThirdMessage.IFRAME_MESSAGE_ID, ThirdMessage.PARENT_MESAGE_ID);
this.messenger.addTarget(window.parent, ThirdMessage.PARENT);
this.messenger.listen(this._reciveParentMessage.bind(this))
loger.log('ThirdMessage');
try{
//this.messenger = new Messenger(ThirdMessage.IFRAME_MESSAGE_ID, ThirdMessage.PARENT_MESAGE_ID);
this.messenger = new MessengerMoudle(ThirdMessage.IFRAME_MESSAGE_ID, ThirdMessage.PARENT_MESAGE_ID);
this.messenger.addTarget(window.parent, ThirdMessage.PARENT);
this.messenger.listen(this._reciveParentMessage.bind(this))
loger.log('ThirdMessage');
}catch (err){
console.warn('第三方消息通道创建失败');
}
}
//发送消息给父级页面
... ...
... ... @@ -430,7 +430,6 @@ class VideoApe extends Ape {
tableUpdateHandler(owner, itemIdx, itemData,seek) {
// debugger;
let unpackChannelInfo = this.unPackPdu(owner, itemIdx, itemData);
loger.log("tableUpdateHandler->channel",itemIdx,'mediaType',unpackChannelInfo.mediaType,'status->',unpackChannelInfo.status,"seek->",seek);
... ...
... ... @@ -76,7 +76,6 @@ window.Messenger = (function () {
Messenger.prototype.initListen = function () {
var self = this;
var generalCallback = function (msg) {
debugger;
if (typeof msg == 'object' && msg.data) {
msg = msg.data;
}
... ...