1 00:00:02,280 --> 00:00:10,380 Aby więc również otrzymywać lokalne powiadomienia o Aiwass, musimy poprosić użytkownika o zgodę, a do tego możemy użyć 2 00:00:10,380 --> 00:00:14,610 innego pakietu, który wszyscy instalujemy z instalacją XPO. 3 00:00:14,940 --> 00:00:17,690 I to jest pakiet uprawnień Expo. 4 00:00:17,960 --> 00:00:23,430 Pakiet uprawnień Expo, jak sama nazwa wskazuje, pomaga nam zarządzać uprawnieniami. 5 00:00:23,550 --> 00:00:26,790 Pomaga nam żądać uprawnień i pracować z uprawnieniami. 6 00:00:27,660 --> 00:00:35,460 Po zainstalowaniu w aplikacji G. S. lub w dowolnym innym pliku, w którym chcesz uzyskać te uprawnienia. 7 00:00:35,490 --> 00:00:37,740 Ale tutaj mamy tylko jeden element. 8 00:00:38,400 --> 00:00:43,920 Po prostu importujemy wszystko jako uprawnienia z uprawnień expl. 9 00:00:44,040 --> 00:00:44,760 Właśnie tak. 10 00:00:45,600 --> 00:00:52,350 Po zaimportowaniu musimy poprosić użytkownika o zgodę na wyświetlanie powiadomień, zanim spróbujemy to 11 00:00:52,350 --> 00:00:52,920 zrobić. 12 00:00:53,430 --> 00:00:55,890 Teraz zależy to od twojej aplikacji. 13 00:00:56,010 --> 00:01:00,540 Gdy chcesz zapytać użytkownika, być może chcesz zapytać, kiedy aplikacja się uruchomi. 14 00:01:00,760 --> 00:01:03,210 Może lepszy moment jest lepszy. 15 00:01:03,480 --> 00:01:08,760 W końcu chcesz poprosić o uprawnienia, gdy jest bardzo prawdopodobne, że użytkownik udzieli Ci pozwolenia. 16 00:01:08,880 --> 00:01:11,970 W tej chwili Yeater zrobi to zaraz po uruchomieniu aplikacji. 17 00:01:12,150 --> 00:01:14,300 Więc faktycznie zaimportuję D. 18 00:01:14,980 --> 00:01:17,730 Faktycznie zabrałeś tutaj reakcję. 19 00:01:19,580 --> 00:01:28,040 Abyśmy mogli uruchomić logikę podczas montowania tego komponentu, po prostu przekazując pustą tablicę zależności tu i 20 00:01:28,510 --> 00:01:29,360 tam. 21 00:01:29,450 --> 00:01:35,990 Chcę teraz użyć tego obiektu uprawnień, który importujemy w tym roku, aby przede wszystkim sprawdzić 22 00:01:35,990 --> 00:01:41,300 status uprawnień, a następnie, jeśli nie mamy pozwolenia, aby o nie poprosić. 23 00:01:41,990 --> 00:01:47,840 Dlatego tutaj możemy wywołać get async, aby przede wszystkim sprawdzić bieżący status uprawnień. 24 00:01:48,380 --> 00:01:50,840 Teraz musimy określić, dla którego pozwolenia. 25 00:01:50,840 --> 00:01:52,430 Chcemy uzyskać te informacje. 26 00:01:52,850 --> 00:01:59,330 Możemy więc uzyskiwać dostęp do uprawnień, uruchamiać powiadomienia, bicze, wszystkie wielkie litery, aby 27 00:01:59,330 --> 00:02:05,030 sprawdzić, jaki jest obecny stan uprawnień do powiadomień w systemie Android. 28 00:02:05,060 --> 00:02:06,560 To nie zrobi nic na Aiwass. 29 00:02:06,560 --> 00:02:10,310 Dowie się, czy możemy już wysyłać uprawnienia. 30 00:02:11,280 --> 00:02:14,400 To zadanie asynchroniczne, dlatego daje nam obietnicę. 31 00:02:14,730 --> 00:02:18,030 Dlatego możemy użyć tutaj, aby kontynuować. 32 00:02:18,840 --> 00:02:23,150 Teraz tutaj otrzymamy status tego pozwolenia. 33 00:02:23,160 --> 00:02:28,410 Otrzymamy więc informację, czy mamy pozwolenie na wysyłanie powiadomień, czy nie. 34 00:02:30,410 --> 00:02:32,600 Teraz możemy sprawdzić, jaki mamy status. 35 00:02:33,500 --> 00:02:40,430 Istnieje kilka możliwych wartości, ale ostatecznie jesteśmy zainteresowani statusem przyznania, jeśli 36 00:02:40,430 --> 00:02:42,740 otrzymamy status ojca. 37 00:02:43,130 --> 00:02:44,960 Nie musimy kontynuować. 38 00:02:45,920 --> 00:02:52,910 Ale jeśli nie musimy jeszcze przyznawać tego statusu, chcemy poprosić o pozwolenie, ponieważ wcześniej nie 39 00:02:52,910 --> 00:02:54,530 otrzymaliśmy tych uprawnień. 40 00:02:55,100 --> 00:02:58,010 Teraz możemy ponownie użyć obiektu uprawnień. 41 00:02:58,400 --> 00:03:04,040 Ale tym razem nazywamy ask async, zanim sprawdzimy status. 42 00:03:04,190 --> 00:03:10,250 Teraz prosimy o nowe pozwolenie, ponieważ teraz wiemy, że nie mamy jeszcze pozwolenia, którego potrzebujemy. 43 00:03:11,120 --> 00:03:14,830 Więc teraz tutaj ponownie uzyskujemy dostęp do uprawnień, przemyślane powiadomienia. 44 00:03:15,170 --> 00:03:17,840 A teraz poprosi o uzyskanie tego pozwolenia. 45 00:03:18,590 --> 00:03:19,820 To zwróci obietnicę. 46 00:03:19,910 --> 00:03:24,740 Możemy więc ogólnie zwrócić go tutaj, aby pozostać w tym łańcuchu obietnic, który tutaj zaczęliśmy. 47 00:03:26,140 --> 00:03:30,460 A zatem, teraz tutaj możemy ponownie użyć, możesz również użyć asynchronicznego czekania. 48 00:03:30,610 --> 00:03:33,950 Ale w rzeczywistości nie powinieneś asynchronizować dysfunkcji. 49 00:03:34,270 --> 00:03:38,890 Zamiast tego musisz zawinąć to w nową funkcję, którą natychmiast wykonasz jako notatkę 50 00:03:38,890 --> 00:03:39,430 dodatkową. 51 00:03:39,820 --> 00:03:41,080 Ale tutaj wykorzysta stare dobre. 52 00:03:41,170 --> 00:03:43,930 Następnie złap i dojdzie do funkcji w tym. 53 00:03:43,990 --> 00:03:47,680 Następnie zablokuj po zakończeniu Aske Async. 54 00:03:48,520 --> 00:03:50,580 Teraz znowu otrzyma status. 55 00:03:50,800 --> 00:03:55,840 Ponieważ oczywiście to, że pytamy, nie oznacza, że otrzymujemy pozwolenie. 56 00:03:56,170 --> 00:04:00,370 Tak więc użytkownik może nadal odmówić zgody, aw tym przypadku nic nie możemy zrobić. 57 00:04:00,910 --> 00:04:05,590 Więc teraz chcemy sprawdzić ten status i dowiedzieć się, czy nadal nie jest przyznany. 58 00:04:05,950 --> 00:04:10,120 A jeśli tak jest, to, jak już powiedziałem, nic nie możemy zrobić. 59 00:04:10,420 --> 00:04:11,890 Więc tutaj możemy po prostu wrócić. 60 00:04:12,070 --> 00:04:13,750 Możemy wyświetlić wiadomość użytkownikowi. 61 00:04:13,770 --> 00:04:19,570 Możemy wyświetlić ostrzeżenie, że nie możemy teraz wysyłać żadnych powiadomień. 62 00:04:19,720 --> 00:04:21,910 Ale w końcu nic nie możemy tutaj zrobić. 63 00:04:22,420 --> 00:04:25,570 Jeśli jednak status zostanie przyznany, jesteśmy w porządku. 64 00:04:26,530 --> 00:04:33,040 Tak czy inaczej, możemy zdecydowanie zaplanować powiadomienie, ponieważ najgorszym scenariuszem jest brak uprawnień i 65 00:04:33,040 --> 00:04:35,530 dlatego nic się nie dzieje. 66 00:04:36,010 --> 00:04:40,720 Ale teraz, gdy pytamy, najlepszym scenariuszem jest uzyskanie pozwolenia. 67 00:04:40,900 --> 00:04:43,360 I Dale na ten rok odniesie sukces. 68 00:04:45,100 --> 00:04:46,690 Nie, właściwie muszę tu wkroczyć. 69 00:04:46,840 --> 00:04:48,940 Ten kod zawiera błąd. 70 00:04:49,390 --> 00:04:52,000 Nie otrzymujemy tutaj takiego statusu. 71 00:04:52,060 --> 00:04:59,170 Zamiast tego otrzymujemy obiekt status, który następnie ma właściwość status i jest taki sam jak tutaj. 72 00:05:00,730 --> 00:05:06,550 Po prostu nie otrzymaliśmy wcześniej błędu, ponieważ mimo że nasz kod technicznie nie działał, nadal prosiliśmy 73 00:05:06,640 --> 00:05:07,570 o pozwolenie. 74 00:05:07,930 --> 00:05:11,080 Ale teraz to właściwie sprawdza, czy mamy pozwolenie. 75 00:05:11,500 --> 00:05:16,930 Ponadto musimy również dostosować go w innym miejscu tutaj. 76 00:05:17,140 --> 00:05:23,290 Jeśli mamy już pozwolenie, oczywiście otrzymamy odpowiedź, mam nadzieję, i nie będziemy 77 00:05:23,410 --> 00:05:24,850 pytać ponownie. 78 00:05:25,120 --> 00:05:31,690 Oznacza to, że w następnym bloku mamy problem, ponieważ oczekujemy teraz, że uzyskamy nasz stan 79 00:05:31,720 --> 00:05:32,950 jako obiekt. 80 00:05:33,100 --> 00:05:38,800 Ale ponieważ nie pytaliśmy ponownie, ponieważ nie musieliśmy dostawać tego obiektu tutaj. 81 00:05:39,100 --> 00:05:41,560 Dostęp do statusu zakończy się niepowodzeniem. 82 00:05:41,650 --> 00:05:45,280 I pomyślimy, że nie dostaliśmy pozwolenia, mimo że je mamy. 83 00:05:45,850 --> 00:05:51,850 Więc tutaj powinniśmy najpierw zwrócić obiekt statusu, a następnie zablokować. 84 00:05:52,000 --> 00:05:57,430 Tak więc w następnym bloku jest to sposób odpowiedzialny za przypadki, w których mieliśmy już pozwolenie. 85 00:05:57,970 --> 00:06:04,780 Jest to zmiana, którą powinieneś wdrożyć, aby upewnić się, że aplikacja poprawnie wykrywa jej powiadomienia i 86 00:06:04,780 --> 00:06:10,510 status uprawnień i nie sądzi, że nie ma uprawnień, kiedy je faktycznie ma. 87 00:06:10,930 --> 00:06:12,190 A teraz bezpieczeństwo. 88 00:06:16,810 --> 00:06:20,890 I pamiętaj, aby ponownie uruchomić to na symulatorze iPhone'a. 89 00:06:21,190 --> 00:06:26,050 A teraz na samym początku jestem pytany, czy chcę udzielić tego pozwolenia z powodu właśnie 90 00:06:26,080 --> 00:06:26,850 dodanego kodu. 91 00:06:27,520 --> 00:06:34,240 A jeśli teraz klikniemy tutaj zezwolenie i uruchomimy powiadomienie i zamkniemy aplikację, zobaczmy, czy teraz działa 92 00:06:34,240 --> 00:06:36,460 to tutaj na Aiwass. 93 00:06:36,850 --> 00:06:39,760 Poczekajmy 10 sekund. 94 00:06:40,570 --> 00:06:45,190 A oto nasze pierwsze lokalne powiadomienie wysłane przez naszą aplikację. 95 00:06:45,760 --> 00:06:48,920 A teraz mamy to działa zarówno na ISIS i Android. 96 00:06:49,420 --> 00:06:52,870 I tak jak w Androidzie, jeśli klikniemy tutaj powiadomienie. 97 00:06:54,340 --> 00:06:57,460 Możemy otworzyć naszą aplikację, więc to działa. 98 00:06:57,760 --> 00:07:05,110 Teraz jedna rzecz, która nie działała lub w której nic się nie wydarzyło, była na pierwszym planie aplikacji. 99 00:07:05,620 --> 00:07:08,200 W niektórych przypadkach takie zachowanie jest pożądane. 100 00:07:08,440 --> 00:07:13,950 W niektórych przypadkach, jeśli aplikacja jest otwarta, brak wyświetlania powiadomienia może być absolutnie w porządku. 101 00:07:14,530 --> 00:07:20,920 Ale jeśli wrócę do przykładu aplikacji przypominającej, to, że jest na pierwszym planie, może nie oznaczać, 102 00:07:20,920 --> 00:07:25,650 że nie chcesz, aby użytkownik wiedział, że jakieś zadanie jest należne. 103 00:07:26,110 --> 00:07:32,620 Dlatego pozwól, że pokażę Ci, jak możesz obsługiwać powiadomienia, jeśli aplikacja jest na pierwszym planie.