Chromecast API 未调用 sessionListener() 回调
Posted
技术标签:
【中文标题】Chromecast API 未调用 sessionListener() 回调【英文标题】:Chromecast API not calling sessionListener() call back 【发布时间】:2016-06-30 17:38:59 【问题描述】:我正在构建 Chromecast Sender 应用程序,并且可以成功投射会话。但是我只能施放一次。当我断开我的 sessionListener 回调永远不会触发,这是有问题的,因为这是我设置我的 sessionUpdate
监听器的地方。否则,无法判断会话何时结束以重置会话并进行任何清理,这意味着我无法重铸任何内容,因为我无法知道会话是否有效。
据我所知,问题出在cast_sender.js
中,它被方便地混淆了,所以我可能是错的。
我正在按如下方式设置我的 ApiConfig:
apiConfig = new _chrome.cast.ApiConfig(
sessionRequest,
_sessionListener.bind(this),
_receiverListener.bind(this));
_receiverListener
按预期触发,我已将cast_sender.js
调试到可以看到我的函数_sessionListener
被传入并在cast_sender.js
的第837 行正确设置的地步,这里:
835 chrome.cast.dd = function(a, c, d, e, f)
836 this.sessionRequest = a;
837 this.sessionListener = c;
838 this.receiverListener = d;
839 this.autoJoinPolicy = e || chrome.cast.Fb.TAB_AND_ORIGIN_SCOPED;
840 this.defaultActionPolicy = f || chrome.cast.Jb.CREATE_SESSION;
841 this.customDialLaunchCallback = null;
842 ;
该函数似乎是在第 #2441 行调用的,此处:
2440 b.Wf = function(a)
2441 this.B && this.B.sessionListener(a.message);
2442 ;
我在那里设置了一个断点,它永远不会被调用。在这一点上,我陷入了僵局,有什么想法吗?
【问题讨论】:
你能在也使用 SessionListener 的 CastVideos-chrome-material (github.com/googlecast/CastVideos-chrome-material) 中重现这个吗? 我实际上认为我已经解决了这个问题。我根据 github 中的 CastHelloText-chrome 示例设置了我的发件人,这似乎错误地设置了会话。我将在今天晚些时候提交我的修复请求。 @AliNaddaf github.com/googlecast/CastHelloText-chrome/pull/14 【参考方案1】:我在传递给我在此处复制/粘贴的示例代码https://github.com/googlecast/CastHelloText-chrome/blob/master/chromehellotext.html#L162 的cast.requestSession()
函数的回调中找到了问题的根源https://github.com/googlecast/CastHelloText-chrome/blob/master/chromehellotext.html#L162
我已经提交了一个修复请求以解决https://github.com/googlecast/CastHelloText-chrome/pull/14 此处的问题,但我怀疑它会被拉进来,因为看起来他们的 PR 排在队列中已经好几年没有解决了。
【讨论】:
以上是关于Chromecast API 未调用 sessionListener() 回调的主要内容,如果未能解决你的问题,请参考以下文章
Chromecast 应用程序未在 Chromecast 的应用程序页面中列出
在某些 Android 设备上未发现 Chromecast 设备