1 00:00:02,240 --> 00:00:09,890 Agora, vamos aplicar o que aprendemos nas últimas palestras em nosso projeto de loja que construímos para todo este curso. 2 00:00:10,430 --> 00:00:17,870 Aqui, eu consegui esse projeto com o React Navigation cinco integrado tantas vezes em uma seção em que mostro 3 00:00:17,870 --> 00:00:20,670 como atualizar para reagir a navegação cinco. 4 00:00:21,260 --> 00:00:23,480 E eu não mudei mais nada. 5 00:00:23,750 --> 00:00:27,530 Portanto, este é o aplicativo como o conhecemos, rodando nos simuladores. 6 00:00:27,890 --> 00:00:34,040 E, querido, é claro que podemos criar uma conta com algumas credenciais aqui. 7 00:00:34,640 --> 00:00:36,410 Primeiro de tudo, preciso me inscrever. 8 00:00:37,380 --> 00:00:41,460 E agora aqui podemos adicionar produtos e assim por diante. 9 00:00:41,730 --> 00:00:46,350 Agora minha idéia está morta quando adicionamos um produto aqui. 10 00:00:46,710 --> 00:00:54,120 Na verdade, não armazenamos apenas o produto com todos os dados que estamos enviando até o momento, quando 11 00:00:54,120 --> 00:00:57,960 criamos um produto, estamos compartilhando título, descrição, imagem. 12 00:00:57,990 --> 00:01:05,970 Você é El Price e proprietário I. D. Mas, em vez disso, além de compartilhar tudo 13 00:01:05,970 --> 00:01:10,530 isso, também quero adicionar o token de envio do dispositivo do usuário que adicionou seu produto. 14 00:01:10,770 --> 00:01:15,750 Então, para afastar o Tolkan do vendedor, também quero adicioná-lo ao produto. 15 00:01:16,170 --> 00:01:16,710 Por quê? 16 00:01:17,060 --> 00:01:23,700 Para que, quando buscarmos os dados do produto, também possamos fazer o download do token push que pertence a um produto. 17 00:01:24,270 --> 00:01:30,960 E, embora não mostremos isso para os outros usuários, vamos usá-lo no código para garantir que, quando um 18 00:01:30,960 --> 00:01:35,280 pedido for feito, quando adicionamos um pedido, não apenas armazenemos. 19 00:01:35,280 --> 00:01:44,100 Papai solicitou dados no banco de dados, mas também enviamos uma notificação por push ao proprietário do produto 20 00:01:44,130 --> 00:01:49,740 que acabou de ser solicitado, informando que o produto foi solicitado. 21 00:01:50,100 --> 00:01:51,570 Essa é a minha ideia aqui. 22 00:01:53,060 --> 00:01:58,820 Isso, é claro, significa que teremos que analisar os itens que estão no carrinho e, em seguida, enviaremos 23 00:01:58,880 --> 00:02:01,750 uma notificação por push para cada produto, basicamente. 24 00:02:01,910 --> 00:02:02,840 Essa é a minha ideia. 25 00:02:03,780 --> 00:02:09,740 Portanto, para que a dívida garanta que isso funcione, precisamos primeiro nos preparar. 26 00:02:09,810 --> 00:02:12,120 Projeta para notificações push. 27 00:02:14,240 --> 00:02:22,100 Isso significa que, em primeiro lugar, devemos acessar o App Jason e adicionar a entrada do Android 28 00:02:22,100 --> 00:02:28,030 aqui, onde dissemos que usar a próxima API de notificações como verdadeira. 29 00:02:28,400 --> 00:02:31,430 Foi o que eu mostrei antes nas outras palestras também. 30 00:02:32,030 --> 00:02:35,090 Todos nós precisamos pedir permissão ao usuário. 31 00:02:35,600 --> 00:02:38,210 Então a questão é onde queremos fazer isso. 32 00:02:38,210 --> 00:02:40,600 Claro, já que é Steve. 33 00:02:40,640 --> 00:02:44,690 Criador de um produto que deve receber notificações por push. 34 00:02:45,110 --> 00:02:50,270 Pedirei permissão antes de criar um novo produto. 35 00:02:50,750 --> 00:02:57,260 Portanto, temos nosso usuário, nossa tela de produto adicionado, onde criamos um novo produto. 36 00:03:00,100 --> 00:03:07,660 E aí, no final, acionamos uma ação no arquivo de produtos que James acionará aqui, cria uma ação 37 00:03:07,660 --> 00:03:08,650 do produto. 38 00:03:09,220 --> 00:03:12,550 E agora minhas idéias que peço permissão aqui. 39 00:03:12,940 --> 00:03:19,600 Depois, também busco o token aqui e podemos adicionar um token aos dados enviados que estão sendo enviados 40 00:03:19,600 --> 00:03:20,470 ao servidor. 41 00:03:21,540 --> 00:03:31,380 Portanto, primeiro vamos instalar o pacote de notificações da Expo e também as permissões da Expo. 42 00:03:32,190 --> 00:03:36,420 E então vamos usar os dois exatamente como aprendemos nas palestras deste módulo. 43 00:03:38,870 --> 00:03:44,090 Portanto, com isso instalado aqui e crie o produto antes de fazer qualquer outra coisa. 44 00:03:45,160 --> 00:03:53,320 Queremos usar a API de notificações e, para isso, precisamos importar tudo como notificações. 45 00:03:54,580 --> 00:03:55,240 De. 46 00:03:57,070 --> 00:04:05,110 Notificações da Expo, e isso também já importa tudo como permissões das permissões da Expo. 47 00:04:05,680 --> 00:04:15,300 E com esses dois, a API é importada no produto de criação, podemos usar notificações para obter nosso token de envio da expo. 48 00:04:15,700 --> 00:04:18,850 No entanto, como você sabe, não queremos fazer isso diretamente. 49 00:04:18,970 --> 00:04:26,170 Em vez disso, antes de tudo, queremos verificar o status das permissões, para que possamos usá-las 50 00:04:26,560 --> 00:04:30,610 e obter as informações sobre a permissão dessas notificações. 51 00:04:31,150 --> 00:04:32,350 Isso retorna uma promessa. 52 00:04:32,440 --> 00:04:35,980 E como estamos na função assíncrona aqui, podemos simplesmente aguardá-la. 53 00:04:36,880 --> 00:04:44,140 Agora, o que retornaremos é o objeto status morto, que possui essa propriedade status que nos diz se uma 54 00:04:44,140 --> 00:04:46,180 permissão foi concedida ou não. 55 00:04:46,810 --> 00:04:49,570 Para que possamos verificar se o objeto status. 56 00:04:50,430 --> 00:04:56,190 O status do DOT talvez não seja concedido, o que significa que ainda não temos permissões. 57 00:04:56,760 --> 00:05:03,450 Em seguida, queremos usar a API de permissões novamente para solicitar a permissão dessas notificações. 58 00:05:03,540 --> 00:05:04,440 Com este código. 59 00:05:04,830 --> 00:05:06,660 E isso é tudo o que tínhamos antes. 60 00:05:06,780 --> 00:05:09,740 Agora, apenas com espera assíncrona, em vez de então. 61 00:05:09,990 --> 00:05:11,700 Mas fora isso, é o mesmo. 62 00:05:12,570 --> 00:05:16,470 E aqui obteremos novamente nosso status. 63 00:05:16,890 --> 00:05:17,490 Objeto. 64 00:05:18,690 --> 00:05:22,100 Agora, como teríamos um conflito de nomes, todos vocês serão nomeados este ano. 65 00:05:22,230 --> 00:05:23,970 Objeto de status atualizado. 66 00:05:25,630 --> 00:05:31,000 E, é claro, aqui também devemos esperar, porque o pai é síncrono e retorna uma promessa. 67 00:05:31,840 --> 00:05:40,210 Portanto, neste ponto do tempo, agora podemos verificar se o objeto de status atualizado possui um status. 68 00:05:41,190 --> 00:05:42,780 Isso não é igual ao concedido. 69 00:05:42,930 --> 00:05:47,910 E se for esse o caso, sabemos que não poderemos enviar notificações por push. 70 00:05:50,190 --> 00:05:52,050 E papai está absolutamente bem. 71 00:05:52,410 --> 00:06:01,440 Vou simplesmente criar uma variável de token aqui e definir um token igual a Knol aqui para deixar bem claro que simplesmente não 72 00:06:01,440 --> 00:06:03,180 temos um token aqui. 73 00:06:03,390 --> 00:06:06,780 Na verdade, não vamos nomear seu token porque já usamos esse nome. 74 00:06:06,990 --> 00:06:07,560 Vamos nomear. 75 00:06:08,010 --> 00:06:08,970 Push token. 76 00:06:09,150 --> 00:06:11,190 Porque papai é o que queremos recuperar no final. 77 00:06:12,090 --> 00:06:17,610 Portanto, definimos como nulo aqui se absolutamente não obtivemos permissão, porque não há nada que possamos fazer 78 00:06:17,610 --> 00:06:21,840 nesse caso, porque simplesmente não temos permissão para enviar notificações por push. 79 00:06:22,110 --> 00:06:23,070 É o que é. 80 00:06:24,220 --> 00:06:27,570 Mas, no caso do ELT, o pai é concedido. 81 00:06:28,000 --> 00:06:36,970 Nesse caso, podemos definir nosso token push igual à notificação Stotz para obter XPO Push, assíncrona Tolkan e, é claro, isso 82 00:06:36,970 --> 00:06:38,530 é uma promessa. 83 00:06:38,830 --> 00:06:40,570 Então devemos esperar isso. 84 00:06:40,960 --> 00:06:43,780 E, claro, não recebemos diretamente o token. 85 00:06:44,560 --> 00:06:47,980 Em vez disso, obtemos um objeto que possui um campo de dados, se você se lembra. 86 00:06:48,370 --> 00:06:52,360 E assim poderíamos colocar isso aqui entre parênteses e chamar dados sobre isso. 87 00:06:53,050 --> 00:06:56,080 Isso significa simplesmente que, antes de tudo, essa promessa está resolvida. 88 00:06:56,230 --> 00:07:02,680 Em seguida, chamamos dados no objeto resolvido depois que esperamos que ele prometa e veja o valor nos dados, que 89 00:07:02,680 --> 00:07:05,020 depois armazenamos na variável push token. 90 00:07:05,710 --> 00:07:08,680 Então, aqui teremos nosso token de envio, do qual precisamos. 91 00:07:09,370 --> 00:07:12,130 Agora, quando tivermos isso, podemos continuar. 92 00:07:12,400 --> 00:07:13,420 E já que estávamos esperando. 93 00:07:13,450 --> 00:07:16,780 Esse código será executado apenas quando o pai terminar. 94 00:07:17,170 --> 00:07:19,170 Essa linha, é claro, deve ser removida agora. 95 00:07:19,810 --> 00:07:26,050 E agora, com os dados que enviamos para o servidor, não enviamos apenas a descrição do título, o 96 00:07:26,050 --> 00:07:29,130 proprietário I. D. , mas também o token de envio do proprietário. 97 00:07:29,800 --> 00:07:31,840 E esse será o nosso token de envio aqui. 98 00:07:34,480 --> 00:07:38,990 E isso é agora ou é o nosso token que recebemos do XPO. 99 00:07:40,860 --> 00:07:47,790 Portanto, agora, sempre que criamos um novo produto, o ideal é que possamos enviar nosso token de envio. 100 00:07:48,210 --> 00:07:53,220 Agora, conseguir o Tolkan e tudo isso não funcionará em simuladores, como você aprendeu. 101 00:07:53,450 --> 00:07:57,420 Então, Dan, para todas as garantias e, novamente, o teste está no meu iPhone real. 102 00:07:57,900 --> 00:08:03,090 Então, novamente, iniciei meu aplicativo aqui e entrei com o usuário que criamos. 103 00:08:03,570 --> 00:08:09,120 E agora, no Admon, vou criar um novo impulso de produto. 104 00:08:10,230 --> 00:08:10,890 Tolkan. 105 00:08:17,570 --> 00:08:19,520 Agora precisamos imaginar que você é ele. 106 00:08:21,430 --> 00:08:23,560 E eu apenas peguei uma imagem aleatória. 107 00:08:24,550 --> 00:08:26,080 E Ellender, um prêmio aqui. 108 00:08:27,350 --> 00:08:28,340 E uma descrição. 109 00:08:30,540 --> 00:08:36,870 E confirmei isso e estou recebendo um erro, pai, o objeto de status atualizado não foi encontrado e a dívida faz 110 00:08:36,870 --> 00:08:42,810 sentido porque, na verdade, estou definindo isso aqui como uma verificação, mas depois a uso fora da verificação segura 111 00:08:42,810 --> 00:08:43,270 . 112 00:08:43,270 --> 00:08:47,430 Então, é claro, isso tem o escopo errado, pouca supervisão do meu lado. 113 00:08:47,820 --> 00:08:53,820 Podemos consertar isso reutilizando o objeto status aqui, transformando-o em uma variável com 114 00:08:53,820 --> 00:08:54,300 let. 115 00:08:54,870 --> 00:09:02,040 Então aqui simplesmente configuramos nosso objeto de status com um novo valor e depois usamos state como objeto novamente. 116 00:09:02,040 --> 00:09:03,090 Aqui está se verificar. 117 00:09:03,390 --> 00:09:05,600 Agora, o escopo está correto e isso funcionará. 118 00:09:07,950 --> 00:09:09,090 Então, vamos tentar novamente. 119 00:09:13,390 --> 00:09:20,560 Empurre, teste a imagem inserida que escolheu inserir um preço e uma descrição. 120 00:09:21,370 --> 00:09:23,770 Isto é um teste. 121 00:09:24,460 --> 00:09:26,290 Então fechar é confirmar isso. 122 00:09:26,860 --> 00:09:28,480 E agora isso parece funcionar. 123 00:09:28,540 --> 00:09:29,770 Eu adicionei meu produto. 124 00:09:30,810 --> 00:09:34,350 E o que será interessante agora é o nosso banco de dados. 125 00:09:35,030 --> 00:09:36,940 Aqui está o meu banco de dados FIREBASE. 126 00:09:37,020 --> 00:09:40,840 Portanto, o back-end que estamos usando e um novo produto foi adicionado aqui. 127 00:09:41,160 --> 00:09:44,170 E, de fato, aqui vemos nosso token de envio novamente. 128 00:09:44,490 --> 00:09:47,640 Adicionei uma sobreposição ao meu token de dispositivo real. 129 00:09:47,880 --> 00:09:55,050 Mas agora é um token de envio que permite enviar uma notificação ao usuário que criou este produto. 130 00:09:55,530 --> 00:10:02,460 Portanto, agora vamos trabalhar nessa outra parte e garantir que realmente enviaremos uma notificação quando 131 00:10:02,490 --> 00:10:04,470 realmente solicitarmos um produto.