javascript - window.chrome.cast 在 Android Chrome 浏览器上不可用

标签 javascript android google-chrome chromecast

背景

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

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

代码

在初始化 Chromecast session 之前,我在检测 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 的存在): enter image description here

Android Chrome 上的 window.chrome 对象: enter image description here

最佳答案

包含 Chromecast 的 Presentation API isn't available over HTTP anymore .

尝试通过 HTTPS 连接加载您的网络发送器。

最简单的方法是使用 ngrok;

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

关于javascript - window.chrome.cast 在 Android Chrome 浏览器上不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56568652/

相关文章:

android - Android将时间格式转换成毫秒

macos - `open -a Chrome` 返回 `Unable to find application named Chrome`

c# - 像谷歌一样自动完成无法获取单选按钮事件的数据

java - Android 开发...应用程序结构新手

javascript - :Active style appears as being applied to random divs on tap in Mobile Safari

java - android中的正则表达式用于不带空格的密码

javascript - 新选项卡中的 Base64 PDF 在刷新前显示空白页

google-chrome - 无法使用 wamp 和 Chrome 访问 localhost

javascript - 页面左侧和右侧的 Bootstrap 附加

javascript - 只有可见的 Div 表单元素才会被提交