package ams.android.linkit.Service;
import android.app.ActivityManager;
import android.app.IntentService;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import com.google.android.gms.gcm.GoogleCloudMessaging;
/**
* Created by Aidin on 2/1/2015.
*/
public class GcmIntentService extends IntentService {
// public static final int NOTIFICATION_ID = 1;
// private NotificationManager mNotificationManager;
// NotificationCompat.Builder builder;
private static String TAG = "linkitShopper";
public GcmIntentService() {
super("GcmIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
// The getMessageType() intent parameter must be the intent you received
// in your BroadcastReceiver.
String messageType = gcm.getMessageType(intent);
if (!extras.isEmpty()) { // has effect of unparcelling Bundle
if (GoogleCloudMessaging.
MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
// sendNotification("Send error: " + extras.toString());
} else if (GoogleCloudMessaging.
MESSAGE_TYPE_DELETED.equals(messageType)) {
// sendNotification("Deleted messages on server: " + extras.toString());
// If it's a regular GCM message, do some work.
} else if (GoogleCloudMessaging.
MESSAGE_TYPE_MESSAGE.equals(messageType)) {
Log.i(TAG, "Completed work @ " + SystemClock.elapsedRealtime());
// Post notification of received message.
if (!isMyServiceRunning(NotiHeadService.class)) {
Intent myIntent = new Intent(getApplicationContext(), NotiHeadService.class);
myIntent.putExtra("imageUrl", extras.getString("imageUrl"));
myIntent.putExtra("linkSrceenShot", extras.getString("linkSrceenShot"));
myIntent.putExtra("productLink", extras.getString("productLink"));
myIntent.putExtra("text", extras.getString("text"));//;
startService(myIntent);
}
Log.i(TAG, "Received: " + extras.toString());
}
}
// Release the wake lock provided by the WakefulBroadcastReceiver.
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
// Put the message into a notification and post it.
// This is just one simple example of what you might choose to do with
// a GCM message.
// private void sendNotification(String msg) {
// mNotificationManager = (NotificationManager)
// this.getSystemService(Context.NOTIFICATION_SERVICE);
//
// PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
// new Intent(this, MainActivity.class), 0);
//
// NotificationCompat.Builder mBuilder =
// new NotificationCompat.Builder(this)
// .setSmallIcon(R.drawable.ic_launcher)
// .setContentTitle("GCM Notification")
// .setStyle(new NotificationCompat.BigTextStyle()
// .bigText(msg))
// .setContentText(msg);
//
// mBuilder.setContentIntent(contentIntent);
// mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
// }
}