GCM: Cómo enviar latido al servidor GCM

Quiero enviar un latido de mi aplicación al servidor GCM, para que la conexión se mantenga viva.

¿Cómo puedo hacer eso, y cómo puedo saber la URL de mi servidor de GCM ??

¡¡Gracias por adelantado!!

Cómo enviar el latido del corazón

Esta clase puede enviar las intenciones apropiadas

public class GcmKeepAlive { protected CountDownTimer timer; protected Context mContext; protected Intent gTalkHeartBeatIntent; protected Intent mcsHeartBeatIntent; public GcmKeepAlive(Context context) { mContext = context; gTalkHeartBeatIntent = new Intent( "com.google.android.intent.action.GTALK_HEARTBEAT"); mcsHeartBeatIntent = new Intent( "com.google.android.intent.action.MCS_HEARTBEAT"); } public void broadcastIntents() { System.out.println("sending heart beat to keep gcm alive"); mContext.sendBroadcast(gTalkHeartBeatIntent); mContext.sendBroadcast(mcsHeartBeatIntent); } } 

si sólo desea enviar el latido del corazón puede hacer lo siguiente en una actividad

 GcmKeepAlive gcmKeepAlive = new GcmKeepAlive(this); gcmKeepAlive.broadcastIntents(); 

No creo que necesites establecer permisos adicionales para esto, pero aquí están los permisos relacionados con gcm que tengo en mi manifiesto

 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name=your_package_name.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="your_package_name.permission.C2D_MESSAGE" /> 

Una forma de enviar los latidos del corazón de forma regular

Si desea enviarlos de forma regular, aquí es cómo estoy haciendo eso:

  public class GcmKeepAliveBroadcastReceiver extends BroadcastReceiver { private GcmKeepAlive gcmKeepAlive; @Override public void onReceive(Context context, Intent intent) { System.out.println("inside gcm keep alive receiver"); gcmKeepAlive = new GcmKeepAlive(context); gcmKeepAlive.broadcastIntents(); } } 

También tengo un servicio que tiene un Dagger inyectado alarmmanger y pendingintent

 @Inject AlarmManager alarmManager; @Inject PendingIntent gcmKeepAlivePendingIntent; alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 1000, 4*60*1000, gcmKeepAlivePendingIntent); 

Aquí está la sección del módulo Dagger que proporciona el administrador de alarmas y la intención pendiente. Hay varias maneras de tener un administrador de alarmas periódicamente llamar a un método, por lo que suponiendo que no utilice Dagger, todavía debe ser capaz de sacar las partes pertinentes. Su pregunta era cómo enviar el latido del corazón, no cómo usar un administrador de alarmas. Hay un montón de respuestas a que ya lo busque en eso.

 @Provides PendingIntent provideGcmKeepAlivePendingIntent() { System.out.println("pending intent provider"); Intent gcmKeepAliveIntent = new Intent("com.gmail.npnster.first_project.gcmKeepAlive"); return PendingIntent.getBroadcast(mContext, 0, gcmKeepAliveIntent, PendingIntent.FLAG_CANCEL_CURRENT); } @Provides AlarmManager provideGcmKeepAliveAlarmManager() { return (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); } 
  • Vista Lista expandible - Childs, Diferentes diseños
  • Android protobuf nano uso
  • Alarma de configuración de Android a una fecha anterior
  • Reaccionar-despliegue nativo al error del dispositivo android 3 clase de actividad no existe
  • Escribir en permiso de archivo en android
  • ¿Por qué el cargador de clases de Android permite un acceso reflexivo al campo público de una clase privada de paquete de otro paquete?
  • Descripción de los mensajes de Android GC
  • Recurso no encontrado Excepción
  • Subtítulos de ListView de Android
  • Actualización del recuento del carro al presionar el botón de retroceso después de la eliminación
  • Cómo configurar la imagen con efecto en ImageButton antes de hacer clic
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.