package com.abewy.android.apps.klyph;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import com.abewy.android.apps.klyph.adm.ServerUtilities;
import com.amazon.device.messaging.ADM;
import com.google.android.gcm.GCMRegistrar;
public class KlyphADM
{
private static RegisterTask registerTask;
private static RegisterOnServerTask registerOnServerTask;
public static void registerIfNecessary()
{
final Context context = KlyphApplication.getInstance();
Log.d("KlyphADM", "registerIfNecessary: ");
try
{
Class.forName( "com.amazon.device.messaging.ADM" );
}
catch (ClassNotFoundException e)
{
return;
}
final ADM adm = new ADM(context);
if (adm.isSupported())
{
Log.d("KlyphADM", "registerIfNecessary: 1");
if(adm.getRegistrationId() == null)
{
Log.d("KlyphADM", "registerIfNecessary: 2");
registerTask = new RegisterTask();
registerTask.execute(context);
}
else
{
Log.d("KlyphADM", "registerIfNecessary: 3");
/* Send the registration ID for this app instance to your server. */
/* This is a redundancy since this should already have been performed at registration time from the onRegister() callback */
/* but we do it because our python server doesn't save registration IDs. */
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)
{
final ADM adm = new ADM(KlyphApplication.getInstance());
adm.startRegister();
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)
{
final ADM adm = new ADM(KlyphApplication.getInstance());
ServerUtilities.register(params[0], adm.getRegistrationId());
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]);
try
{
Class.forName( "com.amazon.device.messaging.ADM" );
}
catch (ClassNotFoundException e)
{
return null;
}
final ADM adm = new ADM(KlyphApplication.getInstance());
adm.startUnregister();
return null;
}
}
}