首页 > 解决方案 > window.chrome.cast 在 Android Chrome 浏览器上不可用

问题描述

背景

为了从我的视频播放器初始化 Chromecast 会话,我需要在window.chrome.cast. 这在桌面 Chrome 上可以正常工作,但是 Android Chrome 的window.chrome对象不包含必需的cast字段。

我正在使用运行 Android 9 的 Google Pixel。非常感谢您的建议!

编码

在初始化 Chromecast 会话之前,我在窗口中添加了一个侦听器,用于检测 Google Chromecast API 是否可用:

window.__onGCastApiAvailable = (isAvailable) => {
    if (isAvailable) {
        this.initializeCastApi();
    }
};

在 Android Chrome 上,isAvailable不会变为 true,因此永远不会初始化 API。如果我删除条件并仅运行initializeCastApi(),则以下行是第一个在该方法中运行的行:

const sessionRequest = new chrome.cast.SessionRequest(/* App ID */);

在 Android 上,这会导致以下错误,因为window.chrome.cast不存在:

Uncaught TypeError: Cannot read property 'SessionRequest' of undefined

期望与现实

我希望 Android Chrome 上的 Chromecast 行为能够像在桌面 Chrome 上一样运行,因为 Chromecast API 在两者上都可用。

但是window.chrome对象不一样,并且由于 Android 的对象不包括cast,我无法在该浏览器上启动 Chromecast。

截图

桌面 Chrome 上的window.chrome对象(注意 的存在cast): 在此处输入图像描述

window.chromeAndroid Chrome 上 的对象:在此处输入图像描述

标签: javascriptandroidgoogle-chromechromecast

解决方案


包含 Chromecast 的 Presentation API不再可通过 HTTP 使用

尝试通过 HTTPS 连接加载您的网络发件人。

最简单的方法是使用 ngrok;

  1. 安装ngrok
  2. 运行ngrok http 3000(替换3000为您的本地端口)
  3. https导航到终端显示的转发地址

推荐阅读