martes, 5 de marzo de 2013

Problemas con Apps Phonegap Android y Admob/AirPush

En los últimos meses he estado haciendo pruebas para tratar de mi Monetizar mi app hecha con Phonegap/Cordova. Hasta ahora no he buscado la forma más adecuada para hacerlo, ya que los distintos SDKs tienen algo en común: Trabajan con un Layout XML.
Phonegap/Cordova trabaja con su "propia" implementación de Layout, no haciendo posible la personalización del Ad en tu aplicación.
Estos SDKs que he probado son:
  • AdMob.
  • AirPush.
  • inMobi Android.
  • inMobi javascript.
  • Amazon Ad network SDK.

MobFox: En el caso de Android se requiere de un R y layout personalizados, que como sabemos Phonegap no Usa.
Amazon Ad: El mismo caso que Mobfox.
inMobi Android: El mismo caso de MobFox.
inMobi javascript: En la actualidad, he estado probando con inMobi javascript en la propia app, pero el problema sigue siendo el mismo: El contexto de trabajo Phonegap.
AdMob : Probado con algunos problemas.
AirPush: Probado con serios problemas, que trataremos.
Otros: Ni lo he intentado, ya que SDKs como StartApp son DEMASIADOS intrusivos, llegando a instalar varios iconos y cambiar muchas cosas en el sistema, propias de cualquier virus.

Todos estos SDKs no tendría ni un problema si la App fuera nativa, le problema principal radica en que es Phonegap/Cordova.

El caso de AdMob:

Sus problemas con AdMob radica es que los dos están basados en el Navegador del sistema y AdMob hace peticiones AJAX para cargar el Ad. Empecé a notar problemas con la versión 2.3 de Phonegap cuando las peticiones no llegaban, reduciendo hasta en un %80 las Impresiones del Ad.
También hace un 30% más lenta tu aplicación y en algunos casos la congela.
Otro Grave problema con AdMob, el SDK 6.2.1 y Phonegap 2.5 esel contexto del manejo de la base de datos, cada uno utiliza sqlite de android, Admob para "cachear" sus peticiones y por lógicas razones sabemos para que lo usa, o lo usamos con phonegap.

Aqui la muestra:

03-05 22:47:18.401: E/SQLiteQuery(3441): exception: constraint failed; query: INSERT INTO productos (producto, nombre, medida, nombre_completo, stock_minimo, stock, familia, icono, codigo_de_barras, precio, tipo_de_precio, modificador_de_precio, impuesto_al_consumo, impuesto_especial, synctime) VALUES ( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
03-05 22:47:18.401: W/System.err(3441): android.database.sqlite.SQLiteConstraintException: constraint failed
03-05 22:47:18.410: W/System.err(3441):     at android.database.sqlite.SQLiteQuery.nativeFillWindow(Native Method)
03-05 22:47:18.410: W/System.err(3441):     at android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:86)
03-05 22:47:18.420: W/System.err(3441):     at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:164)
03-05 22:47:18.420: W/System.err(3441):     at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:156)
03-05 22:47:18.420: W/System.err(3441):     at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:161)
03-05 22:47:18.420: W/System.err(3441):     at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:201)
03-05 22:47:18.420: W/System.err(3441):     at org.apache.cordova.Storage.processResults(Storage.java:214)
03-05 22:47:18.430: W/System.err(3441):     at org.apache.cordova.Storage.executeSql(Storage.java:174)
03-05 22:47:18.430: W/System.err(3441):     at org.apache.cordova.Storage.execute(Storage.java:83)
03-05 22:47:18.430: W/System.err(3441):     at org.apache.cordova.api.CordovaPlugin.execute(CordovaPlugin.java:61)
03-05 22:47:18.430: W/System.err(3441):     at org.apache.cordova.api.PluginManager.exec(PluginManager.java:220)
03-05 22:47:18.430: W/System.err(3441):     at org.apache.cordova.ExposedJsApi.exec(ExposedJsApi.java:44)
03-05 22:47:18.440: W/System.err(3441):     at android.webkit.WebViewCore.nativeTouchUp(Native Method)
03-05 22:47:18.453: W/System.err(3441):     at android.webkit.WebViewCore.nativeTouchUp(Native Method)
03-05 22:47:18.460: W/System.err(3441):     at android.webkit.WebViewCore.access$3900(WebViewCore.java:55)
03-05 22:47:18.460: W/System.err(3441):     at android.webkit.WebViewCore$EventHub$1.handleMessage(WebViewCore.java:1378)
03-05 22:47:18.460: W/System.err(3441):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-05 22:47:18.470: W/System.err(3441):     at android.os.Looper.loop(Looper.java:137)
03-05 22:47:18.470: W/System.err(3441):     at android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:728)
03-05 22:47:18.470: W/System.err(3441):     at java.lang.Thread.run(Thread.java:856)
03-05 22:47:18.480: I/System.out(3441): Storage.executeSql(): Error=constraint failed



El Caso AirPush:

Probé con AirPush porque según ellos ofrecen un eCPM mucho mayor, lo cual me parece una mentira, ya que por el tiempo que trabajé con AdMob y AirPush, obtuvieron los mismo ingresos.
AirPush ha sido catalogado como una de las Ad Network más intrusivas he incluso como virus y existen muchas apps para su detección y remoción.
Sin embargo lo decidí probar, pues a diferencia de similares como StartApp tienen una elegancia en su Ads, no pareciendo que el sistema se afecte con ello. Además de tener la forma de desactivarlo por completo.
Tiene los mismos problemas que AdMob en cuanto a la base de datos, con el plus de que es más intrusivo y hace tu programa más lento.

Renders de Phonegap 2.5 + Jquery Mobile:
Sin Ad:


Con Ad:


Bases de datos sin Ad:


Bases de datos con Ad:


 Bases de Datos con admob y airpush...



No en todas las versiones de android pasa lo mismo, de hecho tal vez sea problema de Phonegap, cosa que me deja muy decepcionado pues no tengo ningun ingreso de esto :(...
Cosa curiosa que por la versión que no obtengo ingresos me cueste más trabajo...

Por el momento me queda reportar estos errores y esperar que resuelven, si alguien tiene alguna sugerencia... soy todo droídos...

suerte:

@pata_de_jaguar


No hay comentarios: