iOS
Send Push Notifications
Push Notifications em iOS usando Cloud Code e Objective-C
26 min
enviando notificações push usando código em nuvem com objective c introdução esta seção explica como você pode enviar notificações push usando o código em nuvem através do back4app é assim que ficará a qualquer momento, você pode acessar o projeto completo construído com este tutorial em nosso repositório do github para completar este início rápido, você precisa xcode um aplicativo criado no back4app siga o tutorial de novo aplicativo parse para aprender como criar um aplicativo parse no back4app um aplicativo ios conectado ao back4app nota siga o tutorial de instalação do sdk parse (swift) para criar um projeto xcode conectado ao back4app um aplicativo ios configurado via tutorial de notificações push do back4app via dashboard um dispositivo ios, iphone ou ipad, rodando ios 10 ou mais recente uma conta de desenvolvedor apple paga 1 configure seu aplicativo ios para receber push todo aplicativo parse instalado em um dispositivo registrado para notificações push tem um associado instalação instalação objeto o instalação instalação objeto é onde você armazena todos os dados necessários para direcionar notificações push por exemplo, em seu aplicativo, você poderia armazenar quais equipes um de seus usuários está interessado para enviar atualizações sobre seu desempenho salvar o instalação instalação objeto também é necessário para rastrear eventos de abertura de aplicativo relacionados a push a maneira mais simples de começar a enviar notificações é usando canais isso permite que você use um modelo de publicador assinante para enviar pushes os dispositivos começam se inscrevendo em um ou mais canais, e as notificações podem ser enviadas posteriormente para esses assinantes os canais aos quais uma determinada instalação instalação está inscrita são armazenados no campo canais canais do objeto instalação instalação depois disso, vamos abordar o envio de notificações push direcionadas a um único usuário ou a um grupo de usuários com base em uma consulta a partir de agora, vamos assumir que você completou todas as etapas do tutorial de notificações push do back4app via dashboard , mesmo que você use o projeto ios construído com este tutorial que está disponível em nosso repositório do github você deve ter notificações push básicas funcionando e também ser capaz de enviar pushes pela console de administração 2 inscreva seu dispositivo no canal de notícias primeiro, vamos adicionar um canal ao seu objeto de instalação vamos fazer isso alterando o método createinstallationonparse no nosso arquivo app delegate abra o arquivo appdelegate m do seu projeto e certifique se de que sua versão de didregisterforremotenotificationswithdevicetoken é a mesma que o código abaixo estamos adicionando uma nova linha de código ‘\[currentinstallation setobject @\[@”news1”] forkey @”channels”];’ que definirá o array de canais do objeto de instalação para conter um canal chamado ‘news’ isso nos permitirá enviar uma mensagem a todos que se inscreverem no canal chamado ‘news’ via código em nuvem appdelegate m 2\ teste executando seu aplicativo em um dispositivo físico você não pode executar isso no simulador você precisará de um token de push real para atualizar seu registro de instalação, então um dispositivo físico é imprescindível depois que ele for executado com sucesso, você deve ver isso na seção de instalação do seu painel você pode verificar indo para o site back4app e clique no painel do seu aplicativo e depois verifique a tabela de instalação na coluna de canais, você deve ver ‘news’, mostrando que agora está inscrito no canal de push de notícias 3 crie seu cloud code para saber mais sobre como começar com cloud code veja o tutorial de cloud code para ios crie um js js arquivo para colocar seu código de nuvem você precisa chamá lo de main js main js para que o back4app saiba que é aqui que você armazena seu código de nuvem defina uma função de nuvem, usando parse cloud define parse cloud define , para chamar a notificação push dentro da função, chamaremos parse push send parse push send para enviar um push para o canal ‘news’ é necessário usar a chave mestre nesta operação o seguinte código executa esses passos parse server 3 x // main js 1 parse cloud define("pushsample", (request) => { 2 3 return parse push send({ 4 channels \["news"], 5 data { 6 title "hello from the cloud code", 7 alert "back4app rocks!", 8 } 9 }, { usemasterkey true }); 10 }); parse server 2 x //main js 1 parse cloud define("pushsample", function (request, response) { 2 parse push send({ 3 channels \["news"], 4 data { 5 title "hello from the cloud code", 6 alert "back4app rocks!", 7 } 8 }, { 9 success function () { 10 // push was successful 11 response success("push sent"); 12 console log("success push sent"); 13 }, 14 error function (error) { 15 // push was unsucessful 16 response error("error with push " + error); 17 console log("error " + error); 18 }, 19 usemasterkey true 20 }); 21 }) 4 fazer upload para o cloud code vá para seu app em site do back4app e clique em painel painel encontre o cloud code cloud code e clique em funções e hospedagem web funções e hospedagem web ele se parece com isso 3\ faça upload ou crie um novo arquivo (você também pode editar o main js main js arquivo diretamente no navegador) então, clique em implantar implantar como mostrado aqui 5 chame o cloud code do seu app ios em seguida, vamos escrever algum código para chamar esta função em nuvem a partir do seu aplicativo você precisará tanto do simulador quanto de um dispositivo físico para completar esta tarefa você chamará a função em nuvem a partir do seu aplicativo em execução no simulador e verá a notificação aparecer no seu dispositivo físico seu dispositivo físico deve estar realmente bloqueado com a tela de bloqueio ativada para ver a notificação uma notificação não aparecerá na tela se você estiver dentro do aplicativo que a está enviando quando receber a notificação abra o arquivo viewcontroller m do seu projeto precisamos incluir o parse no controlador de visualização adicionando o seguinte código ‘#import \<parse/parse h>’ no topo do arquivo viewcontroller 3\ em seguida, no arquivo viewcontroller m, chamaremos uma função de alerta a partir do método viewdidappear o alerta permitirá que você acione o código em nuvem que enviará uma notificação para o seu dispositivo certifique se de incluir o seguinte bloco de código após a função viewdidload viewcontroller m 4\ execute seu aplicativo no simulador e, quando o alerta pedindo para enviar o push aparecer, clique em “ok” no seu dispositivo físico, você deve ver o push aparecer na tela de bloqueio 6 chamar cloud code da api rest a api rest fornece uma maneira rápida e fácil de testar se sua função na nuvem está funcionando basta usar o código abaixo no seu terminal ou prompt de comando clique para saber mais sobre como começar a usar a linha de comando em linux , macos ou windows para testar as notificações push, basta usar o código rest enquanto o dispositivo estiver fechado 7 enviar notificações push direcionadas usando um objeto de usuário a partir de agora, usaremos um projeto ios diferente que já possui recursos básicos de cadastro e login vamos usar este projeto ios que podemos mostrar como detectar se um usuário está logado e, se sim, salvar sua instalação com um link para seu id de objeto para consulta no código em nuvem você pode baixar o projeto ios completo construído com o tutorial desta seção em nosso repositório do github , mas você ainda terá que fazer toda a configuração do tutorial anterior que explica como enviar notificações do painel do back4app obtenha a nova versão do aplicativo configurada e cadastre se ou faça login no aplicativo primeiro, certifique se de baixar o modelo funcional do github em repositório do github não vamos passar por todas as etapas de construção deste aplicativo, em vez disso, vamos nos concentrar na configuração do código em nuvem e por que ele funciona assim que você abrir este novo aplicativo, certifique se de colocar as credenciais do seu próprio aplicativo no arquivo appdelegate m appdelegate m 2\ este aplicativo tem algumas diferenças importantes em relação ao aplicativo anterior ele possui 2 seções, uma para estar logado no seu aplicativo e uma seção quando você não está logado no seu aplicativo a próxima grande mudança é a função ‘didregisterforremotenotificationswithdevicetoken’ do arquivo appdelegate m adicionamos 1 linha que armazena o id de objeto do usuário como parte do objeto de instalação dessa forma, podemos saber qual usuário está associado a qual objeto de instalação e podemos direcioná los individualmente para notificações appdelegate m 3\ como agora estamos armazenando o id do objeto do usuário como parte do objeto de instalação, não queremos solicitar um novo token de push até que o usuário esteja logado não queremos solicitar um token diretamente da função ‘application didfinishlaunchingwithoptions’ do arquivo appdelegate m, em vez disso, queremos chamá lo da função ‘viewdidappear’ do loggedinviewcontroller em ‘viewdidappear’ chamamos uma função no appdelegate para solicitar acesso a um token de notificação push da apple como você só pode visualizar esta seção uma vez que esteja logado, podemos assumir que o usuário está logado quando criamos o objeto de instalação e recuperamos o id do objeto loggedinviewcontroller appdelegate m 4\ ok, agora para se inscrever ou fazer login no seu dispositivo físico (iphone ou ipad) inicie o aplicativo você deve ver a imagem abaixo você deve se inscrever para criar um novo usuário ou fazer login se já tiver criado um usuário no seu aplicativo é assim que vai parecer agora você deve ser capaz de ver o loggedinviewcontroller deve parecer assim se você tentar enviar notificações para si mesmo, ainda não funcionará porque ainda não adicionamos esses métodos ao código da nuvem então, é isso que faremos a seguir 8 adicione os métodos de push direcionados ao código da nuvem abra seu arquivo main js que você criou anteriormente e adicione as seguintes funções para direcionar instalações por id de usuário é necessário usar a chave mestre nesta operação o código a seguir executa estas etapas parse server 3 x // main js 1 parse cloud define('sendpushtoyourself', (request) => { 2 let userid = request user id; 3 4 let query = new parse query(parse installation); 5 query equalto("userid", userid); 6 query descending("updatedat"); 7 return parse push send({ 8 where query, 9 data { 10 title "hello from the cloud code", 11 alert "back4app rocks! single message!", 12 } 13 }, { usemasterkey true }); 14 }); 15 16 parse cloud define('sendpushtoallusers', (request) => { 17 let currentuser = request user; 18 let userids = \[currentuser id]; 19 20 let query = new parse query(parse installation); 21 query containedin('userid', userids); 22 return parse push send({ 23 where query, 24 data { 25 title "hello from the cloud code", 26 alert "back4app rocks! group message!", 27 } 28 }, { usemasterkey true }); 29 }); parse server 2 x //main js 1 parse cloud define('sendpushtoyourself', function (request, response) { 2 var currentuser = request user; 3 var userid = currentuser id; 4 5 var query = new parse query("installation"); 6 query equalto("userid", userid); 7 query descending("updatedat"); 8 parse push send({ 9 where query, 10 data { 11 title "hello from the cloud code", 12 alert "back4app rocks! single message!", 13 } 14 }, { 15 usemasterkey true, 16 success function () { 17 response success("success sending a single push!"); 18 }, 19 error function (error) { 20 response error(error code + " " + error description); 21 } 22 }); 23 }); 24 25 parse cloud define('sendpushtoallusers', function (request, response) { 26 var currentuser = request user; 27 var userids = \[currentuser id]; 28 29 var query = new parse query(parse installation); 30 query containedin('userid', userids); 31 parse push send({ 32 where query, 33 data { 34 title "hello from the cloud code", 35 alert "back4app rocks! group message!", 36 } 37 }, { 38 usemasterkey true, 39 success function () { 40 response success('success sending a group push!'); 41 }, 42 error function (message) { 43 response error(error code + " " + error description); 44 } 45 }); 46 }); 9 fazer upload para o cloud code vá para o seu app em site do back4app e clique em painel painel encontre o cloud code cloud code e clique em funções e hospedagem web funções e hospedagem web ele se parece com isso 3\ faça upload ou crie um novo arquivo (você também pode editar o main js main js arquivo diretamente no navegador) em seguida, clique em implantar implantar como mostrado aqui 10 teste se você pode enviar notificações push direcionadas para si mesmo abra seu aplicativo no simulador enquanto mantém seu dispositivo físico fechado com a tela de bloqueio ativada você pode testar se ambas as funções de push estão funcionando pressionando o botão ‘enviar push para você mesmo’ e o botão ‘enviar push para um grupo de pessoas’ você deve ver os pushes aparecerem na tela de bloqueio do seu dispositivo considerações finais isso conclui o tutorial você deve ter uma compreensão firme de como enviar pushes com base no canal de um usuário ou no id do objeto de um usuário ou qualquer outra consulta que envolva obter o id do objeto do usuário lembre se de que, para armazenar o id do objeto do usuário, você deve adicioná lo à instalação do push e solicitar um token de push apenas quando o usuário estiver logado ao enviar pushes via consulta, esteja ciente de que é limitado por padrão a 100 resultados e alguns usuários podem ter mais de um objeto de instalação além disso, não é recomendado enviar pushes para um array de objetos de instalação que sejam maiores que 100 resultados isso pode resultar em alguns pushes não sendo enviados se você estiver lidando com grandes grupos de pessoas, é melhor usar canais ou enviar os pushes em solicitações repetidas está feito! neste estágio, você pode enviar notificações push usando cloud code através do back4app! parabéns!