tvOS没有加载外部TVML文件



在创建新的客户机-服务器tvOS应用程序时,tvOS将不会从我的外部tvml文件获取数据。错误:ITML <Error>: Failed to load launch URL with error: (null)

这是main.js代码

function getDocument(url) {
    var templateXHR = new XMLHttpRequest();
    templateXHR.responseType = "document";
    templateXHR.addEventListener("load", function() {pushDoc(templateXHR.responseXML);}, false);
    templateXHR.open("GET", url, true);
    templateXHR.send();
    return templateXHR;
}
function pushDoc(document) {
    navigationDocument.pushDocument(document);
}
App.onLaunch = function(options) {
    var templateURL = 'niclasblog.com/appletv/main.tvml';
    getDocument(templateURL);
}
App.onExit = function() {
    console.log('App finished');
}

我也附上了main.tvml文件

<document>
   <alertTemplate>
      <title>Test</title>
      <description>This is a test</description>
      <button>
         <text>Yes</text>
      </button>
      <button>
         <text>No</text>
      </button>
   </alertTemplate>
</document>

这段代码直接来自苹果文档,所以我不知道为什么它不工作。

在App.onLaunch函数中,你可以获得BASEURL并使用它来加载所有资源:

App.onLaunch = function(options) {
  var BASEURL = options.BASEURL;
  // etc.
}

你也可以考虑另一种加载模板的方法。考虑使用DOMParser解析XML字符串。这样你就可以用"真实"内容编写多行模板字符串,例如

getDocument(options) {
let parser = new DOMParser();
let templateString = `<?xml version="1.0" encoding="UTF-8" ?>
    <document>
       <alertTemplate>
          <description>${options.translate.errorRandomErrorAlertText}</description>
          <button>
             <text>${options.translate.utilOk}/text>
          </button>
       </alertTemplate>
    </document>`;
return parser.parseFromString(templateString, "application/xml");
}

我已经用es6专门为苹果的TVML应用编写了一个生成器,它还处于开发的早期阶段,但可能会帮助你入门。

尝试替换

var templateURL = 'niclasblog.com/appletv/main.tvml';
带有完全限定URI的

var templateURL = 'https://niclasblog.com/appletv/main.tvml';

templateXHR.responseType = "document"; 
不需要

,因为这似乎是默认行为。

相关内容

  • 没有找到相关文章

最新更新