Created
July 4, 2017 00:03
-
-
Save synga/0563b6e749d87c7ed777ae14e9c9b69c to your computer and use it in GitHub Desktop.
Push notification com ionic e Google Cloud Messaging
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
COM O FCM, PRIMEIRO INSTALA O PLUGIN QUE TA NO IONIC NATIVE MESMO https://ionicframework.com/docs/native/fcm/ | |
FAZ COMO TODO PLUGIN, INSTALA O PLUGIN, INSTALA O WRAPPER. | |
DEPOIS COLOCA O PLUGIN NO SEU APP.MODULE: | |
*/ | |
import { FCM } from '@ionic-native/fcm'; | |
@NgModule({ | |
declarations: [ | |
MyApp | |
], | |
imports: [ | |
... | |
], | |
bootstrap: [IonicApp], | |
entryComponents: [ | |
MyApp | |
], | |
providers: [ | |
FCM | |
] | |
}) | |
/* | |
PRA FAZER O PUSH FUNCIONAR DE USUARIO PRA USUARIO EU RECOMENDO FORTEMENTE INSTALAR O PLUGIN DEVICE https://ionicframework.com/docs/native/device/ | |
FAZ OS MESMOS PASSOS DO PLUGIN ANTERIOR E BOA. | |
O PLUGIN DE DEVICE TE DA A OPÇÃO DE PEGAR O UNIQUE ID DO DEVICE, POR QUE AI CASO O USUARIO QUEIRA USAR O APP NA SUA CONTA EM MAIS DE UM APARELHO VOCê CONSEGUE FAZER UM FOR, PEGAR CADA APARELHO QUE ELE USA E MANDAR O PUSH PRA TODOS OS O APARELHOS QUE ELE TA LOGADO | |
NO SEU FIREBASE VOCÊ VAI TER UM ESTRUTURA DO SEU USUARIO, NELA VOCÊ SALVA OS TOKENS, ALGO ASSIM: | |
USUARIOS | |
|_ USUARIO_001 | |
|_ TOKENS | |
|_ DEVICE_UID: TOKEN | |
|_ DEVICE_UID_2: TOKEN | |
ENTÃO O SEU CÓDIGO PARA MANUSEAR O PUSH VC FAZ NO SEU APP.COMPONENTS, DENTRO DO DEVICE READY. PRA SALVAR O TOKEN VOCê FAZ ONDE ACHAR MELHOR, EU PREFIRO COLOCAR NA HOME E DEPOIS DO LOGIN, VOU COLOCAR TUDO JUNTO AQUI, MAS VOCÊ VE ONDE ACHA MELHOR | |
*/ | |
// imports | |
import { FCM } from '@ionic-native/fcm'; | |
import { Device } from '@ionic-native/fcm'; | |
... | |
export class MyApp { | |
constructor(public fcm: FCM, public device: Device){} | |
platform.ready().then(() => { | |
//RECEBEU NOTIFICAÇÃO PUSH | |
fcm.onNotification().subscribe(data => { | |
// TRATA A NOTIFICAÇÃO, EU NORMALMENTE CRIO UM PROVIDER PRA ISSO | |
}); | |
// SALVA O TOKEN DO USUARIO NO FIREBASE DELE, COMO NÃO SEI DE ONDE VC PEGA O ID, VOU SÓ COLOCAR 'ID' E JA ERA | |
fcm.getToken().then(token => { | |
firebase.database().ref('/Usuarios/' + id + '/tokens/' + this.device.uuid).set(token); | |
}); | |
}) | |
}; | |
/* | |
NA HORA DE ENVIAR UM PUSH E USUARIO PRA USUARIO VOCÊ VAI PRECISAR FAZER VIA POST E VAI PRECISAR DE DUAS COISAS: | |
- O TOKEN DO APARELHO DO USUARIO. | |
- A CHAVE DE PERMISSÃO PARA SUA APLICAÇÃO USAR O GCM | |
A CHAVE VOCê PEGA ABRINDO O CONSOLE DO FIREBASE > ENTRA NO SEU PROJETO > VAI NAS CONFIGURAÇÕES NA ENGRENAGEM NO MENU LATERAL > CLOUD MESSAGING > VAI TER UMA CHAVE DA MENSAGEM (É UMA GRANDE BEM EM CIMA, DA UMAS 2 LINHAS A CHAVE); | |
AI NA PÁGINA QUE VOCÊ FOR MANDAR O PUSH FAZ ASSIM: | |
*/ | |
import { Http, Headers, RequestOptions } from '@angular/http'; | |
private chaveDoServidor: string = 'sua chave' | |
export class MinhaClasse { | |
constructor(public http: Http){} | |
//ENVIA O PUSH | |
enviaPush(tokenDoUsuario) { | |
let url = 'https://fcm.googleapis.com/fcm/send'; | |
let body = | |
{ | |
"notification": { | |
"title": "Meu Push", | |
"body": "Mensagem no corpo do push", | |
"sound": "default", | |
"click_action": "FCM_PLUGIN_ACTIVITY", // importante deixar | |
"icon": "fcm_push_icon" | |
}, | |
"data": { | |
"dados": "Notificação" // AQUI PODE SER UM JSON COM DADOS QUE VOCÊ QUER PEGAR NO APARELHO DO USUARIO PRA TRATAR O PUSH, TIPO QUEM ENVIOU, DATA, ASSUNTO, ETC. NÃO É OBRIGATÓRIO | |
}, | |
"to": tokenDoUsuario, | |
"priority": "high" // precisa ser high | |
}; | |
let headers: Headers = new Headers({ | |
'Content-Type': 'application/json', | |
'Authorization': this.chaveDoServidor | |
}); | |
let options = new RequestOptions({ headers: headers }); | |
this.http.post(url, body, options).subscribe(response => { | |
console.log('push enviado'); | |
}, error => { | |
console.log('erro ao enviar push'); | |
}); | |
} | |
}; | |
/* | |
SOBRE ATUALIZAR O APP: | |
SE EU FOSSE VOCê CRIAVA UM APP NOVO, COPIAVA OS ARQUIVOS DO SEU SRC PRO APP NOVO E INSTALAVA AS DEPENDENCIAS, MAIS FÁCIL E SE DER PAU NO NOVO O ANTIGO TA LA DE BOA. | |
MAS TEM MUITAS VANTAGENS DE MUDAR PRA VERSÃO MAIS RECENTE: ANGULAR 4, LAZY LOADING, VARIOS BUG FIXES. | |
LAZY LOADING É O PRINCIPAL, TINHA UM APP DE UM CLIENTE QUE DEMORAVA 3 SEGUNDOS PRA DISPARAR O DEVICE READY, AGORA DEMORA NO MAXIMO 0.7 SEGUNDO, AI SE PRECISAR DE AJUDA COM ISSO TE PASSO COMO FAZ | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment