1

新しいクライアント サーバー 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>

このコードは Apple ドキュメントから直接引用したものなので、なぜ機能しないのかわかりません。

4

2 に答える 2

1

これを交換してみてください

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

完全修飾 URI を使用

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

また

templateXHR.responseType = "document"; 

これはデフォルトの動作であるように見えるため、必要ありません。

于 2015-11-02T16:14:15.940 に答える
1

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 を使用する Apple TVML アプリ専用のジェネレーターを作成しました。これはまだ開発の初期段階ですが、始めるのに役立つかもしれません。

于 2016-02-09T15:07:17.540 に答える