Detașarea Aplicațiilor Expo la ExpoKit Concepte

În acest post, veți afla ce este ExpoKit și cum este folosit pentru adăugarea de funcții native la aplicațiile Expo. Veți învăța, de asemenea, câteva dintre argumentele sale pro și contra. 

În versiunea mai ușoară de reacție a dezvoltării native cu postul Expo, ați aflat despre modul în care Expo îi ușurează pe începători să creeze aplicații cu React Native. Ați învățat, de asemenea, că Expo permite dezvoltatorilor să se dezvolte mai repede, deoarece nu mai este nevoie să configurați aplicații Android Studio, Xcode sau alte instrumente de dezvoltare.

Dar, așa cum ați văzut, Expo nu suportă toate caracteristicile native pe care o aplicație le-ar putea avea nevoie. Deși echipa Expo lucrează întotdeauna pentru a susține funcționalitatea mai nativă, este o idee bună să învățați cum să convertiți un proiect Expo existent într-un proiect nativ standard, astfel încât să puteți trece cu ușurință în caz de necesitate. Deci, în această serie de două părți, vom examina cum să facem asta. 

În acest post, veți afla ce ExpoKit este și când veți avea nevoie de ea, precum și care dintre funcțiile platformei Expo sunt reținute și pierdute odată ce detașați la ExpoKit. 

Cerințe preliminare

Acest tutorial presupune că ați configurat deja calculatorul pentru dezvoltarea Expo și React Nativă. Aceasta înseamnă că veți avea nevoie de Android Studio sau Xcode sau ambele, în funcție de locul în care doriți să implementați. Asigurați-vă că ați verificat Începeți cu Ghidul Expoziției, și, de asemenea, ghidul "Noțiuni de bază" în documentele React Native din fila "Construirea de proiecte cu cod nativ" pentru platforma dvs. specifică, dacă nu ați făcut-o deja. 

Cunoașterea Node.js este utilă, dar nu este necesară.

Ce este ExpoKit?

ExpoKit este o bibliotecă Obiectiv-C și Java care vă permite să utilizați platforma Expo într-un proiect React Nativ standard. Când spun "proiectul React Nativ standard", vreau să spun una care a fost creată folosind reactiv-nativ init comanda. 

Dezavantajul detașării la ExpoKit este că va trebui să configurați mediul de dezvoltare nativ standard pentru React Native!

Un alt dezavantaj este că sunteți limitat la versiunea React și React Nativă folosită de ExpoKit în momentul detașării aplicației. Acest lucru înseamnă că ar putea exista probleme de compatibilitate pe care va trebui să le rezolvați dacă modulul nativ pe care încercați să îl instalați depinde de o versiune anterioară de React sau React Native. 

Dacă credeți că aplicația dvs. va avea nevoie de o mulțime de module native pe care interfețele integrate Reactive Native și Expo nu suportă deja, vă sugerăm să evitați utilizarea API-urilor Expo. În acest fel, puteți să "scoateți" cu ușurință un proiect React Nativ standard în momentul în care trebuie să începeți utilizarea modulelor native personalizate. 

Când să detașați la ExpoKit?

S-ar putea să doriți să vă desprindeți proiectul Expo existent din oricare din următoarele motive:

  • API expus de caracteristicile native susținute de Expo nu acoperă cazul dvs. de utilizare.
  • Trebuie să utilizați o funcționalitate nativă care în prezent nu este acceptată de platforma Expo. Exemplele includ activități Bluetooth și de fundal.
  • Doriți să utilizați servicii specifice. În prezent, Expo utilizează Firebase pentru date în timp real și Sentry pentru raportarea erorilor. Dacă doriți să utilizați un serviciu alternativ, singura opțiune este să vă scrieți propriul cod pentru a comunica API-ului HTTP cu privire la serviciile pe care doriți să le utilizați sau pentru a instala un modul nativ existent care face lucrarea.
  • Aveți o configurație de integrare continuă existentă care nu se joacă bine cu Expo - de exemplu, dacă utilizați Fastlane sau Bitrise pentru integrare continuă. Expo nu se integrează cu aceste servicii în afara casetei, deci va trebui să vă scrieți propriul cod de integrare dacă doriți să le utilizați în timp ce vă aflați încă pe platforma Expo.

Caracteristici păstrate la detașarea la ExpoKit

Detașarea la ExpoKit înseamnă că veți pierde unele dintre caracteristicile oferite de platforma Expo. Cu toate acestea, următoarele caracteristici esențiale sunt încă păstrate:

  • Expo API-uri. Veți putea totuși să utilizați API-uri Expo, cum ar fi API-ul Permisiuni.
  • Live Reload. Aplicațiile Expo detașate sunt încă în măsură să utilizeze reîncărcarea în timp ce dezvoltați aplicația. Singura diferență este că nu veți mai putea utiliza aplicația client Expo. Dacă dezvoltați pentru Android, puteți utiliza în continuare dispozitivul Android sau un emulator, cum ar fi Genymotion, pentru a testa aplicația. Dacă dezvoltați pentru iOS, aplicația poate fi rulată pe simulatoarele pe care le-ați instalat în Xcode. Puteți rula, de asemenea, pe iPhone sau iPad, dar trebuie să urmați pașii suplimentari pe care nu le voi acoperi în acest tutorial.

Caracteristici pe care le pierdeți atunci când detașați la ExpoKit

Prin detașarea la ExpoKit, veți pierde următoarele funcții:

  • Distribuirea ușoară a aplicațiilor prin intermediul codului QR și Expo Snack. Odată ce ați detașat la ExpoKit, veți observa că puteți să permiteți accesul în continuare aplicației dvs. prin Expo XDE. Acesta va genera în continuare un cod QR, dar acest cod nu va mai funcționa atunci când îl scanați cu aplicația client Expo.
  • Construirea de aplicații independente prin serverele Expo. Nu mai puteți folosi exp construi comandă pentru a construi .ipa sau .apk fișiere pe serverele Expo. Aceasta înseamnă că trebuie să instalați aplicația Android Studio sau Xcode (în funcție de platforma pe care doriți să o implementați) și să creați aplicația la nivel local. Alternativ, puteți utiliza Microsoft App Center pentru a crea aplicația dacă nu aveți încă un mediu de dezvoltare local. Rețineți că nu puteți utiliza comenzi cum ar fi reaction-native run-android sau reactiv-nativ run-ios pentru a rula aplicația, așa cum ați proceda într-un proiect React Nativ standard. 
  • Serviciul de notificări de presă Expo. Expo nu vă mai gestionează certificatele push după detașare, astfel încât conducta de notificare push trebuie să fie gestionată manual.

Ce vom crea

Pentru a arăta beneficiul detașării în ExpoKit, vom crea o aplicație care are nevoie de o caracteristică nativă pe care platforma Expo nu o suportă în prezent. Aplicația va fi o aplicație de distribuire a locației. În majoritatea cazurilor, va rula în fundal, preluând locația curentă a utilizatorului. Acesta va trimite apoi acea locație prin Pusher. De asemenea, vom crea o pagină web care să afișeze locația curentă a utilizatorului pe o hartă.

Iată cum va arăta aplicația:

Puteți găsi sursa completă a proiectului în reparația GitHub tutorial.

Configurarea aplicației

În restul acestui post, ne vom concentra pe achiziționarea aplicației noastre. Apoi, în următoarea postare, vom elabora o parte din codul cheie pentru a interacționa cu ExpoKit.

Crearea unei aplicații Pusher

Dacă doriți să utilizați serviciile Pusher în aplicația dvs., va trebui să creați o aplicație în tabloul de bord Pusher. După ce v-ați conectat, mergeți la tabloul de bord, faceți clic pe Aplicațiile dvs. și apoi Creați o aplicație nouă, și introduceți numele aplicației:

Odată ce aplicația a fost creată, mergeți la Setările aplicației și verificați Activați evenimentele clientului Caseta de bifat. Acest lucru ne va permite să declanșăm evenimentele Pusher direct din aplicație în loc de pe un server. Apoi faceți clic pe Actualizați pentru a salva modificările:

Puteți găsi cheile de sub Tastele pentru aplicații tab. Vom avea nevoie de acestea mai târziu, odată ce ne conectăm la aplicația Pusher.

Crearea unei aplicații Google

În mod similar, trebuie să creați un proiect Google pentru a utiliza API-ul Google Maps și API-ul Geolocation. Accesați console.developers.google.com și creați un nou proiect:

Apoi, accesați tabloul de bord al proiectului și faceți clic pe Activați API-urile și serviciile. Caută Aplicația JavaScript API pentru Google Maps și Google Maps Geocoding API și să le permită acestora.

Din tabloul de bord al proiectului, mergeți la scrisori de acreditare și faceți clic pe Creați acreditări> Cheia API. Luați notă de cheia API pe care o generează, pe măsură ce o vom folosi ulterior.

Crearea unui nou proiect Expo

Rulați următoarele comenzi în directorul de lucru:

exp init ocdmom cd ocdmom exp start

Aplicația Expo este gata să testeze. Doar scanați codul QR cu aplicația client Expo pentru iOS sau Android.

Codificarea aplicației

Acum suntem gata să începem să codificăm aplicația. Vom începe să ne dezvoltăm ca un proiect Expo standard și apoi vom detașa la ExpoKit când trebuie să folosim funcții native personalizate.

Generarea codului unic de urmărire

Goliți conținutul App.js fișier în rădăcina directorului de proiect și adăugați următoarele importuri:

import Reacționează de la "reacționează"; importați StyleSheet, Text, View de la "reactive-native";

De asemenea, vom folosi o componentă antet personalizată:

importați antetul de la "./components/Header";

În constructor, setați unique_code la starea inițială:

Extinderea clasei extinse App extinde React.Component constructor (recuzită) super (recuzită); this.state = unique_code: Math.random () .toString (36) .substring (7) .toUpperCase () // generează un șir aleatoriu; 

Interfața de utilizare a aplicației noastre va afișa acest cod unic.

render () return (  
Cod unic This.state.unique_code );

În cele din urmă, iată codul pentru Antet (Componente / Header.js) componentă:

import Reacționează de la "reacționează"; importați StyleSheet, Text, View de la "reactive-native"; Extindere clasa implicită pentru export extinde React.Component render () return (  This.props.text  );  const stiles = StyleSheet.create (header: flex: 1, flexDirection: 'coloana', alignSelf: 'stretch', paddingTop: 20, paddingBottom: 5, backgroundColor: '# f3f3f3' header_text: fontWeight: "îndrăzneț", fontSize: 17, textAlign: 'centru');

Concluzie

Aceasta a fost prima parte a seriei noastre cu două părți privind detașarea aplicațiilor Expo la ExpoKit. În acest post, ați învățat conceptele din spatele ExpoKit și ați început să configurați un proiect care va utiliza funcționalitatea ExpoKit. 

În următoarea postare, vom detașa aplicația de ExpoKit și apoi vom continua să o codificăm astfel încât să o putem rula pe un dispozitiv.

Între timp, verificați câteva dintre celelalte postări despre dezvoltarea aplicațiilor Reactive Native!

Cod