register notification google firebaseinstanceidservice android android-intent push-notification google-cloud-messaging

notification - Android: reciba la notificación de inserción y muéstrela, no del todo comprendida



push notifications android (2)

Ok, finalmente tengo la configuración para registrar dispositivos para notificaciones push. Encontré este código para recibir nuevas notificaciones y mostrarlas. La cosa es que no estoy seguro de a dónde va. Soy bastante nuevo en la programación de Android por lo que cualquier ayuda es apreciada. Tengo una clase de servicio llamada GCMService a continuación.

import android.content.Context; import android.content.Intent; import android.util.Log; import com.google.android.gcm.GCMBaseIntentService; public class GCMService extends GCMBaseIntentService { private static final String TAG = "GCMService"; public GCMService() { super(); } @Override protected void onRegistered(Context context, String regId) { Log.i(TAG, "Device registered: regId= " + regId); } @Override protected void onUnregistered(Context context, String regId) { Log.i(TAG, "Device unregistered"); } @Override protected void onMessage(Context context, Intent intent) { Log.i(TAG, "Received message"); } @Override public void onError(Context context, String errorId) { Log.i(TAG, "Received error: " + errorId); } @Override protected boolean onRecoverableError(Context context, String errorId) { Log.i(TAG, "Received recoverable error: " + errorId); return super.onRecoverableError(context, errorId); } }

¿A dónde va la función a continuación en relación con mi clase anterior para recibir un nuevo mensaje?

private static void generateNotification(Context context, String message) { int icon = R.drawable.ic_launcher; long when = System.currentTimeMillis(); NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(icon, message, when); String title = context.getString(R.string.app_name); Intent notificationIntent = new Intent(context, LauncherActivity.class); PendingIntent pintent = PendingIntent.getActivity(context, 0, intent, Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); notification.setLatestEventInfo(context, title, message, intent); notification.flags |= Notification.FLAG_AUTO_CANCEL; notification.defaults |= Notification.DEFAULT_SOUND; notification.defaults |= Notification.DEFAULT_VIBRATE; notificationManager.notify(1, notification); }


Me lo imaginé. Finalmente encontré un proyecto de trabajo bastante bueno para el cual puedes estudiar el código y entenderlo. Me llevó varios días buscar en Google para encontrar algo que no era solo una pieza aquí y una pieza, sino un proyecto completo. Pensé que sería lo suficientemente bueno para publicarlo en caso de que alguien más pudiera usarlo.

https://github.com/Guti/Google-Cloud-Messaging--Titanium-


Utilice el código siguiente para que funcione correctamente:

@Override public void onDeletedMessages() { sendNotification("Message Deleted On server"); super.onDeletedMessages(); } @Override public void onMessageReceived(String from, Bundle data) { sendNotification("Received: " + data.getString("message")); super.onMessageReceived(from, data); } @Override public void onMessageSent(String msgId) { sendNotification("Message Sent: " + msgId); super.onMessageSent(msgId); } @Override public void onSendError(String msgId, String error) { sendNotification("Message Sent Error: " + msgId + "Error: " + error); super.onSendError(msgId, error); } private void sendNotification(String msg) { Intent intent = new Intent(this, MessageView.class); intent.putExtra("Message", msg); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT); Uri defaultSoundUri = RingtoneManager .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder( this).setSmallIcon(R.drawable.logo_y) .setContentTitle("CCD Message").setContentText(msg) .setAutoCancel(true).setSound(defaultSoundUri) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0, notificationBuilder.build()); }