package com.geored.rest;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import com.geored.rest.data.Mensaje;
import com.geored.rest.exception.RestBlowUpException;
import com.geored.rest.exception.UnauthorizedException;
import com.google.android.gcm.GCMBaseIntentService;
import com.google.android.gcm.GCMRegistrar;
public class GCMIntentService extends GCMBaseIntentService {
@Override
protected void onError(Context context, String errorId) {
Log.e(TAG, "Received error from GCM: " + errorId);
}
@Override
protected void onMessage(Context context, Intent intent) {
Log.i(TAG, "Received message");
Mensaje mensaje = new Mensaje();
mensaje.setIdUsuario(Integer.valueOf(intent.getExtras().getString("idUsuario")));
mensaje.setMessage(intent.getExtras().getString("mensaje"));
displayMessage(context, mensaje);
}
@Override
protected void onRegistered(Context context, String regId) {
Log.i(TAG, "Device registered: regId = " + regId);
try {
ServicioRestGCM.registrar(regId);
GCMRegistrar.setRegisteredOnServer(context, true);
}
catch (RestBlowUpException e) {
GCMRegistrar.unregister(context);
Log.w("Warning", e.getMessage(), e);
}
catch (UnauthorizedException e) {
GCMRegistrar.unregister(context);
Log.w("Warning", e.getMessage(), e);
}
}
@Override
protected void onUnregistered(Context context, String regId) {
Log.i(TAG, "Device unregistered");
if (GCMRegistrar.isRegisteredOnServer(context)) {
try {
ServicioRestGCM.desregistrar();
GCMRegistrar.setRegisteredOnServer(context, false);
} catch (RestBlowUpException e) {
Log.w("Warning", e.getMessage(), e);
} catch (UnauthorizedException e) {
Log.w("Warning", e.getMessage(), e);
}
}
else {
Log.i(TAG, "Ignoring unregister callback");
}
}
static void displayMessage(Context context, Mensaje mensaje) {
Intent intent = new Intent("com.google.android.gcm.demo.app.DISPLAY_MESSAGE");
intent.putExtra("mensaje", mensaje.getMessage());
intent.putExtra("idUsuario", mensaje.getIdUsuario());
context.sendBroadcast(intent);
}
}