o GCM do Android obtém o ID original do ID canônico

Estou tentando enviar uma atualização push para alguns dispositivos Android. Alguns deles têm um novo id nesse meio tempo, então o Google me diz que existem identificações canônicas. Da documentação que li:

Se message_id estiver definido, verifique se registration_id:

Se registration_id for definido, substitua o ID original pelo novo valor (ID canônico) no banco de dados do servidor. Note que o ID original não faz parte do resultado, então você precisa obtê-lo da lista de registration_ids passada na requisição (usando o mesmo índice).

Estou perdendo uma parte ou isso é ambíguo se você enviar mais de um ID de registro para o Google?

Minha solicitação (ids substituídos para legibilidade):

"{"data":{"favorite":1},"registration_ids":["1","2","3","4","5","6"]}"

A resposta do Google é:

{
  "multicast_id":7917175795873320166,
  "success":6,
  "failure":0,
  "canonical_ids":4,
  "results":[
    {"registration_id":"3","message_id":"m1"},
    {"message_id":"m1"},
    {"message_id":"m1"},
    {"registration_id":"3","message_id":"m1"},
    {"registration_id":"3","message_id":"m1"},
    {"registration_id":"3","message_id":"m1"}
 ]
}

A partir disso, sei que a id 3 está correta, mas quais ids originais devo substituir por 3? Enviar cada mensagem para cada ID registrado seria um desperdício. Eu li um post aqui no Stackoverflow (Gerenciamento de GCM e ID ) resolvendo-o para um servidor Java, mas o meu não é (RoR).

Alguma idéia de como resolver esse problema?

questionAnswers(1)

yourAnswerToTheQuestion