Cómo ejecutar GcmListenerService en primer plano
Tengo un problema a veces con mi servicio de GCM que está cerrado cuando la memoria RAM de mi teléfono inteligente se borra automáticamente (lea esto si necesita más detalles).
Por lo que entiendo si configuro mi servicio para ejecutar en primer plano, debería ayudar al sistema a eliminarlo con RAM. El método de onStartCommand()
suele utilizarse para ejecutar el método startForeground()
.
- La importación com.google.android.gms.gcm.GoogleCloudMessaging no se puede resolver
- Intención de difusión cancelada. GCM de Android
- Mostrar varias líneas en la notificación push android Phonegap
- Problemas para implementar el nuevo cliente de GCM para Android
- ¿La carga útil 4096 bytes incluye la longitud registration_id?
Pero con la última versión de la implementación de GCM es imposible ya que el método onStartCommand()
de la GCMListenerService.class
se define como final y no puedo anularlo.
Entonces, ¿cómo puedo configurar mi receptor gcm a ron en primer plano?
Aquí está mi parte manifiesta sobre GCM.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.app.path" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <!-- ... other permissions --> <permission android:name="my.app.path.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="my.app.path.permission.C2D_MESSAGE" /> <application ...> <!-- ... activites... --> <receiver android:name="com.google.android.gms.gcm.GcmReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="my.app.path" /> </intent-filter> </receiver> <service android:name=".MyGcmListener" android:exported="false" android:enabled="true" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> </intent-filter> </service> </application> </manifest>
Gracias de antemano.
- Cómo obtener RegistrationID usando GCM en android
- ¿Cómo enviar notificaciones a la aplicación de Android desde el servidor de Java mediante GCM?
- ¿Cómo soluciono el error MMUMapper?
- Android: abre o reinicia la aplicación después de hacer clic en la notificación push mediante las actividades de bandera
- GCM Error = MissingRegistration enviando mensajes vía JSON
- Enviar notificación de carga con nodo-gcm al dispositivo android
- Cómo implementar un GCM Hello World para Android con Android Studio
- Cómo verificar el ID del remitente de GCM de deviceToken en Parse.com
Esta pregunta es bastante antigua, pero creo que vale la pena responder por el beneficio de los futuros lectores.
Con GCM (o el nuevo FCM) NO NECESITA mantener GCMListenerService en primer plano.
De hecho, no hay necesidad de mantener la aplicación en marcha en absoluto.
Cuando el sistema recibe un mensaje GCM, se iniciará la aplicación y se ejecutará el servicio relevante (GCMListenerService en GCM o FirebaseMessagingService en FCM).
La verdadera cuestión planteada por este post es:
Los mensajes GCM no llegan cuando la aplicación no se está ejecutando.
Esto se debe a una característica especial de xiaomi que bloquea los mensajes de GCM.
Vea: Autostar lista blanca dentro de la sección Seguridad.
http://en.miui.com/thread-117992-1-1.html
- Google Map falla con recursos $ NotFoundException cuando se reemplaza en FrameLayout
- Creando video de secuencia de imagenes javacv