package mobi.monaca.framework.task; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import mobi.monaca.framework.MonacaApplication; import mobi.monaca.framework.util.MyLog; import mobi.monaca.utils.APIUtil; import mobi.monaca.utils.MonacaConst; import mobi.monaca.utils.MyAsyncTask; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; public class GCMUnregistrationTask extends MyAsyncTask<Void, Void, Integer> { private static final String TAG = GCMUnregistrationTask.class.getSimpleName(); MonacaApplication app; String regId; public GCMUnregistrationTask(MonacaApplication app, String regId) { this.app= app; this.regId = regId; } @Override protected void onPostExecute(Integer result) { super.onPostExecute(result); if (result != null) { MyLog.d(TAG, "response :" + result); if (result.equals(Integer.valueOf(200))) { MyLog.d(TAG, "succeed"); GCMRegistrationIdSenderTask.clearAlreadyRegisteredPreference(app, regId); } else { MyLog.d(TAG, "failed"); } } } @Override protected Integer doInBackground(Void... a) { MyLog.d(TAG, "start unregistration"); try { List<NameValuePair> list = new ArrayList<NameValuePair>(); list.add(new BasicNameValuePair("registrationId", regId)); URL url = new URL(MonacaConst.getPushUnegistrationAPIUrl(app, app.getPushProjectId())); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setConnectTimeout(10 * 1000);// 10sec OutputStream os = connection.getOutputStream(); String postStr = APIUtil.getQuery(list); PrintStream ps = new PrintStream(os); ps.print(postStr); ps.close(); os.close(); connection.connect(); return Integer.valueOf(connection.getResponseCode()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } }