如何让Chromecast CAF接收器在发送端断开后保持活跃
解决自定义Cast接收器发送端断开后自动关闭的问题
嘿,我之前也碰到过类似的Cast接收器超时难题,咱们一步步来搞定它!
你用Number.MAX_VALUE设置超时没起作用,大概率是因为Cast SDK对超时值有合理范围限制——这个数值太大了,SDK内部可能直接忽略或者做了溢出处理,根本不会生效。
给你两个关键的修复点:
1. 改用合理的超大超时值
把Number.MAX_VALUE换成一个实际的大数值,比如设置成86400秒(也就是一天),这个数值在SDK的允许范围内,既能满足“保持活跃”的需求,又不会触发SDK的无效值判断。
示例代码:
// 初始化接收器上下文 const castReceiverContext = cast.framework.CastReceiverContext.getInstance(); // 设置超时为1天(86400秒),你也可以根据需求改成一周(604800秒) castReceiverContext.setInactivityTimeout(86400); // 配置接收器选项(如果有自定义需求的话) const receiverOptions = new cast.framework.CastReceiverOptions(); // 这里可以添加你的自定义配置,比如命名空间、样式等 // 启动接收器 castReceiverContext.start(receiverOptions);
2. 确保调用时机正确
一定要在castReceiverContext.start()之前调用setInactivityTimeout,如果调用顺序反了,设置的超时值也不会生效。
另外,建议你检查一下当前使用的Cast Receiver SDK版本,尽量升级到最新稳定版——旧版本可能存在API兼容问题,导致超时设置不生效。
如果还是有问题,你可以监听senderDisconnected事件,在发送端断开时手动重置超时(不过上面的方法基本就能解决问题了):
castReceiverContext.addEventListener(cast.framework.system.EventType.SENDER_DISCONNECTED, () => { // 重新设置超时,确保接收器保持活跃 castReceiverContext.setInactivityTimeout(86400); });
这样调整之后,你的接收器应该就能在发送端断开后一直保持活跃状态了!
内容的提问来源于stack exchange,提问作者user2719094




