Crear una aplicación BlackBerry que muestre un anuncio

Mediante el uso de la API de servicio de publicidad es posible integrar anuncios en sus aplicaciones sin escribir una gran cantidad de código Java®.

Práctica recomendada: Mostrar anuncios en una aplicación

La forma en la que muestre los anuncios en su aplicación puede afectar al rendimiento de los anuncios.

Considere las siguientes directrices:

  • Coloque anuncios en las pantallas que tengan la mayor cantidad de tráfico para su aplicación (por ejemplo, coloque un anuncio en la pantalla que aparece cuando se abre una aplicación en lugar de en una pantalla que requiera varios clics para poder llegar a ella).
  • Coloque anuncios en ubicaciones relevantes de las pantallas. La colocación de un anuncio en la parte superior de la pantalla lo hará más visible para los usuarios de dispositivos BlackBerry®.
  • Envíe metadatos con solicitudes de anuncios. Cuanta más información tengan las redes de publicidad acerca del público de destino de su aplicación, más efectivo será el anuncio.
  • Evite recargar los anuncios con el resto del contenido en su aplicación. Los anuncios deben estar claramente visibles para que sea más sencillo interactuar con los mismos.
  • Personalice el área de visualización de los anuncios para adaptar el diseño de la interfaz de usuario de su aplicación.

Utilizar la clase Banner para mostrar un anuncio

La clase Banner, incluida en la API de Advertising Service, le permite mostrar anuncios en sus aplicaciones. Al crear una instancia de la clase Banner y colocar el objeto en una pantalla, crea en esencia un marcador que envía las solicitudes de anuncios periódicas y muestra los anuncios devueltos.

Al crear un objeto Banner, debe pasar el parámetro placementId que Research In Motion le ha asignado a su aplicación. Su aplicación envía el parámetro placementId a la capa de mediación de Advertising Service con cada solicitud de anuncio. Una vez que la capa de mediación recibe una solicitud de anuncio, el servidor evalúa la solicitud según las estadísticas asociadas al ID de colocación, envía la solicitud a la red de publicidad apropiada y devuelve un anuncio a su aplicación. Se puede utilizar un placementId con varios objetos Banner en su aplicación.

En el constructor de un objeto Banner, también puede definir la frecuencia con la que la aplicación hace solicitudes de anuncios, un objeto Hashtable que contenga los metadatos que la aplicación envía con cada solicitud de anuncio y una imagen de marcador para el área de visualización.

Para mostrar el anuncio, la API de Advertising Service crea un campo de navegador (browser.field para dispositivos BlackBerry que ejecutan BlackBerry® Device Software 4.7.1 y anterior, y browser.field2 para dispositivos que ejecutan BlackBerry Device Software 5.0 y posterior) para representar los contenidos del anuncio e inserta el campo de navegador en el objeto Banner.

Para obtener más información acerca del uso de la clase Banner, visite www.blackberry.com/developers/docs/advertising/1.0api/ para la referencia API de Advertising Service .

Consideraciones adicionales

  • La API de Advertising Service es compatible con un máximo de dos objetos Banner activos en una pantalla al mismo tiempo (sólo uno para BlackBerry 6).
  • Si su aplicación muestra más de un anuncio (incluso en pantallas diferentes), debe crear un objeto Banner independiente para cada lugar de colocación del anuncio. La reutilización de un objeto Banner en varias ubicaciones, puede provocar que los anuncios se muestren de forma incorrecta.
  • No debe intentar eliminar un objeto Banner de una pantalla sin eliminar además el gestor del campo de contenido, ya que esto puede provocar problemas con otros objetos Banner.
  • La utilización de un objeto FlowFieldManager para mostrar objetos Banner puede provocar que los anuncios se muestren de forma incorrecta.

Configurar el tamaño del área de visualización de un anuncio

Al crear un objeto Banner, puede especificar el tamaño de los anuncios que desea que muestre su aplicación. Una vez que su aplicación envía una solicitud de anuncio, la capa de mediación de Advertising Service devuelve un anuncio que encaja con el tamaño especificado. Advertising Service es compatible con los siguientes tamaños de anuncio, en píxeles:
  • 320 X 53: Banner.MMA_SIZE_EXTRA_LARGE (tamaño necesario para anuncios multimedia enriquecidos)
  • 216 x 36: Banner.MMA_SIZE_LARGE
  • 168 x 28: Banner.MMA_SIZE_MEDIUM
  • 120 x 20: Banner.MMA_SIZE_SMALL

Dependiendo de la versión de BlackBerry® Device Software que ejecute su aplicación, es posible que deba establecer el tamaño del área de visualización, o bien podría no ser necesario. Si su aplicación ejecuta BlackBerry Device Software 5.0 o posterior, y no ha configurado el tamaño del código de la aplicación, el objeto Banner cambia el tamaño automáticamente para adaptarse al tamaño del anuncio que devuelve la capa de mediación. Si permite al objeto Banner cambiar el tamaño automáticamente, debe asegurarse de que el diseño de su pantalla sea compatible con cada uno de los distintos tamaños.

Si su aplicación se ejecuta en una versión de BlackBerry Device Software anterior a la 5.0, deberá invocar setMMASize() en un objeto Banner. Sin embargo, la invocación de setMMASize(Banner.MMA_SIZE_AUTO) permite al objeto Banner cambiar el tamaño automáticamente, puesto que es el comportamiento predeterminado en aplicaciones que ejecutan BlackBerry Device Software 5.0 o posterior.

Mostrar un anuncio en una pantalla

  1. Importe las clases y las interfaces necesarias.
    import net.rimlib.blackberry.api.advertising.app.Banner;
    import net.rim.device.api.ui.container.MainScreen;
    import net.rim.device.api.ui.UiApplication;
  2. Cree el marco de la aplicación ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicación para recibir eventos. En el constructor de la aplicación, invoque pushScreen() para mostrar la pantalla personalizada para la aplicación. La clase AdDemoScreen, que se describe en el paso 3, representa la pantalla que muestra el anuncio.
    public class AdDemo extends UiApplication
    {
       public static void main(String[] args)
       {
          AdDemo theApp = new AdDemo();
          theApp.enterEventDispatcher();
       }
       public AdDemo()
       {
          pushScreen(new AdDemoScreen());
       }
    }
  3. Cree la pantalla personalizada ampliando la clase MainScreen.
    class AdDemoScreen extends MainScreen
    {
       public AdDemoScreen()
       {
       }
    }
  4. En el constructor de pantalla, cree una instancia de la clase Banner, pase el ID de colocación de su aplicación como parámetro y si no desea que su aplicación envíe metadatos con solicitudes de anuncios, configure el segundo parámetro en null. Invoque setMMASize() y especifique un tamaño para el objeto Banner. Agregue el objeto Banner a la pantalla.
    Banner bannerAd = new Banner(placementId, null);            
    bannerAd.setMMASize(Banner.MMA_SIZE_EXTRA_LARGE);            
    add(bannerAd);

    Puede consultar los resultados de la ejecución del ejemplo de código anterior en el siguiente gráfico:

Ejemplo de código: Mostrar un anuncio en una pantalla

import net.rimlib.blackberry.api.advertising.app.Banner;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.UiApplication;
public class AdDemo extends UiApplication
{
   public static void main(String[] args)
   {
      AdDemo theApp = new AdDemo();
      theApp.enterEventDispatcher();
   }
   public AdDemo()
   {
      pushScreen(new AdDemoScreen());
   }
}
class AdDemoScreen extends MainScreen
{
   public AdDemoScreen()
   {
      Banner bannerAd = new Banner(placementId, null);            
      bannerAd.setMMASize(Banner.MMA_SIZE_EXTRA_LARGE);            
      add(bannerAd);
   }
}

Enviar metadatos

Si elige enviar metadatos anónimos con las solicitudes de anuncios, las redes de publicidad podrán utilizar esta información (junto con la información que se envía automáticamente, como el modelo de dispositivo BlackBerry®, la versión de BlackBerry® Device Software y el país) con el fin de identificar un público de destino para la colocación de un anuncio. Los metadatos pueden contener información anónima sobre un usuario de dispositivo, por ejemplo, la edad del usuario, el género y los ingresos.

De forma predeterminada, la capa de mediación de Advertising Service es compatible con los siguientes metadatos:

Clave de metadatos

Valores aceptables

age

Un número entero que representa la edad del usuario (por ejemplo, "27")

gender

"male" o "female"

zip

Un código postal válido (por ejemplo, "75039" o "N2L3X2")

marital

"single","married" o "divorced"

income

Un número entero que representa los ingresos del usuario (por ejemplo, "50000")

lat

Una latitud válida medida en grados (por ejemplo, "32.0678")

long

Una longitud válida medida en grados (por ejemplo, "101.0890")

ethnicity

"caucasian", "asian", "hispanic", "african american", "native american" o "other"

search

Cualquier término de búsqueda que un usuario escriba en su aplicación (debido al origen incoherente de este tipo de metadatos, algunos términos de búsqueda podrían en realidad no ser útiles para encontrar anuncios más relevantes)

Además de lo anterior, muchas de las redes de publicidad que participan son compatibles con tipos adicionales de metadatos. Si requiere compatibilidad con tipos adicionales de metadatos, puede enviar a Research In Motion el conjunto de los tipos de metadatos y valores que desea utilizar. Por ejemplo, es posible que desee ofrecer compatibilidad con la información acerca de los intereses deportivos o alimentarios de los usuarios. Una vez que la capa de mediación recibe una solicitud de anuncio, ésta envía los metadatos a las redes de publicidad en formatos que las redes pueden comprender.

Para activar la compatibilidad con los distintos tipos de metadatos, envíe un correo electrónico a advertisingservice@blackberry.com.

Enviar metadatos con una solicitud de anuncio

  1. Importe las clases y las interfaces necesarias.
    import net.rimlib.blackberry.api.advertising.app.Banner;
    import net.rim.device.api.ui.container.MainScreen;
    import net.rim.device.api.ui.UiApplication;
    import java.util.Hashtable;
  2. Cree el marco de la aplicación ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicación para recibir eventos. En el constructor de la aplicación, invoque pushScreen() para mostrar la pantalla personalizada para la aplicación. La clase AdDemoScreen, que se describe en el paso 3, representa la pantalla que muestra el anuncio.
    public class AdDemo extends UiApplication
    {
       public static void main(String[] args)
       {
          AdDemo theApp = new AdDemo();
          theApp.enterEventDispatcher();
       }
       public AdDemo()
       {
          pushScreen(new AdDemoScreen());
       }
    }
  3. Cree la pantalla personalizada ampliando la clase MainScreen.
    class AdDemoScreen extends MainScreen
    {
       public AdDemoScreen()
       {
       }
    }
  4. En el constructor de pantalla, cree una instancia de la clase Hashtable e invoque put() para cada conjunto de valores de metadatos que desee agregar a la tabla hash.
    Hashtable metadata = new Hashtable();
    metadata.put("age", "21");
    metadata.put("gender", "female");
    metadata.put("income", "100000");
    metadata.put("lat", "36.164");
    metadata.put("lon", "-96.321");
    metadata.put("search", "car dealerships");
  5. Cree una instancia de la clase Banner y pase el ID de colocación de su aplicación y el objeto Hashtable que ha creado como parámetros. Invoque setMMASize() para especificar un tamaño para el objeto Banner y agregar Banner a la pantalla.
    Banner bannerAd = new Banner(placementId, metadata);            
    bannerAd.setMMASize(Banner.MMA_SIZE_EXTRA_LARGE);            
    add(bannerAd);

Ejemplo de código: Enviar metadatos con una solicitud de anuncio

import net.rimlib.blackberry.api.advertising.app.Banner;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.UiApplication;
import java.util.Hashtable;
public class AdDemo extends UiApplication
{
   public static void main(String[] args)
   {
      AdDemo theApp = new AdDemo();
      theApp.enterEventDispatcher();
   }
   public AdDemo()
   {
      pushScreen(new AdDemoScreen());
   }
}
class AdDemoScreen extends MainScreen
{
   public AdDemoScreen()
   {
      Hashtable metadata = new Hashtable();
      metadata.put("age", "21");
      metadata.put("gender", "female");
      metadata.put("income", "100000");
      metadata.put("lat", "36.164");
      metadata.put("lon", "-96.321");
      metadata.put("search", "car dealerships");
      Banner bannerAd = new Banner(placementId, metadata);            
      bannerAd.setMMASize(Banner.MMA_SIZE_EXTRA_LARGE);            
      add(bannerAd);
   }
}

Personalizar el aspecto y el comportamiento del área de visualización de un anuncio

Puede personalizar el aspecto y comportamiento del área de visualización de un anuncio para encajar con el diseño de la interfaz de usuario de la aplicación.

Elemento

Descripción

Efecto de transición

De forma predeterminada, cuando una aplicación carga un nuevo anuncio o efectúa una transición entre los distintos anuncios, la aplicación muestra un efecto de transición en negro que hace a los anuncios aparecer o desaparecer progresivamente. Puede desactivar el efecto de transición invocando enableBannerTransition(false). Puede cambiar el color del efecto de transición invocando setBannerTransitionColor() y especificando un color compatible con la clase Color en BlackBerry® Java® SDK. Por ejemplo, para cambiar el color de transición a azul, puede invocar setBannerTransitionColor(Color.BLUE).

Comportamiento de enfoque

De forma predeterminada, cuando un usuario del dispositivo BlackBerry® selecciona un anuncio, la aplicación muestra un borde azul alrededor del mismo. Puede cambiar el color del borde invocando setBorderColor() y especificando un color compatible con la clase Color en BlackBerry Java SDK. Por ejemplo, para cambiar el color del borde a rojo, puede invocar setBorderColor(Color.RED).

Puede omitir el comportamiento de enfoque predeterminado de un objeto Banner mediante la configuración del comportamiento de enfoque del contenido forzando al objeto Banner a heredar el nuevo comportamiento. Puede evitar que la API de Advertising Service gestione el comportamiento de enfoque invocando setFocusOverrideFlag(true).

Imagen de marcador

De forma predeterminada, cuando una aplicación espera a recibir un anuncio de una red de publicidad, la aplicación muestra una imagen de marcador transparente con un borde. Si desea crear su propia imagen de marcador, puede crear un objeto Bitmap y pasarlo como un parámetro cuando cree un objeto Banner.

Si crea su propia imagen de marcador, compruebe que tiene las mismas dimensiones que los anuncios que recibe su aplicación.

Personalizar el área de visualización de un anuncio

Esta tarea muestra cómo puede cambiar la imagen de marcador, los colores del borde de enfoque y el efecto de transición para el área de visualización de un anuncio.

Antes de comenzar: cree una imagen de marcador personalizado que tenga las mismas dimensiones que los anuncios que recibe y almacena la aplicación con los recursos del proyecto de su aplicación BlackBerry®.
  1. Importe las clases y las interfaces necesarias.
    import net.rimlib.blackberry.api.advertising.app.Banner;
    import net.rim.device.api.system.Bitmap;
    import net.rim.device.api.ui.Color;
    import net.rim.device.api.ui.container.MainScreen;
    import net.rim.device.api.ui.UiApplication;
  2. Cree el marco de la aplicación ampliando la clase UiApplication. En main(), cree una instancia de la clase nueva e invoque enterEventDispatcher() para activar la aplicación para recibir eventos. En el constructor de la aplicación, invoque pushScreen() para mostrar la pantalla personalizada para la aplicación. La clase AdDemoScreen, que se describe en el paso 3, representa la pantalla que muestra el anuncio.
    public class AdDemo extends UiApplication
    {
       public static void main(String[] args)
       {
          AdDemo theApp = new AdDemo();
          theApp.enterEventDispatcher();
       }
       public AdDemo()
       {
          pushScreen(new AdDemoScreen());
       }
    }
  3. Cree la pantalla personalizada ampliando la clase MainScreen.
    class AdDemoScreen extends MainScreen
    {
       public AdDemoScreen()
       {
       }
    }
  4. En el constructor de pantalla, cree una instancia de la clase Bitmap invocando getBitmapResource() y pasando el nombre de la imagen de marcador personalizado como un parámetro.
    Bitmap customPlaceholder = Bitmap.getBitmapResource("placeholder.png");
  5. Cree una instancia de la clase Banner y pase el ID de colocación de su aplicación, los intervalos a los que la aplicación realiza solicitudes de anuncios y el objeto Bitmap que ha creado como parámetro.
    Banner bannerAd = new Banner(placementId, null, 100000, customPlaceholder);
  6. Invoque setBorderColor() y setBannerTransitionColor() para cambiar el color del borde y el efecto de transición.
    bannerAd.setBorderColor(Color.RED);
    bannerAd.setBannerTransitionColor(Color.RED);
  7. Invoque setMMASize() y especifique un tamaño para el objeto Banner. Agregue el objeto Banner a la pantalla.
    bannerAd.setMMASize(Banner.MMA_SIZE_EXTRA_LARGE);
    add(bannerAd);

    Puede consultar los resultados de la ejecución del ejemplo de código anterior en los siguientes gráficos.

    El marcador personalizado:

    El marcador personalizado atenuándose con un efecto de transición en verde:

    El anuncio atenuándose con un efecto de transición en verde:

    El anuncio con un borde de enfoque en verde:

Ejemplo de código: Personalizar el área de visualización de un anuncio

import net.rimlib.blackberry.api.advertising.app.Banner;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.UiApplication;
public class AdDemo extends UiApplication
{
   public static void main(String[] args)
   {
      AdDemo theApp = new AdDemo();
      theApp.enterEventDispatcher();
   }
   public AdDemo()
   {
      pushScreen(new AdDemoScreen());
   }
}
class AdDemoScreen extends MainScreen
{
   public AdDemoScreen()
   {
      Bitmap customPlaceholder = Bitmap.getBitmapResource("placeholder.png");
      Banner bannerAd = new Banner(placementId, null, 100000, customPlaceholder);
      bannerAd.setBorderColor(Color.RED);
      bannerAd.setBannerTransitionColor(Color.RED);
      bannerAd.setMMASize(Banner.MMA_SIZE_EXTRA_LARGE);
      add(bannerAd);
   }
}

Colocar el área de visualización de un anuncio

La forma de colocar un objeto Banner en una pantalla puede afectar al rendimiento de los anuncios que muestra su aplicación. Cuanto más prominentes sean los anuncios en la pantalla, más fácil será para los usuarios del dispositivo BlackBerry® ver e interactuar con los anuncios. Puede utilizar los gestores de diseño de BlackBerry® Java® SDK para distribuir los anuncios con el resto del contenido de la aplicación.

Debe evitar utilizar objetos FlowFieldManager para administrar pantallas que contengan anuncios ya que la clase FlowFieldManager no se ha diseñado para mostrar los campos del navegador.

Una estrategia habitual para colocar anuncios consiste en colocar el anuncio en la parte superior o inferior de la pantalla. Si su pantalla extiende MainScreen, puede colocar un objeto Banner en la sección del título de la pantalla para que el anuncio siempre aparezca en la parte superior, o en la sección de estado para que el anuncio siempre aparezca en la parte inferior. Al colocar un objeto Banner en un HorizontalFieldManager antes de agregarlo a la pantalla, puede cambiar la posición y el aspecto del objeto Banner aplicando los estilos apropiados.

Ejemplo de código: Colocar un anuncio en la posición central superior de la pantalla

El siguiente ejemplo de código muestra cómo utilizar los gestores de campo para mostrar un anuncio en la posición central superior de la pantalla.

class AdDemoScreen extends MainScreen
{
    public AdDemoScreen()
    {
        Banner bannerAd = new Banner(15380, null);
        bannerAd.setMMASize(Banner.MMA_SIZE_EXTRA_LARGE);
        VerticalFieldManager vfm = new VerticalFieldManager
            (VerticalFieldManager.NO_VERTICAL_SCROLL 
            | VerticalFieldManager.NO_VERTICAL_SCROLLBAR 
            | VerticalFieldManager.USE_ALL_WIDTH);
        HorizontalFieldManager hfm = new HorizontalFieldManager
            (HorizontalFieldManager.FIELD_HCENTER 
            | HorizontalFieldManager.FIELD_VCENTER);
        hfm.add(bannerAd);
        vfm.add(hfm);
        add(vfm);
    }
}

Puede consultar los resultados de la ejecución del ejemplo de código anterior en el siguiente gráfico:

Este gráfico muestra una pantalla que contiene un anuncio colocado en la ubicación central superior de la pantalla.

Para obtener más información acerca de los gestores de diseño, consulte la Guía de desarrollo de interfaz de usuario y navegación de BlackBerry Java SDK en www.blackberry.com/go/devguides.

Tema siguiente: Ejecutar una aplicación

¿Le ha resultado útil esta información? Envíenos sus comentarios.