В настоящее время я использую Amazon SNS для управления Google GCM, который должен отправлять уведомления.
Проблема в том, что я могу получить конечную точку ARN только после создания конечной точки, подобной этой,
но как я могу проверить, зарегистрировался ли пользователь раньше? Так что мне не нужно создавать еще одну запись
и просто используйте эту старую запись. Спасибо
Приведенный ниже код представляет собой кнопку, с помощью которой пользователь может включить (зарегистрироваться)/выключить (удалить) SNS в amazon.
notify.setOnClickListener(new OnClickListener() {
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void onClick(View v) {
if (prefs.getString("endpoint_arn", "").equals("")) {
new AsyncTask() {
@Override
protected Object doInBackground(final Object... params) {
try {
((Activity) ctx).runOnUiThread(new Runnable() {
public void run() {
if (!pDialog.isShowing())
pDialog.show();
}
});
String token = gcm.register(Constant.projectID);
CreatePlatformEndpointRequest per = new CreatePlatformEndpointRequest();
per.setToken(token);
per.setPlatformApplicationArn(Constant.platformARN);
CreatePlatformEndpointResult result = asnsc.createPlatformEndpoint(per);
editor.putString("endpoint_arn", result.getEndpointArn());
editor.commit();
((Activity) ctx).runOnUiThread(new Runnable() {
public void run() {
notify_txt.setText(ctx.getResources().getString(R.string.on));
if (pDialog.isShowing())
pDialog.dismiss();
}
});
} catch (final Exception e) {
((Activity) ctx).runOnUiThread(new Runnable() {
public void run() {
Log.d("test1","Registration Error:" + e.getMessage());
Toast.makeText(ctx, getResources().getString(R.string.error), Toast.LENGTH_LONG).show();
if (pDialog.isShowing())
pDialog.dismiss();
}
});
}
return true;
}
}.execute(null, null, null);
} else {
new AsyncTask() {
@Override
protected Object doInBackground(final Object... params) {
try {
((Activity) ctx).runOnUiThread(new Runnable() {
public void run() {
if (!pDialog.isShowing())
pDialog.show();
}
});
DeleteEndpointRequest dPer = new DeleteEndpointRequest();
dPer.setEndpointArn(prefs.getString("endpoint_arn", ""));
asnsc.deleteEndpoint(dPer);
gcm.unregister();
editor.remove("endpoint_arn").commit();
((Activity) ctx).runOnUiThread(new Runnable() {
public void run() {
notify_txt.setText(ctx.getResources().getString(R.string.off));
if (pDialog.isShowing())
pDialog.dismiss();
}
});
} catch (final Exception e) {
((Activity) ctx).runOnUiThread(new Runnable() {
public void run() {
Log.d("test1","Delete Error:" + e.getMessage());
Toast.makeText(ctx, getResources().getString(R.string.error), Toast.LENGTH_LONG).show();
if (pDialog.isShowing())
pDialog.dismiss();
}
});
}
return true;
}
}.execute(null, null, null);
}
}
});