Spanish Sugerencia de modelo de negocios para tu App.

vbmundo

Well-Known Member
Licensed User
Amigos,

Quiero en esta oportunidad dejar un consejo, producto de mil preguntas que me he hecho acerca de como aprovechar al máximo nuestras APPs y ganar dinero.

He descartado el uso de AddMoB, por varios motivos..

  1. el SDK de Google Admob pesa muchísimo, haciendo nuestra APP muy pesada.
  2. Luego de mis mas de 8 años en el mundo de la publicidad Online (fui dueño de una Adnetwork por 5 años) se que a no ser de que tu App tenga millones de usuarios, no harás gran cantidad de dinero.
  3. La demora de carga de la publicidad a veces espanta a los Usuarios o terminan saliendo de la misma sin que sea cargado el Banner.
  4. La publicidad que comunmente aparece nada tiene que ver con la temática de nuestra App.
Debes determinar si tu App será gratuita o de pago..

Mi modelo preferido es una App Gratuita y luego lanzar una versión PRO con muchas mas funcionalidades pero de Pago.

Pero como puedes hacer para que tus usuarios FREE se enteren desde tu APP FREE que has lanzado una versión PRO ?

Es simple... y esto que explicaré no solo sirve para promocionar nuestra APP PRO, sino que sirve para todo tipo de acuerdo publicitario o hasta para publicitar otra aplicación nuestra FREE, etc.

Que haremos ?

Adicionaremos un ImageView al Activity que deseemos.

Le daremos un tamaño de 300x90 y lo llamaremos Banner

Necesitamos un Servidor remoto que nos provea de una Base MySQL (puede ser gratuito o pago)

Necesitaremos usar algunos controles que descargaremos desde este foro.

Por ejemplo el ImageDownloader

https://www.b4x.com/android/forum/threads/imagedownloader-the-simple-way-to-download-images.30875/

Necesitaremos crear el archivo php (se puede copiar y pegar el que Erel incluye como ejemplo en el siguiente link)

https://www.b4x.com/android/forum/threads/connect-android-to-mysql-database-tutorial.8339/#content

Crearemos una Tabla en nuestra BD y la llamaremos como deseemos, le incluiremos 3 campos..

  • Banner_Id (Int )
  • Banner_Nombre (Varchar 50)
  • Banner_Link (Varchar 100)
Crearemos en el servidor remoto, una carpeta por cada aplicación que tengamos y queramos incluir nuestro banner.. y dentro un archivo PHP con los datos de conexión a nuestra BD y crearemos un JPG con el banner que queremos mostrar.

La idea es que nuestra aplicación, detecte el JPG remotamente y con el ImageDownloader baje ese JPG a nuestro ImageView

Pero ese ImageView debe ejecutar un llamado a una URL cuando le hagamos Click, así que para eso nos sirve la conexión a la BD remota.. para simplemente capturar a que URL tiene que dirigir cuando nuestros usuarios hagan click.

Que se hace de esta forma

B4X:
Sub Banner_Click
      Dim p as PhoneIntents
      p.OpenBrowser(miLink)
End Sub

Y listo...

VENTAJAS DE ESTE MODELO

  1. Nos permite remotamente impactar con nuevos banners en aplicaciones que ya fueron descargadas hace mucho tiempo , sin que el usuario tenga que instalar nuevas versiones de la misma.
  2. La carga del ImageView es extremadamente mas rápida que la publicidad convencional sin demorar la App.
  3. Nos permite llegar a todos nuestros usuarios, de una o varias Apps. mostrándoles el contenido que nosotros determinemos, pudiendo también aprovecharse con Promociones CPA con Link Directo... (ej. Podremos mostrar una Promoción de Juegos CPA si sabemos que el publico de nuestra aplicación es Afin a los Juegos).
  4. Podemos hacer nuestro ImageView Invisible simplemente quitando el Link de nuestra BD (ej. If miLink.text.length=0 then Banner.visible=False )
  5. Imagina que tienes 10 Apps y entre todas sumas 100.000 Instalaciones, puedes promocionar el mismo contenido en todas, en solo 1 minuto.
  6. El peso de tu APP no sufre alteraciones, ya que no se instalan pesados SDKs y la calidad de tu aplicación no decae al no aparecer publicidad NO DESEADA.

SI un % considerable de tu version FREE termina comprando tu versión PRO, habrás ganado muy bueno dinero.. pero para que eso ocurra, los usuarios FREE deben enterarse de tus nuevas versiones.

Saludos




 

rscheel

Well-Known Member
Licensed User
Longtime User
Esta buena la explicación, la pregunta es por que no usar un webview?
 

vbmundo

Well-Known Member
Licensed User
Esta buena la explicación, la pregunta es por que no usar un webview?

Estéticamente no es lo mismo. ademas, el Webview no tiene evento CLICK.

La carga es mucho mas pesada con un WebView y los clicks que hagas dentro solo recargaran ese pequeño recuadro.. no es lo mismo que un ImageView que se cargará muy rapido... el mio carga una imagen de 6.5 kb en 1 segundo..

Pero básicamente tienes que entender que al no tener evento CLICK se complica.

Saludos
 

rscheel

Well-Known Member
Licensed User
Longtime User
Estéticamente no es lo mismo. ademas, el Webview no tiene evento CLICK.

La carga es mucho mas pesada con un WebView y los clicks que hagas dentro solo recargaran ese pequeño recuadro.. no es lo mismo que un ImageView que se cargará muy rapido... el mio carga una imagen de 6.5 kb en 1 segundo..

Pero básicamente tienes que entender que al no tener evento CLICK se complica.

Saludos

Hay una librería que se llama si no me equivoco webview extras.
 

rscheel

Well-Known Member
Licensed User
Longtime User
Creeme esta solución es el Santo Grial.. tendrás el poder absoluto de todas tus publicaciones y con solo cambiar un JPG y un Link en tu tabla de MySQL ya estarás ONLINE con tus usuarios

Voy a probar haber como me va, ahí te cuento.

Gracias.
 

Dadaista

Active Member
Licensed User
Longtime User
Hola
El imageview cuando lo muestras? Hay que utilizar un timer no? y sacarlo cada cierto tiempo.... Se cierra solo?

Puedes poner codigo de ejemplo por favor?... esto es muy interesante para promocionar cualquier cosa, no solo apps :rolleyes:
 

vbmundo

Well-Known Member
Licensed User
Voy a dejar el código completo y explicado para que puedan comprenderlo.

En primer lugar, deben crear en una BD remota, la tabla necesaria. en este caso yo la he llamado ANDROID

Android1.jpg



Luego en tu Servidor creas las carpetas que consideres correctas para separar esto del resto de tu sitio web y así poder administrar mas eficientemente.

En mi caso , y al ser mi primera aplicación, le asigné el numero 1.

Android2.jpg



Entonces, que es lo que tiene ese archivo PHP que ejecutaremos desde nuestra Aplicación ?

B4X:
<?

$databasehost = "<tus datos>";
$databasename = "<tus datos>";
$databaseusername ="<tus datos>";
$databasepassword = "<tus datos>";

$con = mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
mysql_select_db($databasename) or die(mysql_error());
mysql_query("SET CHARACTER SET utf8");
$query = file_get_contents("php://input");
$sth = mysql_query($query);

if (mysql_errno()) {
    header("HTTP/1.1 500 Internal Server Error");
    echo $query.'\n';
    echo mysql_error();
}
else
{
    $rows = array();
    while($r = mysql_fetch_assoc($sth)) {
        $rows[] = $r;
    }
    print json_encode($rows);
}
?>

Este Web Service es el que invocarás desde tu APP y le correrás la Sentencia SQL que leerá la Tabla capturando el link de destino de tu Banner.

Ahora vamos a la APP B4A.

Debes tener las siguientes librerías en tu proyecto.

Android3.jpg


Y meter este código en tu Activity (donde meterás el Banner)

B4X:
Sub ExecuteRemoteQuery(Sentencia As String, JobName As String)
    Dim job As HttpJob
    job.Initialize(JobName, Me)
    job.PostString("http://www.vb-mundo.com/BannerAndroid/SuperMySQL/1.php", Sentencia) ' Aqui reemplazas mi archivo php por la URL de tu PHP
End Sub

Sub JobDone(Job As HttpJob)
    ProgressDialogHide
    If Job.Success Then
    Dim res As String
        res = Job.GetString
        Log("Response from server: " & res)
        Dim parser As JSONParser
        parser.Initialize(res)
        Dim Links As List
        Links = parser.NextArray 'returns a list with maps
        Dim m As Map
        m = Links.Get(0)
        Starter.LinkBanner=m.Get("Android_Link")
    End If
    Job.Release
End Sub

El Link de la URL destino la guardo en STARTER para que pueda estar disponible en toda la APP sin necesitar volver a ejecutar el PHP

Estas rutinas, conectarán con tu Base de Datos, y básicamente una vez que las has incorporado, no necesitarás modificarlas.

Pero ahora vamos a la parte donde le pasamos la Sentencia SQL a esas rutinas, para poder leer el valor del LINK de URL de Destino.

B4X:
Sub Activity_Resume
    ExecuteRemoteQuery("SELECT Android_Link FROM android WHERE Android_AppId=1", Link)
    If Starter.LinkBanner.Trim.Length>0 Then CargoBanner
End Sub

Ahi tienes un dato revelador !!!

SI UN DIA QUIERES BORRAR TU BANNER Y QUE INSTANTANEAMENTE DESAPAREZCA DE TODAS LOS MOVILES QUE EJECUTEN TU APP.. SIMPLEMENTE PONES EN BLANCO EL CAMPO "ANDROID_LINK" para la APP 1.



Y ahora, debes usar otras librerias y un modulo de clase para que tu IMAGEVIEW se cargue con el archivo que has subido al servidor (en mi caso 1.jpg)

Android4.jpg


Yo lo he definido de 300x90 para que sea un Banner Standard y pueda verse tanto en un Movil como en una Tablet. y además para que no pese tanto.

Si te fijas, solo pesa 6 Kb.

Pero vamos a las Rutinas del ImageDownloader.

debes descargarte el archivo desde este link
https://www.b4x.com/android/forum/t...-simple-way-to-download-images.30875/#content

Y luego en tu Aplicación, "Add Existing Modules" incorporando ese archivo .BAS a tu proyecto

En la APP incluyes estos SUBS

B4X:
Sub CargoBanner
    Dim m As Map
    Banner.Visible=True
    m.Initialize
    m.Put(Banner,"http://www.vb-mundo.com/BannerAndroid/SuperMySQL/1.jpg") ' Aqui la URL de tu archivo JPG para la APP nr.1
    CallSubDelayed2(ImageDownloader, "Download", m)
End Sub

Sub Banner_Click
Dim p As PhoneIntents
    StartActivity(p.OpenBrowser(Starter.LinkBanner))
End Sub

Como verás en conclusión...

Tu remotamente eres el DIOS que decide cuando y que imagen verán los usuarios, a que URL serán redirigidos, y sobre todo.. no necesitarán instalar una nueva versión cuando decidas cambiar... impactará instantaneamente a todos los que tengan tu APP instalada.

Y tu decides cuando el Banner aparecerá o no.. simplemente quitando o colocando una URL en el campo ANDROID_LINK de tu Base de Datos.

Espero que haya sido claro..

Y si te ha gustado... DEJAME UN LIKE !!!

Saludos
 

rscheel

Well-Known Member
Licensed User
Longtime User
Voy a dejar el código completo y explicado para que puedan comprenderlo.

En primer lugar, deben crear en una BD remota, la tabla necesaria. en este caso yo la he llamado ANDROID

Android1.jpg



Luego en tu Servidor creas las carpetas que consideres correctas para separar esto del resto de tu sitio web y así poder administrar mas eficientemente.

En mi caso , y al ser mi primera aplicación, le asigné el numero 1.

Android2.jpg



Entonces, que es lo que tiene ese archivo PHP que ejecutaremos desde nuestra Aplicación ?

B4X:
<?

$databasehost = "<tus datos>";
$databasename = "<tus datos>";
$databaseusername ="<tus datos>";
$databasepassword = "<tus datos>";

$con = mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
mysql_select_db($databasename) or die(mysql_error());
mysql_query("SET CHARACTER SET utf8");
$query = file_get_contents("php://input");
$sth = mysql_query($query);

if (mysql_errno()) {
    header("HTTP/1.1 500 Internal Server Error");
    echo $query.'\n';
    echo mysql_error();
}
else
{
    $rows = array();
    while($r = mysql_fetch_assoc($sth)) {
        $rows[] = $r;
    }
    print json_encode($rows);
}
?>

Este Web Service es el que invocarás desde tu APP y le correrás la Sentencia SQL que leerá la Tabla capturando el link de destino de tu Banner.

Ahora vamos a la APP B4A.

Debes tener las siguientes librerías en tu proyecto.

Android3.jpg


Y meter este código en tu Activity (donde meterás el Banner)

B4X:
Sub ExecuteRemoteQuery(Sentencia As String, JobName As String)
    Dim job As HttpJob
    job.Initialize(JobName, Me)
    job.PostString("http://www.vb-mundo.com/BannerAndroid/SuperMySQL/1.php", Sentencia) ' Aqui reemplazas mi archivo php por la URL de tu PHP
End Sub

Sub JobDone(Job As HttpJob)
    ProgressDialogHide
    If Job.Success Then
    Dim res As String
        res = Job.GetString
        Log("Response from server: " & res)
        Dim parser As JSONParser
        parser.Initialize(res)
        Dim Links As List
        Links = parser.NextArray 'returns a list with maps
        Dim m As Map
        m = Links.Get(0)
        Starter.LinkBanner=m.Get("Android_Link")
    End If
    Job.Release
End Sub



Estas rutinas, conectarán con tu Base de Datos, y básicamente una vez que las has incorporado, no necesitarás modificarlas.

Pero ahora vamos a la parte donde le pasamos la Sentencia SQL a esas rutinas, para poder leer el valor del LINK de URL de Destino.

B4X:
Sub Activity_Resume
    ExecuteRemoteQuery("SELECT Android_Link FROM android WHERE Android_AppId=1", Link)
    If Starter.LinkBanner.Trim.Length>0 Then CargoBanner
End Sub

Ahi tienes un dato revelador !!!

SI UN DIA QUIERES BORRAR TU BANNER Y QUE INSTANTANEAMENTE DESAPAREZCA DE TODAS LOS MOVILES QUE EJECUTEN TU APP.. SIMPLEMENTE PONES EN BLANCO EL CAMPO "ANDROID_LINK" para la APP 1.



Y ahora, debes usar otras librerias y un modulo de clase para que tu IMAGEVIEW se cargue con el archivo que has subido al servidor (en mi caso 1.jpg)

Android4.jpg


Yo lo he definido de 300x90 para que sea un Banner Standard y pueda verse tanto en un Movil como en una Tablet. y además para que no pese tanto.

Si te fijas, solo pesa 6 Kb.

Pero vamos a las Rutinas del ImageDownloader.

debes descargarte el archivo desde este link
https://www.b4x.com/android/forum/t...-simple-way-to-download-images.30875/#content

Y luego en tu Aplicación, "Add Existing Modules" incorporando ese archivo .BAS a tu proyecto

En la APP incluyes estos SUBS

B4X:
Sub CargoBanner
    Dim m As Map
    Banner.Visible=True
    m.Initialize
    m.Put(Banner,"http://www.vb-mundo.com/BannerAndroid/SuperMySQL/1.jpg") ' Aqui la URL de tu archivo JPG para la APP nr.1
    CallSubDelayed2(ImageDownloader, "Download", m)
End Sub

Sub Banner_Click
Dim p As PhoneIntents
    StartActivity(p.OpenBrowser(Starter.LinkBanner))
End Sub

Como verás en conclusión...

Tu remotamente eres el DIOS que decide cuando y que imagen verán los usuarios, a que URL serán redirigidos, y sobre todo.. no necesitarán instalar una nueva versión cuando decidas cambiar... impactará instantaneamente a todos los que tengan tu APP instalada.

Y tu decides cuando el Banner aparecerá o no.. simplemente quitando o colocando una URL en el campo ANDROID_LINK de tu Base de Datos.

Espero que haya sido claro..

Y si te ha gustado... DEJAME UN LIKE !!!

Saludos

Estimado un concejo no utilice mysql para conexiones a bd desde php, utlice MYSQLI o PDO, ya que mysql esta obsoleto en las nuevas versiones de php.
 

vbmundo

Well-Known Member
Licensed User
Estimado un concejo no utilice mysql para conexiones a bd desde php, utlice MYSQLI o PDO, ya que mysql esta obsoleto en las nuevas versiones de php.

Ok, gracias

Por ahora mis bases soportan PHP, pero es bueno el dato para quienes tengan nuevas versiones de PHP.

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola Pablo, buen aporte.

Yo empleo otro sistema que hace que la App no gaste datos en consultar si hay publicidad (o lo que quieras), y no necesitas de bases de datos, php... solo un servidor que aloje las imagenes que incluso puede estar en la nube.
Para actualizar esa publicidad se lo digo por mensajeria instantanea (GCM), y cuando el usuario entra en la aplicación se baja la imagen o imágenes, ya que tambien puedo hacer un carrusel. Pero como se dice aqui: "cada maestrillo tiene su librillo".

Dos apuntes:

Con respecto a lo que te apuntó Rscheel sobre el Webview y que tu respondiste:
Estéticamente no es lo mismo. ademas, el Webview no tiene evento CLICK.

Si el problema es por el evento Click, te recuerdo que si pones un panel transparente encima del WebView podras capturar los eventos Click, LongClick y Touch ;)

Y si te ha gustado... DEJAME UN LIKE !!!
Este apunte es para que te lo apuntes con el resto del foro que te ayuda .... :D
Si miras esto quizas lo entiendas mejor:
https://www.b4x.com/android/forum/threads/mejorar-el-foro-“spanish-forum”.39799/#post-275269

Y dos Post después tambien.

Saludos
 

vbmundo

Well-Known Member
Licensed User
Entiendo amigo

Pero tengo 14 años como Administrador de un foro y se lo que los usuarios son capaces, por eso de pedir "Gracias" nada.. ya me resigné de haber ayudado y contestado a miles y miles por un "NADA"

Al menos un LIKE no se le niega a nadie y solo cuesta un CLICK !! jaja
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Al menos un LIKE no se le niega a nadie y solo cuesta un CLICK !! jaja

Pues ya sabes, predica con el ejemplo :D

Saludos
 

dar2o3

Active Member
Licensed User
Longtime User
Jajajajaja. Creo que este es el único foro donde soy un poquito activo, soy un poco ermitaño, para que vale tener likes? yo lo utilizo como medio para reconocerle a alguien la molestia de compartir sus conocimientos para ayudar a alguien pero... ¿tiene alguna otra finalidad?
 

vbmundo

Well-Known Member
Licensed User
Jajajajaja. Creo que este es el único foro donde soy un poquito activo, soy un poco ermitaño, para que vale tener likes? yo lo utilizo como medio para reconocerle a alguien la molestia de compartir sus conocimientos para ayudar a alguien pero... ¿tiene alguna otra finalidad?

Costumbres que uno adquiere cuando fue tocado por el mundo del Marketing.

Tuve por 5 años una ADNETWORK muy premiada.. luego tuve que venderla. y la Publicidad es todo.

Los Likes te dan una medalla que ante la vista de algunos, te da un prestigio..y si en tu firma luego quieres promocionar tus APPs, los Likes ayudan.

No es algo muy notorio, es mas bien SUTIL, pero todo suma..

Confia en el lado oscuro de la fuerza !!

Saludos
 
Top