【发布时间】:2023-03-07 12:47:01
【问题描述】:
Chromecast 会话状态在 Chrome 移动 ios 上返回未定义。会话存在并定义了其他属性,例如 sessionID。在桌面上,会话状态按预期返回“已连接”、“已断开”或“已停止”。这是 Chrome ios 的错误吗?是否有另一种方法来检测会话状态?
【问题讨论】:
标签: javascript ios google-chrome mobile google-cast
Chromecast 会话状态在 Chrome 移动 ios 上返回未定义。会话存在并定义了其他属性,例如 sessionID。在桌面上,会话状态按预期返回“已连接”、“已断开”或“已停止”。这是 Chrome ios 的错误吗?是否有另一种方法来检测会话状态?
【问题讨论】:
标签: javascript ios google-chrome mobile google-cast
我找到了一个似乎足以满足我需求的解决方法。
我获取 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;
...
}
【讨论】:
Cast SDK 不支持 iOS 和 Android 上的 Chrome。
【讨论】: