javascript - 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。
截图
解决方案
包含 Chromecast 的 Presentation API不再可通过 HTTP 使用。
尝试通过 HTTPS 连接加载您的网络发件人。
最简单的方法是使用 ngrok;
- 安装ngrok
- 运行
ngrok http 3000
(替换3000
为您的本地端口) https
导航到终端显示的转发地址
推荐阅读
- flutter - 如何在 Flutter 中处理 InputDecoration->labelText 中的长文本
- ios - IOS PushNotification 多用户应用
- python - 与内存中的 sqlite3 并行运行 django 测试
- c++ - 将 customobject 作为参数从目标 C 传递给 c++
- android - Android Studio videoview 透明?
- sql - 在 WHERE 谓词解决方法中配置多个子查询
- javascript - 如何在jquery中使用keydown事件而不影响所有键?
- html - 打字稿获取 JSON 对象
- jquery - 如何在日期范围选择器中隐藏第二个日历?
- maven - 无法解析 spring-web-reactive 的依赖项