Android Open Source - appservices-android-push-example G C M Intent Service






From Project

Back to project page appservices-android-push-example.

License

The source code is released under:

Apache License

If you think the Android project appservices-android-push-example listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.ganyo.pushtest;
/*from   w  w w.  j  a v  a  2 s. c  o m*/
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

import com.google.android.gcm.GCMBaseIntentService;

import static com.ganyo.pushtest.Settings.GCM_SENDER_ID;
import static com.ganyo.pushtest.Util.displayMessage;

public class GCMIntentService extends GCMBaseIntentService {

  public GCMIntentService() {
    super(GCM_SENDER_ID);
  }

  /**
   * Method called on device registered
   **/
  @Override
  protected void onRegistered(Context context, String registrationId) {
    Log.i(TAG, "Device registered: " + registrationId);
    displayMessage(context, getString(R.string.gcm_registered, registrationId));
    AppServices.register(context, registrationId);
  }

  /**
   * Method called on device unregistered
   * */
  @Override
  protected void onUnregistered(Context context, String registrationId) {
    Log.i(TAG, "Device unregistered");
    displayMessage(context, getString(R.string.gcm_unregistered, registrationId));
    AppServices.unregister(context, registrationId);
  }

  /**
   * Method called on receiving a new message
   * */
  @Override
  protected void onMessage(Context context, Intent intent) {
    String message = intent.getExtras().getString("data");
    Log.i(TAG, "Received message: " + message);

    displayMessage(context, message);
    generateNotification(context, message);
  }

  /**
   * Method called on receiving a deleted message
   * */
  @Override
  protected void onDeletedMessages(Context context, int total) {
    Log.i(TAG, "Received deleted messages notification");
    String message = getString(R.string.gcm_deleted, total);
    displayMessage(context, message);
    generateNotification(context, message);
  }

  /**
   * Method called on Error
   * */
  @Override
  public void onError(Context context, String errorId) {
    Log.i(TAG, "Received error: " + errorId);
    displayMessage(context, getString(R.string.gcm_error, errorId));
  }

  @Override
  protected boolean onRecoverableError(Context context, String errorId) {
    Log.i(TAG, "Received recoverable error: " + errorId);
    displayMessage(context, getString(R.string.gcm_recoverable_error, errorId));
    return super.onRecoverableError(context, errorId);
  }

  /**
   * Issues a Notification to inform the user that server has sent a message.
   */
  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, MainActivity.class);
    // set intent so it does not start a new activity
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
    notification.setLatestEventInfo(context, title, message, intent);
    notification.flags |= Notification.FLAG_AUTO_CANCEL;

    // Play default notification sound
    notification.defaults |= Notification.DEFAULT_SOUND;

    // Vibrate if vibrate is enabled
    notification.defaults |= Notification.DEFAULT_VIBRATE;
    notificationManager.notify(0, notification);
  }
}




Java Source Code List

com.ganyo.pushtest.AlertDialogManager.java
com.ganyo.pushtest.AppServices.java
com.ganyo.pushtest.GCMIntentService.java
com.ganyo.pushtest.MainActivity.java
com.ganyo.pushtest.Settings.java
com.ganyo.pushtest.Util.java
com.ganyo.pushtest.WakeLocker.java