Chromecast会话状态在Chrome移动ios上返回未定义。该会话存在并且定义了其他属性,例如sessionID。在桌面上,会话状态按预期返回“已连接”,“已断开连接”或“已停止”。这是Chrome ios的错误吗?还有另一种检测会话状态的方法吗?
// create var to store 'fake' status
var fakeStatus = 'none';
// returns 'none' if no session exists
// else returns session.status
// else if session.status is undefined && media.playerState exists return forceStatus
castplayer.getSessionStatus = function(){
return session?(session.status===undefined&&this.currentMedia.playerState?fakeStatus:session.status):'none'
};
在chrome.cast.initialize上创建会话时更新falseStatus:
var apiConfig = new chrome.cast.ApiConfig(sessionRequest, sessionListener, receiverListener);
chrome.cast.initialize(apiConfig, onInitSuccess, onInitError);
function sessionListener(e){
session = e;
fakeStatus = 'connected';
...
};
使用会话的更新监听器更新fakeStatus:
chrome.cast.requestSession(onRequestSuccess, onRequestError);
function onRequestSuccess(e) {
session = e;
session.addUpdateListener(updateListener);
...
};
function updateListener(isAlive) {
if(isAlive) fakeStatus = 'connected'; else fakeStatus = 'disconnected';
...
};
确保将fakeSatus设置为“ none”,并在停止错误时使会话无效:
session.stop(onStopAppSuccess, onStopAppError);
function onStopAppError(e) {
fakeStatus = 'none';
session = null;
...
}