PublikowaniePublikowanie w sklepach z aplikacjami

Projekt natywny

Pełny projekt na telefon, dla reklam, zakupów i programisty, który się nim opiekuje.

Native daje ci całą aplikację jako projekt na telefon, w jednym pliku ZIP albo wysłany do repozytorium GitHub. Najpierw podaj nazwę aplikacji i identyfikator aplikacji w postaci com.yourcompany.yourapp: po tym identyfikatorze sklepy rozpoznają twoją aplikację i nie można go zmienić po jej opublikowaniu.

Okno pokazuje potem dokładne polecenia do zbudowania projektu, na Androida i na iPhone:

text
npm install && npm run build
npx cap add android
npm run icons
npx cap sync && npx cap open android

Na iPhonie ios zajmuje miejsce android, a ostatnie polecenie otwiera Xcode.

Stąd dalej idziesz już ścieżką samych sklepów: podpisz aplikację w Android Studio albo Xcode, prześlij ją, przetestuj, wypełnij stronę sklepową i opublikuj. Dobrze przechowuj klucz podpisujący Androida i jego hasła. Każda aktualizacja musi być podpisana tym samym kluczem. Bez Android Studio i bez Maca GitHub może ją zbudować: Budowanie w chmurze.

Pobranie projektu: plik do pobrania lub GitHub

W kroku 1 sekcja Download the project ma dwa pola, App name i App ID. Identyfikator zaczyna się od com.setherion. i nazwy aplikacji, a musi być zapisany w formie odwróconej domeny. Przycisk Download project (.zip) tworzy plik ZIP nazwany jak aplikacja. Zawiera projekt webowy, pliki na telefon, plik schema.sql, jeśli aplikacja ma tabele, grafikę do gier, jeśli ją ma, oraz obrazy ikony i ekranu startowego. Wymaga płatnego planu.

Zamiast tego możesz użyć opcji or push to GitHub: połącz się przez Connect with GitHub albo wklej token, wybierz Repo name i kliknij Export to GitHub. Repozytorium jest tworzone jako prywatne, a Open repo przenosi cię do niego. To też wymaga płatnego planu.

Native na Androidzie, krok po kroku
  1. Download the project, jak wyżej.
  2. Build it. Potrzebujesz Node 22 i Android Studio. Uruchom polecenia, które pokazuje okno. Jeśli aplikacja używa reklam lub zakupów, do poleceń dodawane jest npm run native:setup po npx cap add android.
  3. Sign it. W Android Studio wybierz Build, potem Generate Signed App Bundle. Utwórz klucz i przechowuj go razem z hasłami: każda aktualizacja wymaga tego samego klucza.
  4. Upload it and test it. Utwórz aplikację w Play Console, prześlij plik .aab do Internal testing, potem wypełnij stronę sklepową, klasyfikację treści i Data safety. Przy reklamach deklarujesz też identyfikator reklamowy.
  5. Release. Recenzja trwa od kilku godzin do dwóch dni. Osobiste konto Google Play założone po listopadzie 2023 wymaga najpierw zamkniętego testu.
Native na iPhonie, krok po kroku
  1. Download the project: ten sam plik ZIP co dla Androida.
  2. Build it. Potrzebujesz Maca z Xcode i konta dewelopera Apple za $99 rocznie. Uruchom te same polecenia, wpisując ios zamiast android.
  3. Sign it and upload it. W Xcode otwórz Signing & Capabilities i wybierz swój zespół. Przy reklamach lub zakupach dodaj In-App Purchase. Potem Product, Archive, Distribute, do App Store Connect.
  4. Try it on your iPhone przez TestFlight.
  5. Fill the store page and send it for review. Przy reklamach Apple uznaje je za śledzenie.

Budowanie w chmurze

Bez Android Studio i bez Maca: GitHub może zbudować aplikację na własnych komputerach. Wyślij projekt na GitHub w kroku 1, a repozytorium dostanie dwa workflowy budowania, jeden dla Androida i jeden dla iPhone'a. Krok Build it pokaże wtedy Build it in the cloud, z przyciskiem do strony workflowu na GitHubie.

Na GitHubie otwórz Actions, wybierz Android build albo iPhone build, kliknij Run workflow i wybierz, co zbudować:

WorkflowWybórCo dostajesz
Android buildTest APKAplikację do zainstalowania na własnym telefonie, w Artifacts danego uruchomienia. Nic do ustawiania.
Android buildMake a new keyKlucz podpisu, tworzony raz przed pierwszym przesłaniem do Google Play. Tylko w prywatnym repozytorium.
Android buildGoogle Play bundle (.aab)Podpisany plik dla Play Console, z wyższym numerem wersji przy każdym uruchomieniu.
iPhone buildCheck that it buildsDowód, że aplikacja kompiluje się na iPhone'a. Konto Apple nie jest potrzebne.
iPhone buildTestFlightAplikację podpisaną i wysłaną do App Store Connect, do zainstalowania przez TestFlight.

Prywatne repozytorium ma 2000 darmowych minut miesięcznie na komputerach GitHuba. Budowanie na Androida zużywa kilka z nich, a GitHub liczy minutę Maca jak dziesięć. README repozytorium opisuje każdy krok.

Przed pierwszym Google Play bundle
  1. Uruchom Make a new key i pobierz upload-key z uruchomienia.
  2. Przechowuj upload.jks i jego hasło w bezpiecznym miejscu, poza repozytorium. Każda aktualizacja musi być podpisana tym samym kluczem.
  3. W repozytorium otwórz Settings, Secrets and variables, Actions i dodaj trzy sekrety, każdy z tekstem swojego pliku: ANDROID_KEYSTORE_BASE64, ANDROID_KEYSTORE_PASSWORD i ANDROID_KEY_ALIAS.
  4. Uruchom Google Play bundle (.aab) i prześlij plik do Internal testing w Play Console.
Przed pierwszym buildem do TestFlight
  1. W App Store Connect utwórz aplikację z tym samym ID co w kroku 1.
  2. W Users and Access, Integrations, App Store Connect API wygeneruj klucz z rolą Admin i pobierz jego plik .p8. Apple pozwala pobrać go tylko raz.
  3. W repozytorium dodaj cztery sekrety: APPLE_TEAM_ID (Membership details na developer.apple.com), ASC_KEY_ID, ASC_ISSUER_ID i ASC_KEY_P8, czyli tekst pliku .p8.
  4. Uruchom TestFlight. Kilka minut później build jest w App Store Connect, w zakładce TestFlight. Workflow informuje Apple, że aplikacja używa tylko standardowego szyfrowania, więc TestFlight o to nie pyta.

Połączenie z GitHubem utworzone przed budowaniem w chmurze nie może dodać workflowów: krok o tym mówi, a Reconnect w kroku 1 to naprawia.

Konta w aplikacji na telefon

W aplikacji na telefon ludzie logują się e-mailem i hasłem. Przycisk Google i link do logowania wysyłany e-mailem są tam ukryte. Dlatego ważne jest sprawdzenie Delete account button: Apple odrzuca aplikację, w której ludzie mogą założyć konto, ale nie mają przycisku do jego usunięcia.

Reklamy i zakupy

Gra, która pokazuje reklamy lub coś sprzedaje, działa naprawdę tylko w projekcie Native: reklamy z Google AdMob, zakupy ze sklepów przez RevenueCat. W podglądzie w edytorze są udawane („Test ad”, „Test purchase”, żadne pieniądze nie są pobierane), więc możesz je wypróbować, a na opublikowanej stronie internetowej są ukryte. W łatwej drodze gra działa bez nich.

Projekt zaczyna od testowych reklam Google, które nic nie płacą. Wpisz własne identyfikatory reklam i klucze sklepów w src/monetize.keys.json i uruchom npm run native:setup: plik README projektu mówi, skąd wziąć każdy z nich.

Co trafia do pliku z kluczami

Plik zawiera identyfikator aplikacji AdMob oraz identyfikatory jednostek reklamowych nagradzanych i pełnoekranowych (interstitial) dla Androida i iPhone'a, a także klucze RevenueCat dla każdego sklepu (zaczynające się od goog_ dla Androida i appl_ dla iPhone'a). Bez kluczy RevenueCat albo bez produktów nic nie jest sprzedawane.

Żeby mieć prawdziwe reklamy, załóż konto AdMob, aplikacje i jednostki reklamowe, wpisz identyfikatory do pliku, uruchom npm run native:setup na świeżych folderach natywnych i opublikuj plik app-ads.txt na stronie internetowej. Żeby mieć zakupy, utwórz produkty w Play Console i App Store Connect z tymi samymi identyfikatorami, które są w src/monetize.json, i połącz oba sklepy w projekcie RevenueCat. Na iPhonie dodaj uprawnienie In-App Purchase.

Oba sklepy chcą linku do polityki prywatności, a przycisk Restore purchases jest wymagany: projekt go zawiera. Między reklamami aplikacja pomija reklamę pełnoekranową w pierwszych 30 sekundach, w ciągu 60 sekund od poprzedniej oraz dla gracza, który kupił produkt usuwający reklamy.

Czy ta strona była pomocna?

Dołącz do społeczności

Pytania, pomysły i to, co budują inni.