GCM и обработка идентификаторов
Я создаю приложение, которое использует Facebook и GCM. Пользователь может использовать приложение на нескольких устройствах, друг может отправлять ему сообщения GCM, используя свой идентификатор Facebook.
На моем сервере у меня есть таблица, которая отображает идентификатор facebook для идентификатора gcm. Таблица не требует, чтобы идентификатор facebook был уникальным, поэтому сообщения можно отправлять на несколько устройств.
В документации он демонстрирует следующий способ обработки ошибок при отправке сообщения:
if (result.getMessageId() != null) {
String canonicalRegId = result.getCanonicalRegistrationId();
if (canonicalRegId != null) {
//CASE 1
// same device has more than on registration ID: update database
}
} else {
String error = result.getErrorCodeName();
if (error.equals(Constants.ERROR_NOT_REGISTERED)) {
// CASE 2
// application has been removed from device - unregister database
}
}
ВCASE 1
, это говорит, чтобы заменить регистрационный идентификатор каноническим регистрационным идентификатором. Но как мне узнать, какой регистрационный идентификатор заменить? Скажем, у получателя 2 устройства, у меня есть 2 регистрационных идентификатора, но я не знаю, какое из них выбрать.
ВCASE 2
возникает та же проблема. Как узнать, какой регистрационный идентификатор удалить из базы данных?
РЕДАКТИРОВАТЬ
Для ясности, это код, который ям на данный момент:
List gcmIds = getGCMIds(c, fbId);
if (gcmIds != null && !gcmIds.isEmpty()) {
Sender sender = new Sender(Params.GOOGLE_API_KEY);
Message message = new Message.Builder().addData("message", apiMessage.buildJSONString()).build();
MulticastResult result = sender.send(message, gcmIds, 5);
List results = result.getResults();
/* Do something with the results */
success = result.getFailure() == 0;
} else {
success = false;
}