Estou usando AWS
recursos para o meu projeto Android, estou planejando adicionar um serviço de notificação por push para o meu projeto com. AWS SNS
Existem algumas perguntas que me incomodam muito. Não encontrei nenhuma pergunta a respeito disso, exceto uma ou duas, mas com explicações pouco claras.
1. Tem AWS
suporte FCM
? SNS
trabalhar com GCM
. Mas o Google recomenda usar o FCM em vez de GCM
. Não encontrei AWS
apoio FCM
.
2. AWS
Armazenam mensagens (ou dados) em seus bancos de dados, mesmo depois de enviar notificações push?
3. Tentei colocar a chave de API do FCM na plataforma de aplicativo SNS, ela está mostrando parâmetros inválidos por quê?
Respostas:
O FCM é compatível com versões anteriores do GCM. As etapas para configurar o FCM no AWS são idênticas ao procedimento de configuração do GCM e (pelo menos por enquanto) o FCM funciona de forma transparente com o GCM e SNS com relação à configuração do lado do servidor.
No entanto , se você estiver enviando
data
cargas úteis para o dispositivo Android, elas não serão processadas, a menos que você implemente um serviço do lado do cliente que se estendaFirebaseMessagingService
. O gerador de mensagem JSON padrão no console da AWS enviadata
mensagens, que serão ignoradas pelo seu aplicativo, a menos que o serviço mencionado acima seja implementado. Para contornar isso para o teste inicial, você pode fornecer umanotification
carga útil personalizada que será recebida pelo seu dispositivo (contanto que seu aplicativo não esteja em primeiro plano)Existem instruções de migração GCM-FCM fornecidas pelo Google, no entanto, as alterações que você precisa fazer são predominantemente no lado do aplicativo.
As etapas que você precisa seguir para testar o GCM / FCM em seu aplicativo com SNS são:
FirebaseInstanceIDService
e substituir oonTokenRefresh
método para ver isso em seu aplicativo Android. Depois de fazer isso , desinstale e reinstale seu aplicativo e seu token deve ser impresso no console de depuração no Android Studio na primeira inicialização.A mensagem que é gerada pelo SNS terá o seguinte formato:
Como mencionamos anteriormente, as
data
cargas úteis serão ignoradas se nenhum serviço para recebê-las tiver sido implementado. Gostaríamos de testar sem escrever muito código, então, em vez disso, devemos enviar umanotification
carga útil. Para fazer isso, basta alterar a mensagem JSON para ler:Depois de fazer isso, certifique-se de que seu aplicativo não esteja em execução no dispositivo e clique no botão Publicar Mensagem . Agora você deve ver uma notificação pop-up no seu dispositivo.
É claro que você pode fazer tudo isso programaticamente por meio da API do Amazon SNS; no entanto, todos os exemplos parecem usar a
data
carga útil, portanto, você precisa manter isso em mente e gerar uma carga útil adequada ao seu caso de uso.fonte
data
as mensagens funcionam bem com o sns, mesmo que o aplicativo cliente não implemente FCM, mas sim GCM. No meu aplicativo, não atualizei para o FCM no lado do cliente, mas o FCM usando SNS também funciona bem paradata
mensagens. Não deveria funcionar?Agora você pode acessar o console do firebase ( https://console.firebase.google.com/ ), selecionar seu projeto, clicar no ícone de engrenagem, escolher as configurações do projeto e clicar na guia de mensagens na nuvem ...
Você verá a chave de servidor legada, que é a GCM API Key, e terá a opção de gerar novas chaves de servidor, que são as versões FCM
SNS aceitará ambas as versões, mas sua opção de menu ainda está categorizando-as em GCM
Aqui está a foto para sua referência:
Observe que você pode remover "acidentalmente" as chaves do servidor, mas a chave do servidor herdado não pode ser deletada. Além disso, se você clicar no botão adicionar chave do servidor, obterá uma nova chave do servidor ABAIXO da primeira, SEM AVISO! ... Bom trabalho Google;)
fonte
Tentei usar a solução com carga útil de notificação em vez de dados, mas não recebi notificações push no dispositivo móvel. Eu encontrei este tutorial https://youtu.be/iBTFLu30dSg com legendas em inglês de como usar o FCM com AWS SNS passo a passo e exemplo de como enviar notificações push do console AWS e implementá-lo em php com aws php sdk. Isto me ajudou bastante.
fonte
Mais uma nota adicional à ótima resposta de Nathan Dunn. Como enviar dados com a notificação do SNS para o Firebase.
Precisamos adicionar dados ao Json (dentro da notificação):
Em sua implementação FirebaseMessagingService (exemplo de Xamarin)
fonte
Apenas uma observação adicional à resposta de Nathan Dunn: para adicionar som, use a seguinte mensagem JSON
fonte
Levei um tempo para descobrir como enviar a notificação com a carga útil certa (publicar no tópico). Então, vou colocá-lo aqui.
fonte
A Amazon oferece suporte ao FCM, pois todo o código anterior foi migrado do GCM para o FCM. O artigo abaixo explica em detalhes.
Artigo publicado pela Amazon
fonte
Para responder às perguntas:
Para obter um tutorial detalhado sobre a configuração do FCM com SNS, leia este artigo.
fonte