2

很高兴终于有时间尝试在我的 chromecast 上进行开发,但唉……似乎甚至无法开始。

我填写了白名单请求,收到了周五确认的电子邮件(正好赶上周末!),然后我开始查看样本,并根据我发现的一些样本让 hello world 正常工作。

  1. 配置 chrome cast 以通过 Mac chromecast 应用程序将序列发送到 google
  2. 将开发人员菜单中的网址列入白名单
  3. 验证接收方代码实际上与注册说明的 URL 相同(从确认电子邮件中粘贴副本并且有效)。

发生的情况是我从我的服务器或本地主机打开我的发件人 HTML,但我似乎无法显示 chromecast(是的,我在同一个网络上)。

我在代码中添加了日志以验证是否收到了事件消息并且没有收到,所以我猜这是扩展无法验证应用程序 ID 的问题。

有我可以查看的扩展日志吗?

这是发件人代码:

    <!DOCTYPE html>
<html data-cast-api-enabled="true">
<head>
<title>Hello sender!</title>
</head>
<body>
    <div class="receiver-div">
                <h3>Choose A Receiver</h3>
                <ul class="receiver-list">
                    <li>Looking for receivers...</li>
                </ul>
            </div>
    <button class="kill" disabled>Kill the Connection</button>
</body>
<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>

<script>
        var cast_api,
            cv_activity,
            receiverList,
            $killSwitch = $('.kill');
            console.log("initializing script");

        window.addEventListener('message', function(event) {
            console.log('Message received of type'+event.data.event);
            if (event.source === window && event.data &&
                    event.data.source === 'CastApi' &&
                    event.data.event === 'Hello') {
                initializeApi();
            }
        });

        initializeApi = function() {
                console.log('Initialize API called');
            if (!cast_api) {
                console.log("no cast api yet")
                cast_api = new cast.Api();
                cast_api.addReceiverListener('myidstring here', onReceiverList);
            }
        };

        onReceiverList = function(list) {
            console.log('on receiverlist called');
            if (list.length > 0) {
                receiverList = list;
                $('.receiver-list').empty();
                receiverList.forEach(function(receiver) {
                    $listItem = $('<li><a href="#" data-id="' + receiver.id + '">' + receiver.name + '</a></li>');
                    $listItem.on('click', receiverClicked);
                    $('.receiver-list').append($listItem);
                });
            }
        };

        receiverClicked = function(e) {
            e.preventDefault();

            var $target = $(e.target),
                receiver = _.find(receiverList, function(receiver) {
                    return receiver.id === $target.data('id');
                });

            doLaunch(receiver);
        };

        doLaunch = function(receiver) {
            if (!cv_activity) {
                var request = new cast.LaunchRequest('still my id string here', receiver);

                $killSwitch.prop('disabled', false);

                cast_api.launch(request, onLaunch);
            }
        };

        onLaunch = function(activity) {
            if (activity.status === 'running') {
                cv_activity = activity;

                cast_api.sendMessage(cv_activity.activityId, 'charz', {type: 'HelloWorld'});
            }
        };

        $killSwitch.on('click', function() {
            cast_api.stopActivity(cv_activity.activityId, function(){
                cv_activity = null;

                $killSwitch.prop('disabled', true);
            });
        });
    </script>
</html>

唯一被记录的是“初始化脚本”行。

先感谢您,

铬。

编辑:我会将阿里的答案标记为答案,因为他让我走上了修复它的道路:调试意味着白名单已经完成,让我查看了我这边的配置:

  1. 文件:// URL 不起作用
  2. 当我在本地设置自己的 Web 服务器时,使用 localhost/sender.html 它可以立即工作。
  3. 白名单必须准确且不包括协议(显然)。我已将我的网址列入白名单 : http://myserver/mypath/sender.html,但它不起作用,最后添加myserver/mypath/sender.html使它完美地工作。

也许可以更新文档以反映这一点?

4

1 回答 1

3

尝试访问http://<chromecast-ip>:9222以查看您的设备是否正确列入白名单。您应该会看到一个带有简单链接的页面,该链接将为您的接收器打开 chrome 调试器。

于 2013-10-06T04:37:15.513 回答