【问题标题】:window.chrome.cast not available on Android Chrome browserwindow.chrome.cast 在 Android Chrome 浏览器上不可用
【发布时间】:2019-10-27 08:22:13
【问题描述】:

背景

为了从我的视频播放器初始化 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 的存在):

Android Chrome 上的 window.chrome 对象:

【问题讨论】:

  • 你有没有想过这个问题?我自己也遇到了同样的问题。

标签: javascript android google-chrome chromecast


【解决方案1】:

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

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

最简单的方法是使用 ngrok;

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

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2013-01-04
    相关资源
    最近更新 更多