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?