PDA

Ver la Versión Completa : [ SOLUCIONADO ] Tener app abierta


MorSerNa
05/03/15, 17:40:31
Buenas me gustaría tener una app, que pueda notificar aun estando cerrada, tipo Whatsapp

Whatsapp esta cerrado, pero te llegan las notiificaciones

Como puedo hacerlo?

wolfcat90
05/03/15, 17:49:40
Buenas me gustaría tener una app, que pueda notificar aun estando cerrada, tipo Whatsapp

Whatsapp esta cerrado, pero te llegan las notiificaciones

Como puedo hacerlo?
Me ha costado entender a lo que te refieres, pero lo he logrado, se podría explicar así:
"¿Cómo puedo hacer para que una app cerrada envíe notificaciones?"
La respuesta es sencilla, una app de usuario NO puede hacerlo.
Saludos!

MorSerNa
05/03/15, 18:01:36
pongo mi caso:

Tengo un server socket, que me envia (a la app) una serie de datos.
Si uno de los datos supera el valor establecido, me salta una notificacion

kriogeN
05/03/15, 20:26:21
Tendrías que crear un servicio y poner el código del Socket ahí, y un BroadcastReceiver que responda a ACTION_BOOT_COMPLETED para que siempre se lance el servicio cada vez que se inicie el móvil. Además el servicio debería ser START_STICKY, para que si el sistema decide matarlo que se vuelva a relanzar otra vez.

Ten en cuenta que mientras estás esperando a recibir datos por el Socket el móvil se puede dormir, y aunque se despertará si recibe algo por el Socket, puede que no dure mucho, así que lo primero que deberías de hacer después de recibir algo es activar un WakeLock, y justo antes de quedar esperando a recibir algo desactivarlo.

Por último, el servicio funcionará siempre, aunque no abras la app, pero al menos debes abrirla una vez (no puede existir un servicio sin Activity, como poder puede existir, pero nunca se activaría). Y si cierras la app desde la pulsación larga de Home el servicio seguirá funcionando, y siempre se activará cada vez que reinicies el móvil (si pones el BroadcastReceiver). Pero si vas a Opciones -> Aplicaciones y le das a "Forzar detención", tu servicio también se parará, y no se activará nunca más hasta que vuelvas a lanzar otra vez la app.

Espero que te haya quedado todo claro.

MorSerNa
05/03/15, 20:39:14
Tendrías que crear un servicio y poner el código del Socket ahí, y un BroadcastReceiver que responda a ACTION_BOOT_COMPLETED para que siempre se lance el servicio cada vez que se inicie el móvil. Además el servicio debería ser START_STICKY, para que si el sistema decide matarlo que se vuelva a relanzar otra vez.

Ten en cuenta que mientras estás esperando a recibir datos por el Socket el móvil se puede dormir, y aunque se despertará si recibe algo por el Socket, puede que no dure mucho, así que lo primero que deberías de hacer después de recibir algo es activar un WakeLock, y justo antes de quedar esperando a recibir algo desactivarlo.

Por último, el servicio funcionará siempre, aunque no abras la app, pero al menos debes abrirla una vez (no puede existir un servicio sin Activity, como poder puede existir, pero nunca se activaría). Y si cierras la app desde la pulsación larga de Home el servicio seguirá funcionando, y siempre se activará cada vez que reinicies el móvil (si pones el BroadcastReceiver). Pero si vas a Opciones -> Aplicaciones y le das a "Forzar detención", tu servicio también se parará, y no se activará nunca más hasta que vuelvas a lanzar otra vez la app.

Espero que te haya quedado todo claro.

No mucho, lo leeré detenidamente jeje

MorSerNa
05/03/15, 20:41:29
Si pudieramos hablar por MP, sería mas comodo xD

MorSerNa
10/03/15, 10:02:59
Tendrías que crear un servicio y poner el código del Socket ahí, y un BroadcastReceiver que responda a ACTION_BOOT_COMPLETED para que siempre se lance el servicio cada vez que se inicie el móvil. Además el servicio debería ser START_STICKY, para que si el sistema decide matarlo que se vuelva a relanzar otra vez.

Ten en cuenta que mientras estás esperando a recibir datos por el Socket el móvil se puede dormir, y aunque se despertará si recibe algo por el Socket, puede que no dure mucho, así que lo primero que deberías de hacer después de recibir algo es activar un WakeLock, y justo antes de quedar esperando a recibir algo desactivarlo.

Por último, el servicio funcionará siempre, aunque no abras la app, pero al menos debes abrirla una vez (no puede existir un servicio sin Activity, como poder puede existir, pero nunca se activaría). Y si cierras la app desde la pulsación larga de Home el servicio seguirá funcionando, y siempre se activará cada vez que reinicies el móvil (si pones el BroadcastReceiver). Pero si vas a Opciones -> Aplicaciones y le das a "Forzar detención", tu servicio también se parará, y no se activará nunca más hasta que vuelvas a lanzar otra vez la app.

Espero que te haya quedado todo claro.

Vale ya esta todo creado, pero el problema es que necesito que me envie cada X tiempo una notificacion, supongo que esto se hará con un bucle, pero al crearlo, la app se pilla, y si le meto un Thread, cuando cierro la aplicación con el Boton del Home, se detiene el hilo secundario y deja de funcionar. Heeeelp =?

kriogeN
10/03/15, 12:17:09
Ya te he dicho que tienes que hacerlo con un servicio (Service)

MorSerNa
10/03/15, 19:51:55
Realmente tengo una RASPBERRY y cuando la temperatura sea mayor de X grados, quiero que me notifique, no tengo que hacer un bucle dentro del service?

MorSerNa
10/03/15, 20:35:54
Solucionado, Gracias a los dos ^^

Dexafree
11/03/15, 23:46:49
Marcamos como solucionado entonces :ok:

Si quieres aportar algo más de información (algún comentario/explicación sobre como lo realizaste) no dudes en incluirlo ;-)

MorSerNa
12/03/15, 22:24:36
Como bien explicó el compañero, el servicio y en el el socket. Mi error era por poner un Toast dentro del servicio, no se el porque.