1 00:00:02,100 --> 00:00:07,110 Teraz ta aplikacja React Native została zbudowana za pomocą expo, jak wiesz. Teraz, jak wspomniałem na początku 2 00:00:07,110 --> 00:00:12,690 kursu, nadal jest to zwykła aplikacja React Native, dlatego jest dostępna jako 3 00:00:12,690 --> 00:00:19,170 dodatkowe opakowanie, które zapewnia wiele wygodnych funkcji po wyjęciu z pudełka, co ułatwia budowanie 4 00:00:19,170 --> 00:00:20,820 tej aplikacji i 5 00:00:20,820 --> 00:00:27,770 jest jak powłoka, aplikacja, w której działa nasza aplikacja, dzięki czemu korzystanie z wielu natywnych 6 00:00:27,780 --> 00:00:31,860 funkcji urządzenia jest łatwiejsze, a zwłaszcza łatwiejsze w konfiguracji. 7 00:00:31,860 --> 00:00:37,380 Teraz, jak już wspomniałem na początku tego modułu, w osobnym module pokażę, jak można dodawać 8 00:00:37,380 --> 00:00:40,590 funkcje urządzeń natywnych do aplikacji innych niż expo, ale 9 00:00:40,890 --> 00:00:46,170 tak naprawdę, jeśli nie masz powodu, aby nie używać expo zdecydowanie zalecamy korzystanie z 10 00:00:46,170 --> 00:00:53,400 niego, ponieważ expo, jeśli sprawdzisz ich dokumenty, ma wiele wbudowanych funkcji i wiele wbudowanych natywnych modułów, których możesz użyć, więc 11 00:00:53,400 --> 00:00:54,570 funkcje natywnych 12 00:00:54,570 --> 00:00:56,460 urządzeń możesz łatwo dodać i 13 00:00:57,090 --> 00:01:01,620 zobaczysz pełną listę tutaj, przechodząc do dokumentacji, a tam do referencji API. 14 00:01:01,620 --> 00:01:07,650 Tutaj widzisz wiele rzeczy, które możesz dodać do swojej aplikacji, a są to głównie 15 00:01:08,070 --> 00:01:11,220 natywne funkcje urządzeń, które są dostarczane przez 16 00:01:11,340 --> 00:01:16,770 expo po wyjęciu z pudełka, więc nadal musisz coś zainstalować, ale nie 17 00:01:16,770 --> 00:01:23,700 musisz wykonywać instrukcji konfiguracja i jak zobaczysz w budowaniu aplikacji bez modułu expo, istnieje pewna konfiguracja, 18 00:01:23,790 --> 00:01:30,270 którą możesz potrzebować, jeśli dodajesz natywne moduły, natywne pakiety funkcji urządzenia do aplikacji non-expo, więc 19 00:01:30,270 --> 00:01:32,560 jest to naprawdę słodkie tutaj. 20 00:01:32,650 --> 00:01:38,360 Teraz chcę użyć aparatu i rzeczywiście istnieje pakiet aparatu, który można dodać. 21 00:01:38,610 --> 00:01:42,510 Możemy faktycznie użyć tego, aby uzyskać dostęp do 22 00:01:42,510 --> 00:01:43,620 kamery urządzenia, 23 00:01:43,620 --> 00:01:49,620 jest to idealne, jeśli potrzebujesz zbudować aplikację, która naprawdę musi wiele zrobić z aparatem, 24 00:01:49,620 --> 00:01:55,440 jeśli budujesz jak Instagram, jak aplikacja, w której naprawdę chcesz kontrolować cały ekran 25 00:01:55,440 --> 00:02:00,760 kamery i cały ruch kamery, tak naprawdę nie chcę tego tutaj robić. 26 00:02:00,780 --> 00:02:02,960 Chcę używać zwykłej kamery urządzenia, nie 27 00:02:02,970 --> 00:02:04,660 potrzebuję tam nic specjalnego, 28 00:02:04,740 --> 00:02:08,150 zależy mi tylko na zrobieniu zdjęcia, które użytkownik może 29 00:02:08,230 --> 00:02:13,620 zrobić, i za to dostajemy próbnik obrazu. Pozwala nam to również korzystać z kamery urządzenia, 30 00:02:13,620 --> 00:02:16,200 ale nie pozwala nam to tak bardzo dostosowywać 31 00:02:16,200 --> 00:02:18,450 kamery, ale właśnie tego tu potrzebuję. 32 00:02:18,450 --> 00:02:25,050 Teraz, aby uzyskać do niego dostęp, wystarczy uruchomić tę komendę expo install, która, nawiasem mówiąc, jest 33 00:02:25,170 --> 00:02:30,750 jak npm install, tylko upewnia się, że instaluje wersję pakietu, która gwarantuje pracę z 34 00:02:30,750 --> 00:02:38,070 naszą konkretną wersją expo używamy w tej aplikacji. Więc po prostu skopiuję to polecenie, a następnie 35 00:02:38,090 --> 00:02:45,530 w tym projekcie możemy uruchomić expo install selektor obrazu expo. Wciśnij Enter, a to teraz zainstaluje ten pakiet z 36 00:02:45,530 --> 00:02:49,580 instalacją npm za kulisami, właśnie to robi tutaj, tylko w 37 00:02:49,610 --> 00:02:55,880 wersji, która pasuje do naszego zestawu expo SDK, którego używamy w tym projekcie, i to teraz 38 00:02:55,880 --> 00:02:58,190 go zainstaluje i to wszystko, nie 39 00:02:58,190 --> 00:03:00,410 jest wymagana dodatkowa konfiguracja. 40 00:03:00,410 --> 00:03:02,800 Nie musimy dotykać żadnego pliku konfiguracyjnego, 41 00:03:02,810 --> 00:03:04,570 nie musimy robić nic więcej, 42 00:03:04,640 --> 00:03:07,970 dzięki temu możemy korzystać z tej funkcji i to 43 00:03:07,970 --> 00:03:09,690 oczywiście bardzo łatwe. 44 00:03:09,770 --> 00:03:15,280 Dzięki temu możemy zacząć go używać i chcę zacząć używać go tutaj na nowym ekranie miejsca, 45 00:03:15,350 --> 00:03:17,270 gdzie mamy prawo do wprowadzania 46 00:03:17,270 --> 00:03:22,480 tekstu, tam też chcę teraz dodać przycisk, który użytkownik może nacisnąć, aby otworzyć kamerę. 47 00:03:22,490 --> 00:03:27,680 Teraz oczywiście dla wszystkich tych natywnych funkcji urządzenia, a także wielu funkcji, których oczywiście nie możemy 48 00:03:27,680 --> 00:03:32,660 omówić w tym kursie, zawsze nauczyłeś się, jak możesz ich używać tutaj w swoich oficjalnych 49 00:03:32,660 --> 00:03:38,260 dokumentach expo, tam dowiedziałeś się, do których metod i właściwości masz dostęp tam znajdziesz kilka krótkich przykładów dla 50 00:03:38,300 --> 00:03:43,220 wielu pakietów, więc zdecydowanie powinieneś to sprawdzić. W przypadku aparatu możesz oczywiście 51 00:03:43,220 --> 00:03:46,920 śledzić, ponieważ użyjemy go tutaj, aby zrobić zdjęcie. 52 00:03:46,970 --> 00:03:54,830 Stworzę nowy komponent, ImageSelector. js, możesz nazwać to, co chcesz, 53 00:03:54,830 --> 00:04:05,810 w którym importuję React z React i gdzie importuję widok i przycisk, a także tekst z React Native, a 54 00:04:06,290 --> 00:04:11,710 także arkusz stylów, ponieważ chcę stylizować mój próbnik obrazu. 55 00:04:11,870 --> 00:04:16,130 Nazwijmy to właściwie próbnik obrazów, podoba mi się to, mój komponent wyboru obrazów. 56 00:04:16,790 --> 00:04:23,570 Więc tutaj selektor obrazów jest wtedy normalnym składnikiem, w którym chcę skonfigurować 57 00:04:23,580 --> 00:04:31,290 niektóre style za pomocą Arkusza stylów. Metoda tworzenia i gdzie w końcu eksportuję komponent wyboru obrazu. 58 00:04:31,310 --> 00:04:37,510 Co się teraz stanie w komponencie wyboru obrazu? Na koniec zwrócę tutaj 59 00:04:37,780 --> 00:04:44,750 widok, który powinien zawierać inny widok, w którym mogę wyświetlić podgląd obrazu. 60 00:04:44,770 --> 00:04:50,500 Więc tam chcę mieć komponent tekstowy, w którym mówię, że nie wybrano jeszcze obrazu, co jest 61 00:04:50,530 --> 00:04:52,840 moją rezerwową treścią, jeśli nie został 62 00:04:52,930 --> 00:04:54,920 jeszcze wybrany, w przeciwnym razie 63 00:04:54,940 --> 00:04:59,700 wyświetlę obraz, więc będziemy musieli również zaimportować komponent z React Native i poniżej tego 64 00:04:59,710 --> 00:05:09,180 widoku dodam przycisk z tytułem zdjęcia, w którym chcę ustawić kolor na Kolory. podstawowe, więc w tym celu 65 00:05:09,190 --> 00:05:17,410 upewnij się, że importujesz te kolory na stałe, a po naciśnięciu 66 00:05:17,500 --> 00:05:27,530 chcę otworzyć kamerę i wyświetlić ją użytkownikowi. Dodam też tutaj stałą, wezmę procedurę obsługi obrazu i jest to funkcja, 67 00:05:27,530 --> 00:05:29,480 która powinna otworzyć kamerę 68 00:05:29,480 --> 00:05:33,140 i to jest funkcja, którą powiążę z tym przyciskiem. 69 00:05:33,170 --> 00:05:42,470 Teraz fajna byłaby stylizacja. W tym widoku zewnętrznym dodam styl selektora obrazu, 70 00:05:42,800 --> 00:05:45,860 w tym widoku wewnętrznym, który 71 00:05:45,860 --> 00:05:55,020 wyświetla podgląd mojego obrazu, dodam styl podglądu obrazu. Następnie ten tekst może być również stylizowany, ale tak naprawdę nie 72 00:05:55,020 --> 00:06:02,910 potrzebuję specjalnego stylu i oczywiście chcę również wydrukować tutaj obraz, a wkrótce dodam warunek if / else, aby wyświetlić 73 00:06:02,910 --> 00:06:05,120 tylko tekst lub obraz, a 74 00:06:05,270 --> 00:06:09,030 to powinien również uzyskać styl może po prostu obraz. 75 00:06:09,030 --> 00:06:13,620 Więc teraz mamy trzy identyfikatory stylu, które musimy dodać do 76 00:06:13,890 --> 00:06:17,440 arkusza stylów, otrzymujemy selektor obrazu dla 77 00:06:17,610 --> 00:06:22,440 całego komponentu, uzyskamy podgląd obrazu, a następnie mamy sam obraz. 78 00:06:22,440 --> 00:06:28,560 Sam obraz jest prosty, tam po prostu chcę ustawić szerokość 100% i wysokość 100%, 79 00:06:28,560 --> 00:06:32,670 aby zajmował pełną szerokość i wysokość otaczającego pojemnika podglądu. 80 00:06:32,670 --> 00:06:36,750 Kontener ten można oczywiście skonfigurować bez względu na to, jak chcesz go 81 00:06:36,870 --> 00:06:41,550 skonfigurować, dam mu szerokość 100% i wysokość 200 pikseli, ale oczywiście możesz to zmienić 82 00:06:41,550 --> 00:06:47,880 lub obliczyć dynamicznie za pomocą interfejsu API wymiarów. Dodaj margines na dole 83 00:06:47,880 --> 00:06:55,400 10 i upewnij się, że mój tekst zastępczy zostanie wyśrodkowany, 84 00:06:55,400 --> 00:06:59,470 dodając justify content center i wyrównaj 85 00:06:59,730 --> 00:07:08,460 tutaj elementy, a ponadto dodam tutaj obramowanie z kolorem jasnoszarym i szerokością obramowania 86 00:07:08,460 --> 00:07:09,500 jeden. 87 00:07:09,720 --> 00:07:15,270 Teraz, ogólnie dla komponentu wyboru obrazu, po prostu ustawię to, aby wyrównać elementy do środka, aby 88 00:07:15,270 --> 00:07:19,020 upewnić się, że wszystkie elementy są wyśrodkowane w poziomie, 89 00:07:19,080 --> 00:07:22,910 ale teraz wszyscy jesteśmy tutaj, aby naprawdę otworzyć kamerę urządzenia, prawda? 90 00:07:23,010 --> 00:07:28,680 Zanim więc zrobimy cokolwiek innego w związku z podglądem i tak dalej, 91 00:07:28,700 --> 00:07:40,720 upewnijmy się, że tutaj w module obsługi zdjęć pobierzmy faktycznie kamerę i w tym celu zaimportujmy wszystko jako próbnik obrazu z próbnika obrazu z wystawy, 92 00:07:41,500 --> 00:07:48,460 więc z tego właśnie zainstalowany pakiet. Teraz, gdy użyłem selektora obrazów tutaj i 93 00:07:48,490 --> 00:07:54,360 również dla komponentu, będziemy mieli starcie nazwy, więc nazwiję ten próbnik imgów tutaj, 94 00:07:54,390 --> 00:07:59,860 aby uniknąć tego starcia nazwy, które w innym przypadku spowodowałoby problemy, 95 00:07:59,920 --> 00:08:02,910 zmień go również w eksporcie kierunek. 96 00:08:02,920 --> 00:08:06,610 Więc teraz z importowanym tutaj selektorem obrazów, możemy go użyć 97 00:08:06,610 --> 00:08:07,700 tutaj, selektora 98 00:08:07,840 --> 00:08:10,930 obrazu i tam możemy wywołać asynchronizację uruchamiania kamery. 99 00:08:10,960 --> 00:08:13,810 Możesz również otworzyć galerię, 100 00:08:13,810 --> 00:08:18,000 jeśli chcesz, ale tutaj nazywam asynchronizację uruchamiania aparatu. 101 00:08:18,140 --> 00:08:25,070 Teraz otworzy się kamera urządzenia, a część asynchroniczna tutaj sugeruje, że jest to operacja 102 00:08:25,070 --> 00:08:26,120 asynchroniczna. 103 00:08:26,120 --> 00:08:31,550 Rzeczywiście, to zwraca obietnicę, co ma sens, ponieważ otwiera kamerę i nie 104 00:08:31,550 --> 00:08:33,740 wiemy, kiedy użytkownik skończy 105 00:08:33,740 --> 00:08:39,920 robić zdjęcie, więc po prostu zarejestruje funkcję, którą powinien wykonać, gdy użytkownik skończy i 106 00:08:39,920 --> 00:08:44,930 rozwiąże obietnica wykonania tej funkcji, gdy to się stanie, kiedy użytkownik 107 00:08:44,930 --> 00:08:51,400 skończy lub oczywiście, gdy użytkownik anuluje. Możemy poradzić sobie z tym wszystkim i rezultatem itd. 108 00:08:51,400 --> 00:08:57,450 Później, na razie zobaczmy, czy to działa, i do tego załóżmy element wyboru obrazu na nowym ekranie miejsca. 109 00:08:57,490 --> 00:09:03,670 Możemy więc zaimportować próbnik obrazów i tutaj oczywiście możemy użyć tej nazwy, 110 00:09:03,670 --> 00:09:10,960 ponieważ nie używamy tutaj pakietu próbnika obrazów, importujemy go z komponentów, z komponentu próbnika obrazu 111 00:09:10,990 --> 00:09:17,780 i dodajemy ten próbnik obrazów tutaj poniżej naszego tekstu jako taki samozamykający się element. 112 00:09:17,800 --> 00:09:22,300 Teraz, jeśli to uratujemy, rzućmy okiem. Tutaj, ten tekst i 113 00:09:22,320 --> 00:09:27,720 tak dalej, który nie jest właściwie ustawiony, nie musimy się tym teraz 114 00:09:27,720 --> 00:09:35,930 martwić, zamiast tego naciśnijmy zrób zdjęcie, a zobaczysz, że nic się nie dzieje, ale pojawia się ostrzeżenie - 115 00:09:35,960 --> 00:09:45,360 brak kamery lub zezwolenie na przechylenie kamery. Na Androidzie, jeśli spróbuję, tam zapytam, czy chcę przyznać uprawnienia. Muszę tu nacisnąć przycisk Zezwól, 116 00:09:45,360 --> 00:09:51,240 a kamera się otwiera. To dobrze, ogólnie działa, mogę z niego 117 00:09:51,240 --> 00:09:52,450 korzystać, dlatego 118 00:09:52,470 --> 00:09:56,790 mogę nacisnąć ten przycisk, a następnie potwierdzić zdjęcie, które zrobiłem, 119 00:09:57,090 --> 00:10:04,440 ale na iOS nie działa i dlaczego tak jest? No cóż, na iOS mamy tutaj błąd uprawnień i dzieje 120 00:10:04,480 --> 00:10:05,260 się 121 00:10:05,320 --> 00:10:10,810 tak po prostu, ponieważ uprawnienia są ważne, ale działają inaczej na iOS i Androidzie. 122 00:10:11,500 --> 00:10:12,100 Na 123 00:10:12,100 --> 00:10:18,600 Androidzie również skonfigurujesz uprawnienia z wyprzedzeniem, a ponieważ korzystamy z tej aplikacji expo, w której expo zapewnia to 124 00:10:18,600 --> 00:10:26,440 opakowanie, expo faktycznie wykonuje wszystkie te uprawnienia i prosi o nas. W przypadku systemu iOS system uprawnień działa 125 00:10:26,440 --> 00:10:28,310 nieco inaczej. 126 00:10:28,360 --> 00:10:34,390 Tak naprawdę nie konfigurujesz go tak, abyś miał plik konfiguracyjny, w którym z góry definiujesz wszystkie uprawnienia i 127 00:10:34,390 --> 00:10:34,900 to 128 00:10:34,900 --> 00:10:38,540 wszystko, zamiast tego musisz poprosić o pozwolenie w czasie wykonywania. 129 00:10:38,590 --> 00:10:43,040 Przy okazji, w niektórych wersjach Androida, powinieneś teraz to zrobić. 130 00:10:43,210 --> 00:10:49,600 Nadal istnieje expo, jak widzisz, robi to za Ciebie, więc w przypadku Androida działa to w ten sposób, 131 00:10:49,600 --> 00:10:56,050 w systemie iOS tak nie jest, musisz poprosić użytkownika o pozwolenie na dostęp do kamery, a to po 132 00:10:56,050 --> 00:10:59,890 prostu coś, co musimy zrobić tutaj i możemy to zrobić za 133 00:10:59,890 --> 00:11:02,680 pomocą innego pakietu expo, czyli pakietu uprawnień. 134 00:11:02,710 --> 00:11:08,890 Musisz również zainstalować to za pomocą tego polecenia tutaj w swoim projekcie, abyś mógł poprosić 135 00:11:08,890 --> 00:11:10,230 użytkownika o uprawnienia. 136 00:11:10,420 --> 00:11:12,640 Zróbmy to tutaj w projekcie, 137 00:11:12,640 --> 00:11:19,570 uruchommy expo zainstaluj uprawnienia expo, które znowu to tylko opakowanie wokół instalacji npm, aby zainstalować uprawnienia dla tego 138 00:11:19,570 --> 00:11:26,050 projektu lub zainstalować ten pakiet dla tego projektu, a następnie w selektorze obrazów, zanim spróbujemy uruchomić 139 00:11:26,050 --> 00:11:33,580 aparat i otwarcie aparatu, będziemy musieli poprosić o uprawnienia. W tym celu dodam tutaj 140 00:11:33,580 --> 00:11:41,260 nową stałą, uzyskam lub zweryfikuję uprawnienia, a jest to funkcja, która zawiera 141 00:11:41,430 --> 00:11:47,310 funkcję, która będzie korzystała z tego nowo dodanego pakietu uprawnień. 142 00:11:47,310 --> 00:11:52,050 Więc tutaj importuję wszystko jako uprawnienia z uprawnień expo, więc 143 00:11:52,050 --> 00:11:55,280 ten sam rodzaj importu, jaki mamy 144 00:11:55,590 --> 00:12:00,420 dla selektora obrazu, a następnie możemy użyć uprawnień i zapytać asynchronicznie. 145 00:12:00,420 --> 00:12:06,270 Ponownie, jest to zadanie asynchroniczne, które zwraca obietnicę, ponieważ otworzy to monit i zanim 146 00:12:06,270 --> 00:12:08,810 użytkownik wybierze odpowiedź, nic się nie 147 00:12:08,820 --> 00:12:14,760 wydarzy, dlatego mamy obietnicę, która rozwiązuje się lub zostaje odrzucona, gdy użytkownik potwierdzi lub odrzuci. 148 00:12:16,560 --> 00:12:20,090 Musimy więc sprecyzować, jakiego uprawnienia potrzebujemy, więc przekazujemy 149 00:12:20,100 --> 00:12:27,270 coś, aby poprosić o asynchronię, i to jest stała, którą otrzymujemy z obiektu uprawnień, który tutaj importujemy. 150 00:12:27,660 --> 00:12:33,630 Tak więc dzięki notacji kropkowej możemy uzyskać dostęp do różnego rodzaju uprawnień, a tutaj wszystkie te 151 00:12:33,690 --> 00:12:36,660 wielkie litery to różne uprawnienia, o które 152 00:12:36,660 --> 00:12:41,660 możesz poprosić i tutaj potrzebujemy pozwolenia na kamerę, ponieważ chcemy uzyskać dostęp do kamery. 153 00:12:41,710 --> 00:12:46,340 Nawiasem mówiąc, jeśli chcesz uzyskać dostęp do galerii, byłoby to pozwoleniem na rolowanie kamery. 154 00:12:47,850 --> 00:12:49,850 Teraz pójdę tutaj do kamery 155 00:12:50,700 --> 00:12:54,390 i jak powiedziałem, to zwraca obietnicę, chcę użyć asynchronii 156 00:12:54,420 --> 00:13:00,410 czekaj tutaj, dlatego mogę dodać asynchronię tutaj przed funkcją, a następnie czekać na to i 157 00:13:00,440 --> 00:13:01,500 uzyskać wynik 158 00:13:01,500 --> 00:13:06,470 i przechowywać go w stałej , alternatywą dla tego byłoby użycie wtedy i 159 00:13:06,780 --> 00:13:14,010 złapanie tego i tam teraz możemy sprawdzić, czy wynik. status nie jest równy przyznany, co oznacza, że użytkownik 160 00:13:14,010 --> 00:13:16,210 odmówił, użytkownik nie udzielił uprawnień, 161 00:13:16,290 --> 00:13:18,770 w takim przypadku nie możemy kontynuować. 162 00:13:18,780 --> 00:13:25,590 Więc tutaj właściwie rzucę alert, więc zaimportuj alert 163 00:13:25,590 --> 00:13:40,420 z React Native i rzuć alert tam, gdzie mówię alert. alert, niewystarczające uprawnienia, musisz przyznać aplikacji aparatu uprawnienia do korzystania z tej aplikacji lub dowolnego wyjścia, 164 00:13:40,480 --> 00:13:42,890 które chcesz pokazać, a następnie 165 00:13:43,000 --> 00:13:49,690 dodam jeden przycisk tutaj, gdzie mówię OK. Teraz użytkownik będzie musiał zmienić uprawnienia w 166 00:13:49,690 --> 00:13:55,000 ustawieniach systemu po ich odrzuceniu, więc nie możemy prosić o uprawnienia ponownie, 167 00:13:55,000 --> 00:13:56,950 gdy zostaną one odrzucone. 168 00:13:56,950 --> 00:14:02,950 Tak więc tutaj chcę zwrócić wartość false, ponieważ jest to funkcja weryfikacji uprawnień i chcę 169 00:14:02,950 --> 00:14:06,790 zwrócić wartość false, jeśli użytkownik nie udzielił nam uprawnień, zwracam 170 00:14:06,790 --> 00:14:10,080 wartość true, ponieważ teraz wiemy, że mamy 171 00:14:10,090 --> 00:14:14,920 uprawnienia Nawiasem mówiąc, jeśli nazwiemy to funkcja wielokrotnie, a użytkownik już dawał 172 00:14:14,920 --> 00:14:20,050 uprawnienia w przeszłości, użytkownik nie zostanie ponownie wyświetlony z tym monitem, tak samo, 173 00:14:20,050 --> 00:14:27,880 jeśli użytkownik odmówi, w obu przypadkach wynik jest automatycznie zapisywany przez iOS, a ta funkcja po prostu zwracają wartość prawda 174 00:14:27,880 --> 00:14:33,400 lub fałsz, w zależności od tego, czy użytkownik odmówił lub przyznał dostęp w przeszłości. 175 00:14:33,400 --> 00:14:37,350 Więc weryfikacja uprawnień jest teraz po prostu funkcją, którą musimy wywołać 176 00:14:37,350 --> 00:14:40,590 w procedurze wykonywania zdjęć przed próbą użycia aparatu. 177 00:14:40,780 --> 00:14:46,600 Więc tutaj też chcę użyć asynchronicznego oczekiwania, ponieważ weryfikacja uprawnień jest oczywiście funkcją, która zwraca 178 00:14:46,660 --> 00:14:47,600 obietnicę, więc 179 00:14:47,770 --> 00:14:55,080 będę czekać na to i zapisać wynik, który zapiszę w stałej o nazwie ma uprawnienie, ponieważ jest to prawda 180 00:14:56,100 --> 00:15:01,020 lub fałsz w zależności od tego, czy użytkownik udzielił uprawnień, czy nie. 181 00:15:01,020 --> 00:15:05,580 Jeśli to nieprawda, więc jeśli to nieprawda, po prostu wrócę tutaj, nie będę kontynuować, 182 00:15:05,580 --> 00:15:11,100 nie otworzę kamery, bo i tak nie będę mógł tego robić, więc po prostu nie możemy kontynuuj, 183 00:15:11,100 --> 00:15:11,580 o 184 00:15:11,580 --> 00:15:12,360 to chodzi. 185 00:15:13,500 --> 00:15:17,910 W przeciwnym razie możemy kontynuować i teraz powinniśmy być w stanie uruchomić kamerę również na iOS. 186 00:15:17,940 --> 00:15:18,810 Spróbujmy 187 00:15:18,810 --> 00:15:19,720 więc, zapiszmy to, 188 00:15:19,830 --> 00:15:25,750 a teraz po tym, co się zmieniło, właściwie odinstaluję tutaj expo, aby upewnić się, że w 189 00:15:25,750 --> 00:15:29,530 odniesieniu do uprawnień, które tam nadałem, powraca do stanu początkowego. 190 00:15:29,640 --> 00:15:33,860 Prawdopodobnie nie musisz tego robić, jeśli nigdy nie przyznałeś żadnych uprawnień w 191 00:15:33,900 --> 00:15:39,810 aplikacji expo, ale jeśli wcześniej bawiłeś się uprawnieniami i pakietami natywnymi, powinieneś odinstalować, a następnie ponownie zainstalować 192 00:15:39,810 --> 00:15:44,870 aplikację expo, ponownie uruchamiając aplikację na iOS, naciskając i w konsoli tam, aby upewnić 193 00:15:44,890 --> 00:15:47,910 się, że wszystkie te uprawnienia zostały zresetowane. 194 00:15:47,910 --> 00:15:53,220 Więc teraz, jeśli przejdziemy do nowego ekranu odtwarzania i klikniemy zrób zdjęcie, zostaniesz zapytany, 195 00:15:53,490 --> 00:16:00,120 czy chcę przyznać dostęp do kamery i tutaj mogę kliknąć OK, a teraz nadal pojawia się ten błąd. 196 00:16:01,490 --> 00:16:07,420 Teraz jedynym powodem jest to, że chociaż próbujemy uzyskać dostęp do kamery tutaj, tak naprawdę to 197 00:16:07,420 --> 00:16:12,450 tylko coś, co wiem o tym pakiecie, wymaga uprawnień do pełnego przechylenia kamery. 198 00:16:12,450 --> 00:16:16,020 Więc zmieńmy to, aby poprosić o uprawnienia do rolki 199 00:16:22,830 --> 00:16:25,880 aparatu tutaj, a następnie wróć i kliknij zrób 200 00:16:25,880 --> 00:16:32,550 zdjęcie, teraz pytam, czy chcę zezwolić na dostęp do zdjęć, a teraz, jeśli kliknę tak, dostanę aparat niedostępny 201 00:16:32,560 --> 00:16:37,710 symulator, który jest teraz innym błędem i jest całkiem jasny, co do problemu, symulator 202 00:16:37,780 --> 00:16:43,510 iOS po prostu nie ma kamery. Odtąd będę kontynuował na Androidzie, 203 00:16:43,510 --> 00:16:47,380 ale oczywiście możesz to przetestować na prawdziwym iPhonie, 204 00:16:47,380 --> 00:16:54,250 aby zobaczyć, że tam też działa. Jeśli zeskanujesz tam swój kod kreskowy expo za pomocą aplikacji expo 205 00:16:54,250 --> 00:16:56,000 i uruchomisz aplikację tak, jak 206 00:16:56,050 --> 00:17:02,020 widziałeś ją na początku kursu, możesz robić zdjęcia za pomocą prawdziwego telefonu, a także pokażę gotową aplikację na końcu 207 00:17:02,200 --> 00:17:05,750 tego modułu na urządzeniach z iOS i Androidem, na prawdziwych urządzeniach. 208 00:17:05,890 --> 00:17:10,600 W tej chwili skupię się na Androidzie i oczywiście byliśmy już w stanie to otworzyć. 209 00:17:10,690 --> 00:17:18,530 Ponownie mnie tu pyta, ale teraz mogę to otworzyć i zrobić zdjęcie. To oczywiście miłe, ale robienie takiego zdjęcia nie jest wszystkim, 210 00:17:18,530 --> 00:17:20,490 co chcę robić, chcę 211 00:17:20,570 --> 00:17:24,590 też skonfigurować sposób, w jaki go biorę i chcę go używać.