# Admira API Content HTML5

**Admira API content HTML5** es el servicio disponible para poder comunicarse desde un contenido HTML al player de Admira via Javascript. A continuación se describen las funciones básicas de dicha API.

Para poder utilizar las funcionalidades de Admira API Content HTML5, es necesario disponer del [script](http://admira_api_content.js/), proporcionado por Admira.&#x20;

Una vez añadido como adjunto y incluido en el HTML principal, se puede invocar de la siguiente manera:&#x20;

```javascript
<script>
var api_obj = null;

function on_load(){
    api_obj = new admira_api_content();
    api_obj.onReady = function(){
        console.log(«Ready !»);
    };
    api_obj.onStart = function(){
        console.log(«Start !»);
    };
}
</script>
<body onLoad=”on_load();”>
…
```

### Eventos

Aqui se explican los eventos básicos de API Content.

* **onReady**: se produce cuando el player ha conseguido precargar el contenido HTML con éxito, es decir, el HTML ha sido cargado dentro del iFrame. En este punto el iFrame sigue en *DISPLAY:NONE*
* **onStart**: se produce cuando el player pone en “PLAY” el contenido. Cualquier animación o reproducción de elementos debe iniciarse aquí. En este punto el iFrame sigue en *DISPLAY:INLINE*

#### Funcionalidades

API content también permite enviar mensajes a player HTML5 para indicarle diferentes acciones a realizar:

* **API\_DURATION**: Cambia la duración del contenido que se está reproduciendo
* **API\_FINISH**: Finaliza el contenido que se está reproduciendo
* **API\_CONDITION**: Escribe una condición para poder ser leída posteriormente por el player con las capacidades de Playlist condicional y Triggers de condiciones
* **API\_WRITE\_FILE**: Permite escribir datos de texto a un fichero en local
* **API\_READ\_FILE**: Permite leer un fichero de texto local

{% hint style="info" %}
**Nota**

Estas funcionalidades están en constante desarrollo y mejora. Para cualquier cuestión, no dudes en reportar a <soporte@admira.com>.
{% endhint %}

{% hint style="info" %}
**Nota**

Para versiones de app inferiores a z19.05.30, cuando se quiere obtener el id del player, es necesario poner la llamada dentro de onStrat. Para las versiones posteriores a z19.05.30, esta incluida, se puede poner dentro de onReady. A continuación se muestra un ejemplo de cómo habría que pedir el id del player en ambos casos.
{% endhint %}

**Versión de la aplicación anterior a z19.05.30**

```javascript
my_api.onReady = function(){
    console.log("Ready !”);
};

my_api.onStart = function(){

console.log(“onStart”);

my_api.send("api_command",{command:my_api.API_PLAYER_INFO,params:{'callback':"onGetInfo"}});

};
```

**Versión de la aplicación igual o posterior a z19.05.30**

```javascript
my_api.onReady = function(){
    console.log("Ready !”);

    my_api.send("api_command",{
        command:my_api.API_PLAYER_INFO,params:{
        'callback':"onGetInfo"
            }
        });
    };

    my_api.onStart = function(){

    console.log(“onStart”);
};
```

#### Ejemplos de funciones

```javascript
# API_DURATION:

api_obj.send("api_command",{
    command:api_obj.API_DURATION,
    params: {
        duration:30
    }
});
```

**→ Cambiará la duración, donde 30 es el número de segundos a partir del momento de la llamada a API.**

```javascript
# API_FINISH:

api_obj.send("api_command",{
    command:api_obj.API_FINISH
});
```

**→ Finalizara el contenido de inmediato.**

```javascript
# API_CONDITION:

var condition_object = {
    'id': ‘01’,
    'filename': ‘internet_connected.xml’,
    'value':1,
    ‘write’:true
};

api_obj.send("api_command",{
    command:api_obj.API_CONDITION,
    params:condition_object
});
```

**→ Escribirá el valor de la condicion para “Internet Connected”.**

```javascript
# API_WRITE_FILE:

var file_object = {
    'path': ‘./log’,
    'filename': ‘hello.txt’,
    'text':’ Hello World !’
};

api_obj.send("api_command",{
    command:api_obj.API_WRITE_FILE,
    params:file_object
});
```

**→ Escribirá “Hello World!“ en ./content/hello.txt**

```javascript
# API_READ_FILE:

function onFileReadComplete(data){
    console.log("HTML onFileReadComplete data : "+data);
}

var file_object = {
    'path': ‘./log’,
    'filename': ‘hello.txt’,
    'callback': ‘onFileReadComplete’
};

api_obj.send("api_command",{
    command:api_obj.API_READ_FILE,
    params:file_object
});
```

→ Leerá ./content/hello.txt y enviara el resultado al callback : onFileReadComplete

```javascript
# API_PLAYER_INFO:
**Ejemplo completo obtener player_id y usarlo (versiones app inferiores a z19.05.30)

<script>

my_api = new admira_api_content();

var started = false;
var playerId = 0;

if (typeof(Storage) !== "undefined") {
    playerId = localStorage.getItem("playerID");
    myFunction(playerId);
}

if(playerId == 0){
    //Cuando inicia el player (Carga el HTML)
    my_api.onReady = function () {
        setTimeout(function(){my_api.onStart()},time);
    };

    //Cuando emite el HTML
    my_api.onStart = function () {
        clearTimeout(time)
        if(!started){
            my_api.send("api_command", { 
                command: my_api.API_PLAYER_INFO, params: { 'callback': "onGetInfo" 
                } 
            });
        }
    started = true;
    };
    
    my_api.onEvent = function (e) {
        if (started) {
         if (e.action == my_api.API_PLAYER_INFO) {
                if (typeof (e.msg.callback) !== "undefined") {
                    eval(e.msg.callback)(e.msg.data);
                }
            }
        }
    };
}


function onGetInfo(data) {
    try {
        if (data) {
            if (data.PlayerController && data.PlayerController.player_id) {
                playerId = data.PlayerController.player_id;
                localStorage.setItem("playerID", playerId);
                myFunction(playerId);
            }
        }
    }
    catch (e) {
        document.getElementById("contenedor").innerHTML = e;
    }
};

</script>
```

```javascript
# API_PLAYER_INFO:
**Ejemplo completo obtener player_id y usarlo (versiones app iguales o superiores a z19.05.30)

<script>

my_api = new admira_api_content();

var started = false;
var playerId = 0;
var time = 2000;

if (typeof(Storage) !== "undefined") {
    playerId = localStorage.getItem("playerID");
    myFunction(playerId);</p>
}

if(playerId == 0){
    //Cuando inicia el player (Carga el HTML)
    my_api.onReady = function () {
        my_api.send("api_command", { 
            command: my_api.API_PLAYER_INFO, params: { 
                'callback': "onGetInfo" 
            }
        });
    };

    //Cuando emite el HTML
    my_api.onStart = function () {
        started = true;
    };
    my_api.onEvent = function (e) {
        if (started) {
            if (e.action == my_api.API_PLAYER_INFO) {
                if (typeof (e.msg.callback) !== "undefined") {
                    eval(e.msg.callback)(e.msg.data);
                }
            }
        }
    };
}

function onGetInfo(data) {
    try {
        if (data) {
            if (data.PlayerController && data.PlayerController.player_id) {
                playerId = data.PlayerController.player_id;
                localStorage.setItem("playerID", playerId);
                myFunction(playerId);
            }
        }
    }
    catch (e) {
        document.getElementById("contenedor").innerHTML = e;
    }
};
</script>
```

<br>
