package com.angrykings.gcm;
import android.app.IntentService;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
import android.util.Log;
import com.angrykings.R;
import com.angrykings.activities.EndGameActivity;
import com.angrykings.activities.MainActivity;
import com.angrykings.activities.OnlineGameActivity;
import com.google.android.gms.gcm.GoogleCloudMessaging;
public class GcmIntentService extends IntentService {
public static int NOTIFICATION_ID = 1;
private NotificationManager mNotificationManager;
NotificationCompat.Builder builder;
public GcmIntentService() {
super("GcmIntentService");
}
@Override
protected void onHandleIntent(Intent intent) {
Bundle extras = intent.getExtras();
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this);
String messageType = gcm.getMessageType(intent);
Log.i("GCM", "onHandleIntent: type=" + messageType);
if (!extras.isEmpty()) { // has effect of unparcelling Bundle
if (!GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType))
return;
String partnerIdStr = extras.getString("id");
String servermsg = extras.getString("msg");
Log.i("GCM", "extras="+extras.toString());
if(extras.getString("msg").equals("turn")){
sendNotification(this, "AngryKings", getString(R.string.notificationTextTurn), partnerIdStr, servermsg);
}else if(servermsg.equals("you_win")){
sendNotification(this, "AngryKings", getString(R.string.notificationTextWin), partnerIdStr, servermsg);
}else if(servermsg.equals("new_game")){
sendNotification(this, "AngryKings", getString(R.string.notificationTextNewGame), partnerIdStr, servermsg);
}else{
sendNotification(this, "AngryKings", "such turn: " + extras.getString("msg"), partnerIdStr, servermsg);
}
}
GcmBroadcastReceiver.completeWakefulIntent(intent);
}
public static void sendNotification(Context context, String title, String msg, String partnerId, String servermsg) {
NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent = null;
if(!servermsg.equals("you_win")){
intent = new Intent(context, OnlineGameActivity.class);
intent.putExtra("existingGame", true);
}else{
intent = new Intent(context, EndGameActivity.class);
intent.putExtra("hasWon", true);
}
intent.putExtra("partnerId", partnerId);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder notificationBuilder =
new Notification.Builder(context)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle(title)
.setContentText(msg)
.setStyle(new Notification.BigTextStyle().bigText(msg));
notificationBuilder.setContentIntent(pendingIntent);
final SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
if(settings.getBoolean("notificationsSound", false)) {
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
notificationBuilder.setSound(alarmSound);
}
if(settings.getBoolean("notificationsVibration", false)) {
long[] pattern = {0,250,0};
notificationBuilder.setVibrate(pattern);
}
nm.notify(NOTIFICATION_ID++, notificationBuilder.build());
}
}