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;
}

Ответы на вопрос(2)

Ваш ответ на вопрос