Chrome投射会话状态 returns 在 Chrome 移动设备 iOS 上未定义

Chromecast session status returns undefined on Chrome mobile iOS

Chrome投射会话状态 returns 在 Chrome 移动设备 ios 上未定义。会话存在并定义了其他属性,如 sessionID。在桌面上,会话状态 returns "connected"、"disconnected" 或 "stopped" 符合预期。这是 Chrome ios 的错误吗?还有另一种检测会话状态的方法吗?

Cast SDK 不支持 iOS 和 Android 上的

Chrome。

我找到了一个似乎足以满足我的需要的解决方法。

我获取 session.status 的设置:

// 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 上创建会话时更新 fakeStatus:

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;
    ...
}