1 00:00:02,280 --> 00:00:10,380 Portanto, para obter também notificações locais no Aiwass, precisamos pedir permissão ao usuário e, para isso, podemos usar outro pacote 2 00:00:10,380 --> 00:00:14,610 que todos nós instalamos com a instalação do XPO. 3 00:00:14,940 --> 00:00:17,690 E esse é o pacote de permissões da Expo. 4 00:00:17,960 --> 00:00:23,430 O pacote de permissões da Expo, como o nome indica, nos ajuda a gerenciar permissões. 5 00:00:23,550 --> 00:00:26,790 Isso nos ajuda a solicitar permissões e trabalhar com permissões. 6 00:00:27,660 --> 00:00:35,460 Então, uma vez que isso é instalado no aplicativo G. S. ou em qualquer outro arquivo em que você deseja obter essas permissões. 7 00:00:35,490 --> 00:00:37,740 Mas aqui só temos um componente. 8 00:00:38,400 --> 00:00:43,920 Simplesmente importamos tudo como permissões das permissões expl. 9 00:00:44,040 --> 00:00:44,760 Bem desse jeito. 10 00:00:45,600 --> 00:00:52,350 E com isso importado, precisamos pedir permissão ao usuário para mostrar notificações antes de tentar fazer 11 00:00:52,350 --> 00:00:52,920 isso. 12 00:00:53,430 --> 00:00:55,890 Agora, isso depende da sua aplicação. 13 00:00:56,010 --> 00:01:00,540 Quando você quiser perguntar ao usuário, talvez queira perguntar quando o aplicativo é iniciado. 14 00:01:00,760 --> 00:01:03,210 Talvez um ponto de tempo melhor seja melhor. 15 00:01:03,480 --> 00:01:08,760 Afinal, você deseja solicitar permissões quando é muito provável que o usuário conceda a permissão. 16 00:01:08,880 --> 00:01:11,970 No momento, o Yeater fará isso exatamente quando o aplicativo iniciar. 17 00:01:12,150 --> 00:01:14,300 Então eu vou importar D. 18 00:01:14,980 --> 00:01:17,730 Você, de fato, tirou aqui de reagir. 19 00:01:19,580 --> 00:01:28,040 Para que possamos executar a lógica quando esse componente é montado simplesmente passando uma matriz de dependências vazia aqui e 20 00:01:28,510 --> 00:01:29,360 ali. 21 00:01:29,450 --> 00:01:35,990 Agora, quero usar esse objeto de permissões, que importamos este ano para, em primeiro lugar, verificar 22 00:01:35,990 --> 00:01:41,300 o status das permissões e, posteriormente, se não tivermos permissão para solicitá-lo. 23 00:01:41,990 --> 00:01:47,840 Portanto, aqui podemos chamar get async para, em primeiro lugar, verificar o status atual das permissões. 24 00:01:48,380 --> 00:01:50,840 Agora precisamos especificar para qual permissão. 25 00:01:50,840 --> 00:01:52,430 Queremos obter essa informação. 26 00:01:52,850 --> 00:01:59,330 Portanto, podemos acessar permissões, iniciar notificações, chicotes, todas as letras maiúsculas, para verificar como 27 00:01:59,330 --> 00:02:05,030 o status atual das permissões é para permissões de notificação no Android. 28 00:02:05,060 --> 00:02:06,560 Isso não fará nada no Aiwass. 29 00:02:06,560 --> 00:02:10,310 Ele descobrirá se já temos permissão para enviar permissões. 30 00:02:11,280 --> 00:02:14,400 Agora, essa é uma tarefa assíncrona e, portanto, nos dá uma promessa. 31 00:02:14,730 --> 00:02:18,030 Portanto, podemos usar aqui para prosseguir. 32 00:02:18,840 --> 00:02:23,150 Agora aqui, obteremos o status dessa permissão. 33 00:02:23,160 --> 00:02:28,410 Portanto, obteremos informações se temos permissão para enviar notificações ou não. 34 00:02:30,410 --> 00:02:32,600 Agora podemos verificar qual status temos. 35 00:02:33,500 --> 00:02:40,430 Existem alguns valores possíveis aqui, mas, no final, estamos interessados no status concedido se obtivermos 36 00:02:40,430 --> 00:02:42,740 o status de pai. 37 00:02:43,130 --> 00:02:44,960 Não precisamos continuar. 38 00:02:45,920 --> 00:02:52,910 Mas se ainda não precisamos conceder esse status, queremos pedir permissão, porque não recebemos 39 00:02:52,910 --> 00:02:54,530 essas permissões antes. 40 00:02:55,100 --> 00:02:58,010 Então agora podemos usar o objeto de permissões novamente. 41 00:02:58,400 --> 00:03:04,040 Mas desta vez chamamos ask async antes de verificar o status. 42 00:03:04,190 --> 00:03:10,250 Agora estamos solicitando uma nova permissão, porque agora sabemos que ainda não temos a permissão necessária. 43 00:03:11,120 --> 00:03:14,830 Então agora aqui acessamos novamente as permissões, pensou as notificações. 44 00:03:15,170 --> 00:03:17,840 E agora isso pedirá para obter essa permissão. 45 00:03:18,590 --> 00:03:19,820 Isso retornará uma promessa. 46 00:03:19,910 --> 00:03:24,740 Assim, podemos devolvê-lo aqui para permanecer nessa cadeia de promessas, que começamos aqui. 47 00:03:26,140 --> 00:03:30,460 E, portanto, agora aqui podemos usar novamente, você também pode usar async wait. 48 00:03:30,610 --> 00:03:33,950 Mas, na verdade, você não deve fazer disfunção assíncrona. 49 00:03:34,270 --> 00:03:38,890 Em vez disso, você teria que agrupar isso em uma nova função, que você executa imediatamente apenas como uma 50 00:03:38,890 --> 00:03:39,430 nota lateral. 51 00:03:39,820 --> 00:03:41,080 Mas aqui vai usar bom e velho. 52 00:03:41,170 --> 00:03:43,930 Então pegue e alcançará a função nisto. 53 00:03:43,990 --> 00:03:47,680 Em seguida, bloqueie depois que o Aske Async terminar. 54 00:03:48,520 --> 00:03:50,580 Agora, novamente, aqui receberá o status. 55 00:03:50,800 --> 00:03:55,840 Porque é claro, só porque estamos perguntando, não significa que estamos recebendo a permissão. 56 00:03:56,170 --> 00:04:00,370 Portanto, o usuário ainda pode ter sua permissão negada e, nesse caso, não há nada que possamos fazer. 57 00:04:00,910 --> 00:04:05,590 Então agora queremos verificar esse status e descobrir se ele ainda não foi concedido. 58 00:04:05,950 --> 00:04:10,120 E se for esse o caso, então, como eu disse, não há nada que possamos fazer. 59 00:04:10,420 --> 00:04:11,890 Então aqui podemos apenas retornar. 60 00:04:12,070 --> 00:04:13,750 Podemos mostrar uma mensagem para o usuário. 61 00:04:13,770 --> 00:04:19,570 Podemos mostrar um alerta de que agora não podemos enviar notificações. 62 00:04:19,720 --> 00:04:21,910 Mas no final, não há nada que possamos fazer aqui. 63 00:04:22,420 --> 00:04:25,570 Se o status for concedido, no entanto, estamos bem. 64 00:04:26,530 --> 00:04:33,040 Agora, de qualquer forma, podemos definitivamente agendar uma notificação, porque o pior cenário é que não 65 00:04:33,040 --> 00:04:35,530 temos permissões e, portanto, nada acontece. 66 00:04:36,010 --> 00:04:40,720 Mas agora que estamos perguntando, o melhor cenário é obter a permissão. 67 00:04:40,900 --> 00:04:43,360 E Dale para este ano terá sucesso. 68 00:04:45,100 --> 00:04:46,690 Não, na verdade eu tenho que entrar aqui. 69 00:04:46,840 --> 00:04:48,940 Este código tem um erro. 70 00:04:49,390 --> 00:04:52,000 Nós não temos a cadeia de status como esta aqui. 71 00:04:52,060 --> 00:04:59,170 Em vez disso, obtemos o objeto status, que possui uma propriedade status e o mesmo que o caso aqui. 72 00:05:00,730 --> 00:05:06,550 Nós simplesmente não recebemos um erro antes porque, embora nosso código tecnicamente não funcionasse, solicitamos 73 00:05:06,640 --> 00:05:07,570 permissão ainda. 74 00:05:07,930 --> 00:05:11,080 Mas agora isso verifica corretamente se temos a permissão. 75 00:05:11,500 --> 00:05:16,930 Além disso, também precisamos ajustá-lo em outro local aqui. 76 00:05:17,140 --> 00:05:23,290 Se já tivemos a permissão, é claro que seremos concedidos como resposta aqui, espero, e 77 00:05:23,410 --> 00:05:24,850 não pediremos novamente. 78 00:05:25,120 --> 00:05:31,690 Isso significa que no próximo bloco, porém, temos um problema, porque agora esperamos obter nosso estado 79 00:05:31,720 --> 00:05:32,950 como objeto. 80 00:05:33,100 --> 00:05:38,800 Mas como não perguntamos novamente, porque não precisávamos, não conseguiremos esse objeto aqui. 81 00:05:39,100 --> 00:05:41,560 Portanto, o acesso ao status falhará. 82 00:05:41,650 --> 00:05:45,280 E pensaremos que não recebemos a permissão, mesmo que a tenhamos. 83 00:05:45,850 --> 00:05:51,850 Então, aqui devemos retornar o objeto status primeiro e depois bloquear. 84 00:05:52,000 --> 00:05:57,430 Portanto, no próximo bloco, é uma maneira responsável pelos casos em que já tínhamos permissão. 85 00:05:57,970 --> 00:06:04,780 Essa é uma alteração que você deve implementar para garantir que seu aplicativo detecte corretamente o status de 86 00:06:04,780 --> 00:06:10,510 notificações e permissões e não pense que não possui permissões quando realmente as possui. 87 00:06:10,930 --> 00:06:12,190 Então agora vamos à segurança. 88 00:06:16,810 --> 00:06:20,890 E certifique-se de reiniciar isso no seu simulador de iPhone. 89 00:06:21,190 --> 00:06:26,050 E agora, no início, perguntam-me se quero conceder essa permissão por causa do código que acabamos 90 00:06:26,080 --> 00:06:26,850 de adicionar. 91 00:06:27,520 --> 00:06:34,240 E se agora clicarmos em Permitir aqui e acionarmos uma notificação e fecharmos o aplicativo, vamos ver se isso 92 00:06:34,240 --> 00:06:36,460 agora funciona aqui no Aiwass. 93 00:06:36,850 --> 00:06:39,760 Vamos aguardar os 10 segundos. 94 00:06:40,570 --> 00:06:45,190 E aqui está a nossa primeira notificação local enviada pelo nosso aplicativo. 95 00:06:45,760 --> 00:06:48,920 E agora conseguimos trabalhar tanto no ISIS quanto no Android. 96 00:06:49,420 --> 00:06:52,870 E, assim como no Android, se clicarmos em uma notificação aqui. 97 00:06:54,340 --> 00:06:57,460 Podemos abrir nosso aplicativo, para que funcione. 98 00:06:57,760 --> 00:07:05,110 Agora, uma coisa que não funcionou ou onde nada aconteceu foi quando o aplicativo está em primeiro plano. 99 00:07:05,620 --> 00:07:08,200 Agora, em alguns casos, esse é o comportamento que você deseja. 100 00:07:08,440 --> 00:07:13,950 Em alguns casos, se o aplicativo estiver aberto, não mostrar a notificação pode ser absolutamente adequado. 101 00:07:14,530 --> 00:07:20,920 Mas se eu voltar ao exemplo de aplicativo de lembrete, apenas porque está em primeiro plano, pode não significar 102 00:07:20,920 --> 00:07:25,650 que você não deseja que o usuário saiba que alguma tarefa está prevista. 103 00:07:26,110 --> 00:07:32,620 Portanto, deixe-me mostrar a seguir como você pode lidar com as notificações se o aplicativo estiver em primeiro plano.