Invitaciones a la aplicación

By choka

Aunque a mucha gente le parecen molestas, las invitaciones dentro de una aplicación (usadas de manera correcta) le dan a nuestra aplicación la oportunidad de popularizarse. Resulta deseable entonces crear una página que invite a los usuarios a usar nuestra aplicación, y para crearla, se utiliza la etiqueta FBML fb:request-form, esta etiqueta junto con otras, nos permite crear una página de invitación, como la siguiente:

pagina de invitacion

Y una vez que seleccionamos a unos amigos la confirmación de envió de invitación se ve como sigue:

Mensaje de confirmación

Ahora, el código en fbml sería el siguiente:


<fb:request-form action="?"
         method="POST" invite="true"
         type="REC"
         content="MENSAJE DE INVIACION <fb:req-choice url='http://www.facebook.com/add.php?api_key="+api_key+"'label='Dañe un vistazo a REC!'/>">
        <fb:multi-friend-selector showborder="true"
                                  actiontext="Invita a tus amigos a usar REC."
                                  exclude_ids="+Amigos+" max="20" />
         </fb:request-form>

Ahora a explicar el código FBML:

la etiqueta <fb:request-form> permite crear una página de tipo request, esta etiqueta tiene los siguientes parámetros:

action: se refiere al siguiente servlet o página que se va a mostrar una vez enviada la invitación o cuando se cancele esta acción presionando “Skip”.

method: el método al que se llamará en la siguiente página.

invite: ¿es una invitación ? “true”

type: Comunmente el nombre de nuestra aplicación, este parámetro se ve reflejado en la notificación que le llega a las personas, cuando dice “you have a TYPE invitation”, asi que TYPE puede ser el nombre de la aplicación o cualquier cosa que haga coherente este texto.

content: El contenido que se mostrará en la notificación que recibirá el usuario, en mi caso dice “REC es un servicio que blah blah blah” (lo cual abrevié) con MENSAJE DE INVITACIÓN. En seguida viene otra etiqueta que va incluída dentro del contenido <fb:req-choice> que muestra un botón y la acción a tomar cuando se de click sobre el, en este caso el parámetro URL es la página que invita a añadir la aplicación, y el LABEL es el texto de dicho botón.

<fb:multi-friend-selector> es la etiqueta FBML que muestra la página con todos nuestros amigos a los que podemos mandar la aplicación, y tiene parámetros que también voy a explicar:

showborder: ¿muestra el borde?

actiontext: El texto que se muestra en la página de invitación.

max: el número máximo de amigos mostrados en la página

exclude_ids: En muchos casos es deseable que la página de invitación solamente muestre a los amigos que no han añadido la aplicación, el parámetro exclude_ids nos ayuda a decidir qué IDS de amigos deseamos excluir para no mostrar a dichos amigos en esta página.

Una manera de obtener dichos IDs, es usando una función de la api de llava llamada

friends_getAppUsers()

la cual nos regresa una lista de los usuarios de la aplicación que son amigos del usuario actual y que por lotanto podemos excluir de la página de invitación, un par de formateo extra nos ayudará a formar la lista:


Document d = client.friends_getAppUsers();
NodeList Ids = d.getElementsByTagName("uid");
String Amigos=getFriendsIds(Ids);

La función getFriendsIds(NodeList Ids) es una función que hacemos para que la lista de nodos nos sea entregada como una secuencia de id’s separados por coma.


public static String getFriendsIds(NodeList friends) {

    int length = friends.getLength();
    int [] IntFriends = new int[length];
    String amigos="";

    for (int i = 0; i < length; i++) {
        if (friends.item(i).getFirstChild().getNodeType() == Node.TEXT_NODE)
        amigos+=friends.item(i).getFirstChild().getNodeValue();
        if(i<length-1)
        amigos+=",";
    }
    return amigos;
}

Y así creamos nuestra página de invitación, asi hacemos que los usuarios que usen nuestra aplicación tengan una opciónde invitar a sus amigos a usarla. Una política de Facebook es que como desarrollador no podemos y no debemos obligar a los usuarios a hacer invitaciones, esto es un punto opcional para los usuarios y de ninguna manera debemos condicionarlos a que hagan invitaciones para promover nuestra aplicación.

Espero que esto sea útil ;) .

Tags: , ,

4 Responses to “Invitaciones a la aplicación”

  1. mytwm Says:

    No me funciona el codigo que dan.. me devuelve este error:

    Han ocurrido errores mientras cargábamos la página de la aplicación
    Errores de tipo Parse:

    FBML Error (line 1): illegal attr “+api_key+” in tag “fb:request-form”. Attribute names can only contain alphanumeric characters, underscores, and hyphens.

    Errores de tiempo de ejecución:

    fb:multi-friend-selector: fb:multi-friend-selector must appear inside of fb:request-form or multiFeed form.

    como se puede solucionar??

  2. choka Says:

    trata de poner directamente el nùmero de tu aplicaciòn en lugar de “+api_key+”:

    en lugar de poner:

    
    <fb:request-form action="?"
             method="POST" invite="true"
             type="REC"
             content="MENSAJE DE INVIACION <fb:req-choice url='http://www.facebook.com/add.php?api_key="+api_key+"'label='Dañe un vistazo a REC!'/>">
            <fb:multi-friend-selector showborder="true"
                                      actiontext="Invita a tus amigos a usar REC."
                                      exclude_ids="+Amigos+" max="20" />
             </fb:request-form>
    

    si el api_key de tu aplicaciòn es 1234567890,
    escrìbelo directamente:

    
    <fb:request-form action="?"
             method="POST" invite="true"
             type="REC"
             content="MENSAJE DE INVIACION <fb:req-choice url='http://www.facebook.com/add.php?api_key=1234567890'label='Dañe un vistazo a REC!'/>">
            <fb:multi-friend-selector showborder="true"
                                      actiontext="Invita a tus amigos a usar REC."
                                      exclude_ids="+Amigos+" max="20" />
             </fb:request-form>
    

    Revisa bien las comillas dobles y sencillas, eso da un dolor de cabeza.
    Ojalà te ayude. Saludos.

  3. Olga Says:

    He probado con tu código (y con mil más) pero no hay manera.
    El cuadro de amigos se muestra correctamente. El pop-up de personalización del mensaje tb. Luego me recarga otra vez la misma página, y la invitación no se envia.
    ¿Qué me olvido?

  4. choka Says:

    Hay muchos códigos como el mío que están obsoletos o cierta funcionalidad ya no es igual, debido a los cambios que hizo Facebook, lamentablemente yo ya no le he dado continuidad a este proyecto y por lo tanto no podría decirte que está mal. Sin embargo si te puedo recomendar algunas ligas:

    http://wiki.developers.facebook.com/index.php/Fb:request-form

    y posiblemente este sea el por qué de que no se manden…

    http://wiki.developers.facebook.com/index.php/Notifications.sendRequest

    Saludos.

Leave a Reply