Cómo crear Activities para Internet Explorer 8

Continuando con el post anterior (demasiado que escribir y poco espacio para hacerlo), ahora si vamos a poner manos a la obra: vamos a construir un Activity para IE8.

activitymap

Vas a necesitar:

1. Creando el Manifiesto del Activity

Un Activity está descrito por un archivo XML llamado el Manifiesto OpenService del Activity. Este es un microformato que define las características del Activity y que tiene varios elementos, atributos y valores posibles.

El archivo debe empezar con el siguiente encabezado:

<os:openServiceDescription xmlns:os="https://www.microsoft.com/schemas/openservicedescription/1.0">

<os:homepageUrl>https://maps.example.com</os:homepageUrl>

Después agregamos los valores descriptivos en tres elementos: nombre (name), icono (icon) y descripción:

<os:name>Map with MyMap</os:name>
<os:icon>https://www.example.com/favicon.ico</os:icon>
<os:description>Map addresses easily with MyMap.</os:description>

El elemento os:ctivity es muy importante y es el que describe el tipo de servicio que ofrece el Activity que estamos creando. Hay varias categorías en que puede caer: add, blog, define, map, send o translate.

<os:activity category="map">

El siguiente elemento define cómo se va a accionar el Activity. En este caso hay 3 posibilidades: document, selection o link:

<os:activityAction context="selection">

La opción de Preview permite ver la actividad sin abandonar la página, y comparte los atributos con os:execute. Este parámetro puede ser opcional:

<os:preview action="https://maps.example.com/preview.php?addr={selection}" />

Ahora sí: la acción que se realiza cuando el usuario da clic sobre el Activity.

<os:execute action="https://maps.example.com/" method="get">

Tanto os:preview como os:execute tienen los siguientes atributos para enviar o solicitar datos:

Atributo

¿Requerido?

Descripción

action La plantilla del URL utilizada para enviar datos
method No El tipo de método de HTTP a utilizar (get, post). El default es get
enctype No El tipo de contenido a enviar al servidor.
accept-charset No El juego de caracteres a utilizar en el envio de datos. el default es UTF-8

Algunas veces hay que proveer una forma de pasar los parámetros al sitio web en forma de variables. Un atributo opcional que puede utilizarse es os:parameter:

<os:parameter name="addr" value="{selection}" type="text" />

Poniendo todo esto junto, nos queda algo como esto:

<?xml version="1.0" encoding="UTF-8"?>
<os:openServiceDescription xmlns:os="https://www.microsoft.com/schemas/openservicedescription/1.0">
<os:homepageUrl>https://maps.example.com</os:homepageUrl>
<os:display>
<os:name>Map with MyMap</os:name> <os:icon>https://www.example.com/favicon.ico</os:icon>
<os:description>Map addresses easily with MyMap.</os:description> </os:display>
<os:activity category="map"> <os:activityAction context="selection">
<os:preview action="https://maps.example.com/preview.php?addr={selection}" />
<os:execute action="https://maps.example.com/" method="get"> <os:parameter name="addr" value="{selection}" type="text" /> </os:execute> </os:activityAction>
</os:activity>
</os:openServiceDescription>

2. Instalación

Para instalar el Activity, basta con poner un control en una página de tu sitio web, haciendo referencia al archivo del Manifiesto:

<button onclick="window.external.AddService('https://www.example.com/Activity.xml')"> Instalar Activity</button>

3. Enriquece tu Activity

La especificación completa sobre el microformato de OpenService y más opciones se encuentran en la guía de desarrollo de Activities. Échale un vistazo para que veas que más puedes lograr.

¡Listo! Con esto ya puedes distribuir Activities para IE8, y puedes crear tantas como necesites.