Ver la Versión Completa : Problema con Parse.com
Guixe94
30/09/14, 10:45:44
Hola,
Ayer decidi implementar el sdk de parse en mi app para utilizar el sistema de notificaciones y ya tambien las analitycs, segui los pasos que ponia y probre las notificaciones y funciona todo ok.
El problema es que des de que añadi parse cuando abro la app y luego la cierro al cabo de un rato me aparece "MiApp dejo de funcionar" sin abrir la aplicación ni nada.. y me sale un par de veces hasta que vuelvo a abrirla y entonces otra vez.. el problema es que no puedo ver ningun log ni nada.. por que me sale cuando debloqueo la pantalla pero puede ser a los 2 minutos o a los 10...
Pensaba que podria ser por Greenify ese pero lo he desactivado y provado en otro terminal sin este y sigue pasando igual..
A ver si alguien le ha pasado y sabe como solucionarlo..
os dejo el codigo que tengo en mi oncreate:
// PARSEEE //
Parse.initialize(this, "MICLAVE1", "MICLAVE2");
ParseInstallation.getCurrentInstallation().saveInB ackground();
PushService.setDefaultPushCallback(this, MainActivity.class);
ParseAnalytics.trackAppOpened(getIntent());
// FIN PARSE ///
Gracias
kriogeN
30/09/14, 10:53:42
Esos errores ocurren porque hay alguna tarea en segundo plano, temporizada, o Broadcast que intenta acceder a la vista, y como en ese momento la vista no existe porque la Activity está cerrada o la pantalla bloqueada da excepción.
Guixe94
30/09/14, 10:55:21
Esos errores ocurren porque hay alguna tarea en segundo plano, temporizada, o Broadcast que intenta acceder a la vista, y como en ese momento la vista no existe porque la Activity está cerrada o la pantalla bloqueada da excepción.
Y como lo soluciono? lo unico que tengo que trabaje en segundo plano es lo de parse para que reciba las notificaciones cuando las envio.. pero si no envio como hago para que no me salga eso?
Gracias
mocelet
30/09/14, 10:56:14
Supongo que si conectas el móvil por USB podrás ver el log de la app y así sales de dudas. Quizá sea cosa de algún permiso necesario.
Hay una pregunta de stackoverflow sin contestar de alguien que le pasa lo mismo, http://stackoverflow.com/questions/25732143/parse-com-android-push-notifications-x-stopped-working
P.D: ¿Tanto he tardado en contestar que ya hay tres mensajes nuevos? XDDDD
Guixe94
30/09/14, 10:58:16
Supongo que si conectas el móvil por USB podrás ver el log de la app y así sales de dudas. Quizá sea cosa de algún permiso necesario.
Hay una pregunta de stackoverflow sin contestar de alguien que le pasa lo mismo, http://stackoverflow.com/questions/25732143/parse-com-android-push-notifications-x-stopped-working
Si la he visto.. y he mirado a ver si hay alguna con respuesta pero nada..
El problema es el que he dicho que lo conecto al pc y no sale nada.. por que alomejor me sale a los 2 min de utilizarlo o a los 10 o 20.. y me es dificil de pillarlo.. pero probare a ver..
Supongo que es lo que dice kriogen pero ni idea de como solucionarlo.. y menos sin el log
Gracias man
mocelet
30/09/14, 11:00:55
¿Parse tiene algún código que tengas que meter en en el onPause? Igual no se está enterando de que está en reposo.
Guixe94
30/09/14, 11:02:12
¿Parse tiene algún código que tengas que meter en en el onPause? Igual no se está enterando de que está en reposo.
En la documantación solo salian los codigos que he mencionado arriba que se ponen en el oncreate nada mas..
mocelet
30/09/14, 11:18:27
¿Y sin el push activo funciona bien? (solo con el initialize del onCreate) Al fin y al cabo para el tema de la licencia no te hace falta el push, ¿no?
Guixe94
30/09/14, 11:21:34
¿Y sin el push activo funciona bien? (solo con el initialize del onCreate) Al fin y al cabo para el tema de la licencia no te hace falta el push, ¿no?
No, pero me iria bien para promocionar el tema de la licencia gratis.. jeje lo de la licencia sigo sin encontrar como importar la libreria en Android Studio.. ya que no es un .jar..
Con el telefono enchufado de momento no me ha salido el error pero si he visto que me ha echo esto en segundo plano:
09-30 11:09:35.927 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):getSBService() is false
09-30 11:09:35.927 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):SMARTBONDING_ENABLED is false
09-30 11:09:35.937 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):Resquest instance of HttpUriRequesttrue
09-30 11:09:35.937 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):determineRoute Local address : null
09-30 11:09:35.987 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):Inside DefaultClientConnectionOperator.openConnection()
09-30 11:09:35.987 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):start to get IP for host api.parse.com at time 1412068175992
09-30 11:09:36.047 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):finish to get IP for host api.parse.com at time 1412068176058, result number 8
09-30 11:09:36.057 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):DefaultClientConnectionOperator.o penConnection()InetAddress.getAllByName length:8
09-30 11:09:36.217 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):DefaultClientConnectionOperator.o penConnection() connsock Socket[address=/54.164.243.32,port=443,localPort=45482]
09-30 11:09:36.847 13731-16239/com.barwill94.wikicraft D/dalvikvm﹕ GC_FOR_ALLOC freed 1152K, 7% free 27450K/29512K, paused 110ms, total 125ms
09-30 11:09:37.077 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):Servers selected Ip address is : 54.164.243.32
09-30 11:09:37.297 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):HttpClientParams.isRedirecting(pa rams) : false
09-30 11:09:37.297 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2(ApacheHTTPLog):this.redirectHandler.isRedirectRe quested(response, context) : false
09-30 11:09:37.297 13731-16239/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-2 calls detatch()
09-30 11:09:37.347 13731-16244/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-3(ApacheHTTPLog):getSBService() is false
09-30 11:09:37.347 13731-16244/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-3(ApacheHTTPLog):SMARTBONDING_ENABLED is false
09-30 11:09:37.357 13731-16244/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-3(ApacheHTTPLog):Resquest instance of HttpUriRequesttrue
09-30 11:09:37.357 13731-16244/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-3(ApacheHTTPLog):determineRoute Local address : null
09-30 11:09:38.627 13731-16244/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-3(ApacheHTTPLog):HttpClientParams.isRedirecting(pa rams) : false
09-30 11:09:38.627 13731-16244/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-3(ApacheHTTPLog):this.redirectHandler.isRedirectRe quested(response, context) : false
09-30 11:09:38.697 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):getSBService() is false
09-30 11:09:38.697 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):SMARTBONDING_ENABLED is false
09-30 11:09:38.697 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):Resquest instance of HttpUriRequesttrue
09-30 11:09:38.697 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):determineRoute Local address : null
09-30 11:09:38.707 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):Inside DefaultClientConnectionOperator.openConnection()
09-30 11:09:38.707 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):start to get IP for host api.parse.com at time 1412068178714
09-30 11:09:38.727 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):finish to get IP for host api.parse.com at time 1412068178731, result number 8
09-30 11:09:38.727 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):DefaultClientConnectionOperator.o penConnection()InetAddress.getAllByName length:8
09-30 11:09:38.887 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):DefaultClientConnectionOperator.o penConnection() connsock Socket[address=/54.164.243.32,port=443,localPort=45483]
09-30 11:09:39.067 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):Servers selected Ip address is : 54.164.243.32
09-30 11:09:39.267 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):HttpClientParams.isRedirecting(pa rams) : false
09-30 11:09:39.267 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4(ApacheHTTPLog):this.redirectHandler.isRedirectRe quested(response, context) : false
09-30 11:09:39.267 13731-16249/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-4 calls detatch()
09-30 11:09:39.327 13731-16253/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-5(ApacheHTTPLog):getSBService() is false
09-30 11:09:39.327 13731-16253/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-5(ApacheHTTPLog):SMARTBONDING_ENABLED is false
09-30 11:09:39.327 13731-16253/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-5(ApacheHTTPLog):Resquest instance of HttpUriRequesttrue
09-30 11:09:39.327 13731-16253/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-5(ApacheHTTPLog):determineRoute Local address : null
09-30 11:09:39.527 13731-16253/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-5(ApacheHTTPLog):HttpClientParams.isRedirecting(pa rams) : false
09-30 11:09:39.527 13731-16253/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-5(ApacheHTTPLog):this.redirectHandler.isRedirectRe quested(response, context) : false
09-30 11:09:39.527 13731-16253/com.barwill94.wikicraft I/System.out﹕ ParseRequest.NETWORK_EXECUTOR-thread-5 calls detatch()
Guixe94
30/09/14, 11:32:17
Y aqui el error que me acaba de salir, este es el log:
09-30 11:31:18.017 17179-17179/com.barwill94.wikicraft I/SELinux﹕ Function: selinux_android_load_priority [0], There is no sepolicy file.
09-30 11:31:18.017 17179-17179/com.barwill94.wikicraft I/SELinux﹕ Function: selinux_android_load_priority [1], There is no sepolicy version file.
09-30 11:31:18.017 17179-17179/com.barwill94.wikicraft I/SELinux﹕ Function: selinux_android_load_priority , loading version is VE=SEPF_SM-N9005_4.4.2_0005
09-30 11:31:18.017 17179-17179/com.barwill94.wikicraft I/SELinux﹕ selinux_android_seapp_context_reload: seapp_contexts file is loaded from /seapp_contexts
09-30 11:31:18.027 17179-17179/com.barwill94.wikicraft D/dalvikvm﹕ Late-enabling CheckJNI
09-30 11:31:18.097 17179-17179/com.barwill94.wikicraft D/AndroidRuntime﹕ Shutting down VM
09-30 11:31:18.097 17179-17179/com.barwill94.wikicraft W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41701da0)
09-30 11:31:18.097 17179-17179/com.barwill94.wikicraft E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.barwill94.wikicraft, PID: 17179
java.lang.RuntimeException: Unable to start receiver com.parse.ParseBroadcastReceiver: java.lang.RuntimeException: applicationContext is null. You must call Parse.initialize(context, applicationId, clientKey) before using the Parse library.
at android.app.ActivityThread.handleReceiver(Activity Thread.java:2521)
at android.app.ActivityThread.access$1700(ActivityThr ead.java:157)
at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1323)
at android.os.Handler.dispatchMessage(Handler.java:10 2)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.jav a:5293)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:1081)
at de.robv.android.xposed.XposedBridge.main(XposedBri dge.java:132)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: applicationContext is null. You must call Parse.initialize(context, applicationId, clientKey) before using the Parse library.
at com.parse.Parse.checkContext(Parse.java:583)
at com.parse.Parse.getApplicationContext(Parse.java:1 91)
at com.parse.ManifestInfo.getContext(ManifestInfo.jav a:241)
at com.parse.ManifestInfo.getPackageManager(ManifestI nfo.java:249)
at com.parse.ManifestInfo.getPackageInfo(ManifestInfo .java:272)
at com.parse.ManifestInfo.deviceSupportsGcm(ManifestI nfo.java:357)
at com.parse.ManifestInfo.getPushType(ManifestInfo.ja va:129)
at com.parse.PushService.startServiceIfRequired(PushS ervice.java:150)
at com.parse.ParseBroadcastReceiver.onReceive(ParseBr oadcastReceiver.java:19)
at android.app.ActivityThread.handleReceiver(Activity Thread.java:2514)
************at android.app.ActivityThread.access$1700(ActivityThr ead.java:157)
************at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1323)
************at android.os.Handler.dispatchMessage(Handler.java:10 2)
************at android.os.Looper.loop(Looper.java:157)
************at android.app.ActivityThread.main(ActivityThread.jav a:5293)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:515)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:1265)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:1081)
************at de.robv.android.xposed.XposedBridge.main(XposedBri dge.java:132)
************at dalvik.system.NativeStart.main(Native Method)
mocelet
30/09/14, 11:33:31
El problema debe ser el saveInBackground ParseInstallation.getCurrentInstallation().saveInB ackground();
¿Eso para qué hace falta? Si quieres push no te hace falta, y para la licencia tampoco.
De todas formas, habrás visto que parse es gratis hasta ciertos límites, yo lo usaría solo al activar la licencia. Para promocionar que tienes contenido de pago puedes usar un anuncio in-house de admob por ejemplo, o hacerte tu propio layout. Tener notificaciones solo para hacer publicidad no gusta a los usuarios demasiado.
P.D: Ahí tienes la solución: https://parse.com/questions/android-push-notification-error-msg
kriogeN
30/09/14, 11:40:13
Al final es lo que te decía yo:
"applicationContext is null"
Llega un momento en el que la aplicación no existe pero el servicio está en ejecución y por eso falla, tiene que haber algún código que tendrás que poner en el OnDestroy para que el servicio pare. Aunque es muy raro que esto ocurra, siempre el ApplicationContext debería estar activo si hay algo en ejecución relacionado con el.
EDITO: Vale, ya he encontrado el problema, el applicationContext que te está dando error es el del getApplicationContext del Parse, que lo asigna durante el Initialize.
Como la aplicación ha muerto cuando recibes una notificación el Parse que se crea en ese ApplicationContext es nuevo, y tendrías que inicializarlo.
Crea un Application, configuralo en el Manifest, y pon el código en el OnCreate del Application y quitalo de la Activity. Debería funcionarte.
Guixe94
30/09/14, 11:41:38
He probado a quitar lo de ParseInstallation.getCurrentInstallation().saveInB ackground();
a ver si me vuelve a salir..
Gracias chicos por el tiempo y las respuestas ;)
mocelet
30/09/14, 11:46:13
¿Esto Parse.initialize(this, "MICLAVE1", "MICLAVE2"); lo tienes en el onCreate de tu activity o de la application? En el enlace que te ponía antes comentaban que podía ser la razón
Guixe94
30/09/14, 11:50:34
¿Esto Parse.initialize(this, "MICLAVE1", "MICLAVE2"); lo tienes en el onCreate de tu activity o de la application? En el enlace que te ponía antes comentaban que podía ser la razón
Lo tengo en la Actividad principal en el oncreate, no acabo de comprender muy bien lo del enlace, lo tengo mal puesto?
En las instrucciones ponia que tenia que insertarlo en el oncreate de mi actividad principal si no recuerdo mal
mocelet
30/09/14, 11:51:49
Te lo acaba de explicar kriogeN muy bien en su respuesta editada más arriba :)
P.D: Y en las instrucciones pone "Call Parse.initialize from the onCreate method of your Application class to set your application id and client key"
Guixe94
30/09/14, 11:54:56
Vale gracias kriogen no lo había visto que estaba editado, la aplication como la creo en android studio? no se muy bien que es.. :S
kriogeN
30/09/14, 12:02:37
El Application es una clase igual que el Activity o cualquier otra, sólo puede haber una por aplicación (al menos una activa).
Tienes que crear una clase que herede de Application y en el OnCreate poner el código que quieras que esté siempre disponible en la aplicación, independientemente de que sea iniciada por una Activity, un servicio o un Receiver (como es este caso, al ser una notificación Push).
Después en el Manifest tienes que decir que el contexto Application va a usar tu objeto, poniendo un android:name en la sección Application:
<application
android:name="cc.eisi.eisilock.EisiLockApplication"
Ese es un ejemplo de una aplicación que estoy ahora mismo desarrollando.
Además de permitirte hacer inicializaciones globales para toda la aplicación, también es muy útil para tener objetos que quieras que estén disponibles durante todo la aplicación y poder ser llamada desde cualquier Activity.
Guixe94
30/09/14, 12:15:21
El Application es una clase igual que el Activity o cualquier otra, sólo puede haber una por aplicación (al menos una activa).
Tienes que crear una clase que herede de Application y en el OnCreate poner el código que quieras que esté siempre disponible en la aplicación, independientemente de que sea iniciada por una Activity, un servicio o un Receiver (como es este caso, al ser una notificación Push).
Después en el Manifest tienes que decir que el contexto Application va a usar tu objeto, poniendo un android:name en la sección Application:
<application
android:name="cc.eisi.eisilock.EisiLockApplication"
Ese es un ejemplo de una aplicación que estoy ahora mismo desarrollando.
Además de permitirte hacer inicializaciones globales para toda la aplicación, también es muy útil para tener objetos que quieras que estén disponibles durante todo la aplicación y poder ser llamada desde cualquier Activity.
Tengo este error:
java.lang.RuntimeException: Unable to start receiver com.parse.ParseBroadcastReceiver: java.lang.RuntimeException: applicationContext is null. You must call Parse.initialize(context, applicationId, clientKey) before using the Parse library.
Lo que he echo a sido lo siguiente he creado PushNotifications.java con lo siguiente:
public class PushNotifications extends Application {
public void onCreate(Bundle savedInstanceState) {
// PARSEEE //
Parse.initialize(this, "clave", "dclave");
ParseInstallation.getCurrentInstallation().saveInB ackground();
PushService.setDefaultPushCallback(this, MainActivity.class);
// FIN PARSE ///
}
}
y en el mainfest en el tag <application he añadido esto asi:
<application
android:name=".PushNotifications"
Pero no me abre la app me sale ese error..
kriogeN
30/09/14, 12:26:41
El onCreate del Application no tiene savedInstanceState, porque no hay nada que guardar y recuperar, sólo se ejecuta la primera vez cuando no hay nada.
@Override
public void onCreate() {
Guixe94
30/09/14, 12:29:14
El onCreate del Application no tiene savedInstanceState, porque no hay nada que guardar y recuperar, sólo se ejecuta la primera vez cuando no hay nada.
@Override
public void onCreate() {
Es verdad, muchas gracias!
Ya funciona ahora espero que no me salga mas el error.. jeje
Saludos!
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.