package com.abewy.android.apps.klyph; import com.abewy.android.apps.klyph.gcm.CommonUtilities; import com.abewy.android.apps.klyph.gcm.ServerUtilities; import com.google.android.gcm.GCMRegistrar; import android.content.Context; import android.os.AsyncTask; import android.util.Log; public class KlyphGCM { private static RegisterTask registerTask; private static RegisterOnServerTask registerOnServerTask; public static void registerIfNecessary() { final Context context = KlyphApplication.getInstance(); try { GCMRegistrar.checkDevice(context); } catch (UnsupportedOperationException e) { return; } // GCMRegistrar.checkManifest(context); final String regId = KlyphPreferences.getGCMRegId(); // Register GCM if (regId.length() == 0) { Log.d("KlyphGCM", "register GCM"); registerTask = new RegisterTask(); registerTask.execute(context); } else { // Register on server, maybe last attempt failed Log.d("KlyphGCM", "register on server"); registerOnServerTask = new RegisterOnServerTask(); registerOnServerTask.execute(context); } } public static void unregister(Context context) { new UnregisterTask().execute(context); } private static class RegisterTask extends AsyncTask<Context, Void, Void> { @Override protected Void doInBackground(Context... params) { GCMRegistrar.register(params[0], CommonUtilities.SENDER_ID); return null; } @Override protected void onPostExecute(Void result) { registerTask = null; } } private static class RegisterOnServerTask extends AsyncTask<Context, Void, Void> { @Override protected Void doInBackground(Context... params) { ServerUtilities.register(params[0], KlyphPreferences.getGCMRegId()); return null; } @Override protected void onPostExecute(Void result) { registerOnServerTask = null; } } private static class UnregisterTask extends AsyncTask<Context, Void, Void> { @Override protected Void doInBackground(Context... params) { GCMRegistrar.unregister(params[0]); return null; } } }