如何使用 Chromecast 从自定义接收方向发送方应用发送消息?

Posted

技术标签:

【中文标题】如何使用 Chromecast 从自定义接收方向发送方应用发送消息?【英文标题】:How do I send a message from custom receiver to sender app with Chromecast? 【发布时间】:2014-09-26 19:17:43 【问题描述】:

我正在尝试通过 github 项目“CastHelloText-chrome”工作: https://github.com/googlecast/CastHelloText-chrome

我已经浏览了示例和官方文档。目前我正在尝试将一个简单的字符串传递给发件人。

这是我的功能:

    function DispatchToSender() 
        debugger;
        try 
            if (window.messageBus == null) 
                window.messageBus =
             window.castReceiverManager.getCastMessageBus(
                 'urn:x-cast:com.radiodile.mobilex');
            
            //I now pass in "theSenderID" based on Ali's comment
            window.messageBus.send(theSenderID, "This gun's for hire");
         catch (e) 
            console.log("Dispath to sender exception: " + e);
        


    

这无济于事,而且这个用例的文档非常稀少(至少对我过热的大脑而言)

有人可以在正确的方向上轻推我吗?

谢谢!

PS - 我的 DispatchToSender() 函数确实会执行以下操作:

// 如果指定的端口 id 在此上下文中,则返回 true。这是由 功能有端口(端口ID) 在端口中返回 portId; ; // C++ 避免为所有上下文创建 javascript 消息 // 不关心特定的消息。

以上内容似乎是我从自定义接收器中引用的 JS SDK 的一部分。它永远不会过去,所以我确定我做错了什么,但没有像 moi 这样的假人的例子:))

更新 Ali Naddaf 的评论 - 仍然没有运气

先生,我已阅读您的评论并尝试了以下操作。

receiver.html

从receiver.html 中的初始化开始 - 我将页面级变量“theSenderID”设置为 event.senderId 值

// CastMessageBus 消息事件的处理程序

    window.messageBus.onMessage = function (event) 
        console.log('Message [' + event.senderId + ']: ' + event.data);
        theSenderID = event.senderId; // CAPTURE THE SENDER ID FOR RE-USE IN DISPATCH EVENT FN()
        // display the message from the sender
        displayText(event.data);
        // inform all senders on the CastMessageBus of the incoming message event
        // sender message listener will be invoked
        window.messageBus.send(event.senderId, event.data);
    

然后我尝试在我编写的 DispatchEvent() 函数中发送这样的消息:

window.messageBus.send(theSenderID, "这把枪是出租的");

在上面我确实有一个 theSenderID 的值,它是:“6:client-54624”

当我调用 window.messageBus.send 时,我没有看到异常,但在我的发件人应用程序中我从未收到消息:

chromehellotext.html

/**
     * utility function to log messages from the receiver
     * @param string namespace The namespace of the message
     * @param string message A message string
     */
    function receiverMessage(namespace, message) 
        appendMessage("receiverMessage: " + namespace + ", " + message);
    ;

请注意,在阅读您的评论之前,我使用的是我创建的自定义命名空间作为 senderId,因为发送者的“receiverMessage()”函数中的第一个参数。

receiverMessage() 确实有效,并且正在拦截 chromehellotext 示例的接收器的 DisplayText() 函数中的 setApplicationState(text) 值。

我完全糊涂了。

我没有尝试过广播消息,但直接与发件人沟通似乎更好?

谢谢!!

【问题讨论】:

【参考方案1】:

发送方法是:send(senderId, message),所以我不清楚您传递的发件人 ID 是什么;这应该是接收方 SDK 在加入/启动会话时分配给该发送方的唯一发送方 ID。如果您不关心一个发件人与所有连接的发件人,请使用broadcast(message)

【讨论】:

嗨 Ali,请参阅我添加的 更新。我确实尝试遵循您评论的要点,但到目前为止我还没有成功。谢谢! 不确定为什么它在几分钟前不起作用。我回来更新帖子并让发送者和接收者都处于调试模式。经过一番谷歌搜索并一无所获,我只是再次触发了事件序列,这次 .send() 方法按照您的指示与 senderid 一起工作。非常感谢!

以上是关于如何使用 Chromecast 从自定义接收方向发送方应用发送消息?的主要内容,如果未能解决你的问题,请参考以下文章

Chromecast 自定义接收器播放器卡在 IDLE 状态并且没有响应

如何从 Chromecast 自定义接收器获取型号名称和设备版本信息?

如何将我的自定义接收器 chromecast(CAF)的媒体播放器更改为另一个播放器

使用 chrome 扩展通过 chromecast 插件发送视频:空接收者列表

启动自定义 chromecast 接收器有时会超时

Android - 是不是可以从自定义接收器应用程序更新 RemoteMediaClient 状态?