Apple Fairplay TVML не может получить AssetId, сертификат и ключ
Потратив много дней на поиск в Google о том, как использовать Fairplay в TVML (Apple TV), я не могу получить эту работу.
Я пытаюсь использовать Apple FairPlay с использованием TVML, нет четкой документации или примеров, которые могут помочь в интеграции.
в моем коде функции singleVideo.loadCertificate я пытаюсь получить assetId, но он продолжает вызывать ту же функцию без ошибок
singleVideo.loadAssetID = function(url, callback) {
console.log("===== HERE === ");
console.log("======== loadAssetID=======");
console.log(url);
var extractContentId = function (initData) {
var uri = initData;
var uriParts = uri.split('://');
var protocol = uriParts[0].slice(-3);
var contentId = uriParts.length > 0 ? uriParts[1] : '';
return protocol.toLowerCase() == 'skd' ? contentId : '';
};
asset=extractContentId(url);
var error=null;
console.log("->AssetID="+ asset);
callback(btoa(asset));
}
singleVideo.loadCertificate = function(url, callback) {
console.log("==== Getting the certificate");
var certUrl = "cer url";
var request = new XMLHttpRequest();
request.responseType = 'arraybuffer';
request.addEventListener('load', function () {
console.log( "RESPONSE ");
console.log( request.getAllResponseHeaders () );
console.log( request.response );
var base64 = btoa(new Uint8Array(request.response)
.reduce((data, byte) => data + String.fromCharCode(byte), '')
);
callback( base64);
}, false);
request.addEventListener('error', function (error) {
console.log(error)}
, false);
request.open('GET', certUrl, true);
request.setRequestHeader('Pragma', 'Cache-Control: no-cache');
request.setRequestHeader("Cache-Control", "max-age=0");
request.send();
}
singleVideo.loadKey = function(url, requestData, callback) {
console.log("======= [FPS] getting the FPS asset key");
var assetID = asset;
var postBody = "payload=" + base64EncodeUint8Array(requestData) + "&id=" + base64EncodeUint8Array(assetID);
var keyUrl = "server key url";
console.log("======= [FPS] keyurl: " + keyUrl + " sending " + postBody);
var request = new XMLHttpRequest();
request.responseType = 'text';
request.addEventListener('load', function(){
console.log(request);
callback(request.responseText, null, null);
}, false);
request.addEventListener('error', function(){
console.log(request);
callback(null, null, "Got bad response from server: " + request.status)
}, false);
request.open('POST', keyUrl, true);
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
request.send(postBody);
}
Может ли кто-нибудь помочь мне с интеграцией и сказать мне, где ошибка в моем коде?