Słaby odczyt zaangażowania → odrzucenie
Aktywność jest rejestrowana → zatwierdzenie
Szybka odpowiedź
Jeśli aplikacja TWA nadal nie przechodzi testu zamkniętego (closed testing) z komunikatem "testers were not engaged", z naszego doświadczenia wynika, że najpewniejszym rozwiązaniem jest przebudowa do standardowej aplikacji WebView, w Android Studio, Capacitor lub Cordova, i opublikowanie właśnie tej kompilacji jako wersji produkcyjnej. Zachowaj ten sam package name i prześlij kompilację jako aktualizację, aby licznik 14 dni nie został zresetowany. WebView rozwiązuje problem z sygnałami zaangażowania, ale nie zwalnia z weryfikacji thin wrapper. Aplikacja musi oferować rzeczywistą wartość. Jeśli przeszkodą jest znalezienie 12 testerów aktywnych nieprzerwanie przez 14 dni, w tym pomaga PrimeTestLab: od $19.99, plus 5% opłaty serwisowej, a test zwykle rusza w 4-6 godzin.
To jedno z najbardziej frustrujących odrzuceń dla niezależnego dewelopera. Testerzy naprawdę korzystają z aplikacji, wymagane 12 osób uczestniczy w teście, mija 14 dni, a Google odpowiada: "your testers were not engaged enough." W przypadku aplikacji zbudowanej jako Trusted Web Activity (TWA) lub opakowanie PWA ten schemat jest realny. Wśród 7 400+ aplikacji objętych naszą pomocą kompilacje opakowujące treść internetową otrzymują ten komunikat znacznie częściej niż standardowe kompilacje natywne lub WebView. Ten poradnik wyjaśnia przyczynę, pokazuje istotną różnicę architektury i opisuje przejście na WebView bez utraty dni już zaliczonych w teście.
Spis treści
Dlaczego aplikacje TWA bywają odrzucane w teście zamkniętym?
Trusted Web Activity wyświetla witrynę przez Chrome Custom Tabs, zamiast renderować ekrany wewnątrz Twojej aplikacji. To szybki sposób na zmianę witryny lub PWA w instalowalną aplikację i w wielu opublikowanych aplikacjach działa prawidłowo. Problem pojawia się wtedy, gdy osobiste konto dewelopera musi spełnić obowiązkowe wymaganie 14-dniowego testu zamkniętego przed uzyskaniem dostępu do wersji produkcyjnej.
Z naszego doświadczenia z 7 400+ aplikacji wynika, że kompilacje TWA i opakowania PWA znacznie częściej otrzymują odrzucenie "testers were not engaged" niż standardowe aplikacje natywne, nawet gdy testerzy rzeczywiście korzystają z nich codziennie. Ten schemat jest na tyle wyraźny, że zalecamy odejście od TWA, jeśli aplikacja musi jeszcze przejść 14-dniowy test zamknięty.
Słabe sygnały zaangażowania
Aktywność odczytywana podczas weryfikacji Google wydaje się słabsza, gdy treść działa w środowisku Chrome zamiast w procesie Twojej aplikacji. Rzeczywiste korzystanie z aplikacji może wyglądać jak niska aktywność.
Odrzucenie "testers not engaged"
To najczęstszy komunikat obserwowany przy kompilacjach TWA. Testerzy dołączają do testu, instalują aplikację i używają jej codziennie, a mimo to weryfikacja dostępu do wersji produkcyjnej uznaje zaangażowanie za niewystarczające.
Mało aktywnych użytkowników w Play Console
Niektórzy deweloperzy zgłaszają też zaskakująco niską liczbę aktywnych użytkowników kompilacji TWA w Panelu, co pasuje do sposobu działania treści w środowisku Chrome.
Ponowne odrzucenie po kolejnym przesłaniu
Ponieważ źródłem problemu jest architektura, ponowne przesłanie tej samej kompilacji TWA zwykle kończy się identycznie. Drobne poprawki rzadko pomagają, natomiast przebudowa usuwa przyczynę.
Ważne zastrzeżenie: Google nie ujawnia dokładnie, które sygnały ocenia na etapie weryfikacji dostępu do wersji produkcyjnej. Opisany mechanizm jest więc naszą obserwacją, a nie oficjalną zasadą. Zachowaj ostrożność wobec wpisów na forach, które rzekomo znają dokładną telemetrię. Możemy natomiast rzetelnie opisać powtarzający się wynik: kompilacje TWA są odrzucane za zaangażowanie, a porównywalne kompilacje WebView uzyskują zatwierdzenie.
Czym naprawdę jest TWA i jak powstaje
Przed naprawą przyczyny odrzucenia warto dokładnie zrozumieć opublikowaną architekturę. Trusted Web Activity to aplikacja na Androida, która w istocie jest Twoją witryną działającą na pełnym ekranie w prawdziwym silniku przeglądarki. Nie ma paska adresu ani interfejsu sugerującego, że użytkownik ogląda stronę internetową. Wygląda i zachowuje się jak aplikacja natywna, lecz pod spodem działa Twoja witryna.
TWA zwykle powstaje za pomocą Google Bubblewrap CLI albo PWABuilder. Oba narzędzia korzystają z biblioteki Google androidbrowserhelper. Podajesz adres URL, narzędzie generuje projekt Android, a następnie podpisujesz go i przesyłasz AAB do Google Play.
Dlaczego deweloperzy wybierają TWA
Jedna baza kodu
Masz już witrynę, najlepiej PWA. TWA przenosi ją do Play Store bez przepisywania aplikacji w Kotlin, Flutter ani React Native.
Natychmiastowe aktualizacje
Aplikacja ładuje działającą witrynę, więc zmiany publikujesz przez wdrożenie strony. Nie potrzeba aktualizacji aplikacji ani oczekiwania na weryfikację.
Tanio i szybko
Wygenerowanie TWA zajmuje minuty, nie tygodnie. Dla istniejącej PWA to droga na Androida wymagająca najmniej pracy.
Kompromis, który prowadzi do odrzucenia
To, co sprawia, że TWA jest tania, zwiększa ryzyko podczas testu zamkniętego:
- Wymaga internetu. Jest oknem na Twoją witrynę, więc słabe połączenie oznacza słabe działanie aplikacji, chyba że PWA zapewnia solidną obsługę offline.
- Ryzyko odrzucenia w Play Store. Zasady dotyczące minimalnej funkcjonalności i przepakowanych treści obejmują aplikacje będące tylko witryną w opakowaniu. TWA bez rzeczywistych funkcji natywnych może zostać odrzucona lub usunięta, zwłaszcza przy nowym zgłoszeniu. Dodaj funkcje natywne, takie jak push notifications, tryb offline, aparat lub share targets, aby aplikacja oferowała samodzielną wartość.
- Problem z sygnałami zaangażowania opisany wyżej. To dlatego konta osobiste objęte 14-dniowym testem zamkniętym nadal otrzymują komunikat "testers not engaged".
Nieporozumienie: TWA NIE jest WebView
W tej kwestii wiele artykułów wprowadza zamieszanie, a precyzja ma znaczenie dla sposobu naprawy. TWA w ogóle nie korzysta z komponentu Android WebView.
"TWA to tylko opakowanie WebView"
Android WebView to uproszczona, osadzana przeglądarka kontrolowana przez aplikację. Jest starsza, ma mniej funkcji i słabszą izolację zabezpieczeń. TWA z niej nie korzysta.
TWA korzysta z silnika Custom Tabs
Przekazuje adres URL do pełnej zainstalowanej przeglądarki użytkownika, zwykle Chrome, i prosi o wyświetlenie strony na pełnym ekranie bez interfejsu. To prawdziwy silnik przeglądarki, nie komponent osadzony.
Ponieważ TWA korzysta z silnika Custom Tabs, otrzymujesz ten sam silnik renderowania, JavaScript i piaskownicę zabezpieczeń co Chrome, a także wspólne pliki cookie i pamięć. Użytkownik zalogowany w witrynie pozostaje zalogowany, przeglądarka aktualizuje się automatycznie, a aplikacja obsługuje pełną platformę internetową. To duża zaleta zwykłej opublikowanej aplikacji, lecz ekrany działają wtedy poza procesem aplikacji, wewnątrz Chrome. Stąd bierze się zarówno osłabienie sygnałów zaangażowania, jak i niska liczba aktywnych użytkowników.
Uruchamianie krok po kroku
Android uruchamia LauncherActivity TWA z androidbrowserhelper.
Strona otwiera się w pełnoekranowym Custom Tab bez interfejsu przeglądarki. Nie ma paska adresu, kart ani elementów sterujących przeglądarki.
To właśnie oznacza "Trusted" w Trusted Web Activity. Jeśli aplikacja nie potrafi wykazać powiązania z witryną, pasek adresu pozostaje widoczny i znika wrażenie aplikacji natywnej.
Weryfikacja zaufania: Digital Asset Links
Chrome usuwa pasek adresu tylko wtedy, gdy aplikacja potwierdzi powiązanie z witryną za pomocą Digital Asset Links. Aplikacja deklaruje reprezentowaną witrynę, a witryna musi udostępniać plik /.well-known/assetlinks.json zawierający package aplikacji i odcisk certyfikatu podpisującego SHA-256.
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.yourapp.name",
"sha256_cert_fingerprints": [
"AB:CD:EF:...:99" // your signing cert SHA-256
]
}
}]
Aplikacja deklaruje witrynę
Manifest wskazuje domenę https reprezentowaną przez aplikację.
Witryna udostępnia assetlinks.json
Plik zawiera package name i odcisk SHA-256.
Chrome porównuje obie strony
Odcisk musi pasować do certyfikatu podpisującego aplikację.
Jeśli testerzy widzą pasek adresu przeglądarki u góry aplikacji, pliku assetlinks.json brakuje, zwraca błąd 404 albo zawiera nieprawidłowy odcisk SHA-256. Napraw plik i upewnij się, że odcisk pasuje do klucza rzeczywiście używanego przez Google Play w Play App Signing. Przywróci to tylko widok pełnoekranowy. Nie naprawi odrzucenia z powodu sygnałów zaangażowania, które wymaga przebudowy do WebView.
Droga sygnałów zaangażowania: TWA a WebView
Najprościej zrozumieć odrzucenie, śledząc miejsce, do którego trafia aktywność testera. W TWA ekrany działają o jedną warstwę dalej od aplikacji, w Chrome Custom Tabs. W aplikacji WebView te same ekrany działają w procesie Twojej aplikacji i są bezpośrednio przypisywane do Twojego package. Ta różnica wpływa na siłę rejestrowanej aktywności.
Gdzie przypisywana jest aktywność testera
WebView ładuje adres URL witryny wewnątrz Twojej aplikacji, więc aktywność jest przypisywana do package zgodnie z oczekiwaniami weryfikacji Google. W TWA pośredni Custom Tab stanowi dodatkowy etap, który prawdopodobnie osłabia sygnał. Niskie wartości w Twojej analityce internetowej, Google Analytics lub Firebase w warstwie webowej, nie muszą oznaczać, że Google nie widzi żadnego użycia. Praktyczny wniosek dla testu zamkniętego pozostaje jednak taki sam: przebudowa do WebView jest pewniejszym rozwiązaniem.
Jak rozpoznać TWA z zewnątrz i od środka
Nie masz pewności, czy opublikowana aplikacja, także przygotowana przez wykonawcę, rzeczywiście jest TWA? Najpierw sprawdź ją wzrokowo, a potem potwierdź wynik w APK lub na podłączonym urządzeniu.
Szybkie oznaki widoczne dla użytkownika
- Zachowuje się dokładnie jak witryna, ponieważ nią jest.
- Przy błędnej konfiguracji u góry widać pasek adresu przeglądarki. To jednoznaczna oznaka opisanego wyżej błędu assetlinks.
- Treść aktualizuje się bez aktualizacji aplikacji w Play Store.
Jednoznaczne oznaki techniczne w APK lub urządzeniu
| Znacznik | Znaczenie |
|---|---|
Un DelegationService que declara la acción TRUSTED_WEB_ACTIVITY_SERVICE |
Najpewniejszy ślad. Tylko TWA zawiera taką deklarację. |
LauncherActivity (a menudo ManageDataLauncherActivity) de com.google.androidbrowserhelper |
Launcher Bubblewrap. |
| Zweryfikowana domena https w konfiguracji linków aplikacji (assetlinks.json funcionando) | Witryna opakowana przez TWA. |
Brak libflutter.so i index.android.bundle, mało kodu natywnego |
To opakowanie treści internetowej, a nie kompilacja Flutter, React Native ani natywna. |
Potwierdź za pomocą adb
Na podłączonym urządzeniu lub emulatorze wystarczą dwa polecenia:
# Is it a TWA? Look for the delegation service: adb shell dumpsys package <package.name> | grep -i DelegationService # Which site does it wrap, and is the trust check passing? adb shell pm get-app-links <package.name> # -> "verified" = Digital Asset Links pass (fullscreen) # -> "1024" = verification failed (address bar shows)
Cómo leer el resultado: si ves un DelegationService y un LauncherActivity de androidbrowserhelper, casi seguro estás mirando un TWA. Si en cambio ves un MainActivity propio, librerías nativas .so y ningún servicio de delegación, es una app nativa de verdad (o Flutter / React Native), y el problema de señales de engagement de esta guía no aplica.
TWA a WebView w teście zamkniętym: porównanie
Obie architektury opakowują treść internetową. Dla przejścia 14-dniowego testu zamkniętego liczy się miejsce działania treści i sposób przypisywania aktywności. Poniższe kryteria wpływają na możliwość uzyskania dostępu do wersji produkcyjnej w jednym cyklu.
TWA / wrapper PWA
Najlepsze dla zatwierdzonych aplikacji, które nie muszą przechodzić testu zamkniętego.
WebView estándar
Najlepsze dla aplikacji, które muszą przejść 14-dniowy test zamknięty z udziałem 12 testerów.
Kontrola zgodności frameworka
WebView działa inaczej niż Chrome na komputerze. Wybierz swój stos, aby zobaczyć ustawienie, które najczęściej psuje aplikację po uruchomieniu.
Włącz DOM Storage
SPA / routing po stronie klientaAplikacje single-page korzystają z localStorage i sessionStorage do routingu po stronie klienta oraz stanu uwierzytelnienia. Bez settings.domStorageEnabled = true routing psuje się po uruchomieniu. Testerzy widzą pusty ekran albo zablokowany loader, co może zostać odczytane jako "not engaged".
Zachowaj też javaScriptEnabled = true i obsługuj nawigację wewnątrz aplikacji przez WebViewClient, aby deep links nie przechodziły do Chrome.
Zadeklaruj uprawnienia natywne do osadzania i przesyłania
Kreator no-codeWebView obsługuje osadzone iframe inaczej niż Chrome na komputerze, a kreatory no-code często na nich polegają. Zadeklaruj natywne uprawnienia do przesyłania plików w AndroidManifest.xml i podłącz WebChromeClient.onShowFileChooser. Bez tego formularze i wysyłanie multimediów mogą przestać działać bez komunikatu.
Dodaj <uses-permission android:name="android.permission.INTERNET"/>, a jeśli aplikacja przyjmuje multimedia, także uprawnienia aparatu i pamięci. Następnie poproś o nie w runtime.
Dodaj pamięć offline i rzeczywistą wartość natywną
Statyczna witryna / CMSZwykła statyczna witryna załadowana w WebView to podręcznikowy "thin wrapper". Ustaw cacheMode = LOAD_DEFAULT, aby zapewnić użyteczny tryb awaryjny offline, dodaj ekran błędu i ponowienia z identyfikacją marki oraz co najmniej jedną funkcję natywną, na przykład push notifications, share target lub skróty na ekranie głównym.
Dzięki temu eksport z CMS lub statyczna witryna przestaje być stroną w ramce i staje się aplikacją, która może przejść weryfikację minimalnej funkcjonalności.
Rozwiązanie: zbuduj standardową aplikację WebView
Zamiast poprawiać TWA lub próbować wymuszać lepsze sygnały, przebuduj aplikację wokół komponentu WebView i opublikuj tę kompilację. Dostępne są trzy popularne drogi. Każda ładuje witrynę wewnątrz Twojej aplikacji:
Najbardziej bezpośrednia droga. Umieść WebView w main activity, wskaż adres URL oraz włącz JavaScript i DOM storage. Otrzymujesz pełną kontrolę bez dodatkowego frameworka.
Jeśli aplikacja jest już projektem webowym lub PWA, Capacitor umieszcza ją w natywnej powłoce WebView i udostępnia natywne wtyczki, takie jak aparat, push i storage. To proste przejście z PWA bez problemu sygnałów TWA.
Starsza, ale nadal użyteczna opcja. Zasada pozostaje ta sama: treść internetowa działa wewnątrz WebView aplikacji, a nie w Chrome Custom Tabs.
Minimalna konfiguracja WebView gotowa do skopiowania
Podstawa jest niewielka: WebView ładuje adres URL z włączonym JavaScript i storage, utrzymuje nawigację wewnątrz aplikacji zamiast przechodzić do Chrome oraz obsługuje przycisk Wstecz w sposób oczekiwany podczas weryfikacji Google. Wybierz język i skopiuj bazę:
val webView = findViewById<WebView>(R.id.webview)
webView.settings.apply {
javaScriptEnabled = true // most sites need this
domStorageEnabled = true // localStorage / sessionStorage
cacheMode = WebSettings.LOAD_DEFAULT
}
// Keep links INSIDE the app (this is the key difference vs a TWA)
webView.webViewClient = WebViewClient()
webView.loadUrl("https://yourwebsite.com")
// The exact back-button handler Google looks for
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
if (webView.canGoBack()) {
webView.goBack()
} else {
finish()
}
}
})
WebView webView = findViewById(R.id.webview); WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); // most sites need this settings.setDomStorageEnabled(true); // localStorage / sessionStorage settings.setCacheMode(WebSettings.LOAD_DEFAULT); // Keep links INSIDE the app (this is the key difference vs a TWA) webView.setWebViewClient(new WebViewClient()); webView.loadUrl("https://yourwebsite.com"); // The exact back-button handler Google looks for getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) { @Override public void handleOnBackPressed() { if (webView.canGoBack()) { webView.goBack(); } else { finish(); } } });
# Wrap an existing web/PWA project in a native WebView shell npm install @capacitor/core @capacitor/cli npx cap init "YourApp" "com.yourapp.name" # Point Capacitor at your live site (capacitor.config.ts) # server: { url: "https://yourwebsite.com", cleartext: false } npm install @capacitor/android npx cap add android npx cap sync # Capacitor handles back-button + DOM storage natively. # Open in Android Studio to build a signed AAB: npx cap open android
Trzy elementy potrzebne do przejścia weryfikacji
Prosty WebView wywołujący wyłącznie loadUrl() nadal jest thin wrapper. Poniższe trzy elementy zmieniają go w pełnoprawną aplikację i chronią testerów przed pustymi ekranami:
Podłącz OnBackPressedCallback pokazany w gotowym fragmencie powyżej, aby przycisk Wstecz najpierw przechodził przez historię stron i zamykał aplikację dopiero po jej wyczerpaniu. Bez tej obsługi jedno dotknięcie zamyka całą aplikację, co wygląda jak błąd i natychmiast wskazuje na thin wrapper.
Zaimplementuj onReceivedError w WebViewClient, aby zamiast pustej strony pokazywać dopracowany ekran braku połączenia z przyciskiem ponowienia. Pusty ekran po utracie internetu szybko zdradza thin wrapper i zwiększa ryzyko negatywnej weryfikacji.
Dodaj push notifications z FCM, pamięć offline, share target, przesyłanie plików przez WebChromeClient.onShowFileChooser albo integrację z urządzeniem. Aplikacja musi oferować wyraźnie więcej niż sam ładowany adres URL. Tego wymagają zasady minimalnej funkcjonalności.
Jeśli nie chcesz pisać kodu Android ręcznie, Capacitor umieszcza istniejący projekt webowy w natywnej powłoce WebView i od razu zapewnia obsługę przycisku Wstecz, natywny splash oraz system wtyczek, między innymi push, aparat i filesystem. To najprostsza droga z PWA do WebView, która całkowicie omija zachowanie Custom Tabs w TWA. Zyskujesz przypisywanie aktywności w procesie WebView oraz łatwe funkcje natywne.
Opublikuj testowaną aplikację. Zbuduj aplikację WebView, przeprowadź ją przez test zamknięty i opublikuj tę samą kompilację jako wersję produkcyjną. Nie testuj jednej architektury z zamiarem późniejszej zamiany na inną aplikację. Przesłanie kompilacji tylko w celu przejścia weryfikacji, a następnie zastąpienie jej w wersji produkcyjnej narusza zasady Google dotyczące działań wprowadzających w błąd i może doprowadzić do zawieszenia aplikacji lub konta. Stałe przejście na WebView usuwa to ryzyko, ponieważ publikujesz dokładnie to, co podlega testom.
Jak przejść na WebView bez resetowania licznika 14 dni
Jeśli test już trwa, nie musisz zaczynać od nowa. Aktualizacja aplikacji nie resetuje licznika 14 dni, o ile pozostajesz na tej samej ścieżce testów i zachowujesz ten sam package name. Bezpieczna migracja wygląda tak:
Zachowaj dokładnie ten sam applicationId co w obecnej TWA. Inny package name tworzy nową kartę aplikacji i wymusza nowy cykl 14 dni.
versionCode co najmniej o 1 wyżej niż w kompilacji TWA. W przeciwnym razie Play Console odrzuci przesłany plik jako zduplikowaną wersję.Zapewnij niezawodne ładowanie, prawidłową obsługę przycisku Wstecz, dopracowane stany offline i błędów oraz brak pustych ekranów. Ma to również znaczenie podczas weryfikacji thin wrapper opisanej w następnej sekcji.
Otwórz ścieżkę testów zamkniętych, utwórz nową wersję i prześlij AAB WebView. Nie twórz nowej ścieżki ani nowej aplikacji.
Testerzy uczestniczący w teście po prostu aktualizują aplikację do wersji WebView i kontynuują. Licznik nadal działa, o ile co najmniej 12 testerów pozostaje aktywnych.
Przesłanie aktualizacji na ścieżkę testów zamkniętych nie resetuje licznika 14 dni. Licznik działa dalej, a Google traktuje aktywne poprawianie aplikacji podczas testu jako normalną część procesu. Dzięki temu można przejść z TWA na WebView w trakcie cyklu bez utraty już zaliczonych dni.
Czy aplikacja WebView nadal jest uznawana za thin wrapper?
To pułapka dla deweloperów, którzy uznają WebView za automatyczne rozwiązanie. Przejście z TWA na WebView usuwa problem sygnałów zaangażowania, ale nie zwalnia z zasad Google dotyczących spamu i minimalnej funkcjonalności. WebView wyświetlający tylko stronę główną w ramce nadal może zostać odrzucony jako thin wrapper, czyli cienkie opakowanie witryny bez rzeczywistej wartości natywnej, podobnie jak prosta TWA.
Potraktuj to jako dwie osobne bramki. Usługa testowa lub przebudowa do WebView może pomóc przejść jedną z nich, ale nie zastąpi drugiej.
Wymaganie testu zamkniętego
Jeśli masz nowo utworzone osobiste konto dewelopera, musisz przeprowadzić testy zamknięte aplikacji z udziałem co najmniej 12 testerów, którzy nieprzerwanie uczestniczyli w programie testowania co najmniej przez ostatnie 14 dni. WebView pomaga wiarygodnie rejestrować zaangażowanie, a PrimeTestLab zapewnia testerów.
Liczba + czasMinimalna funkcjonalność (thin wrapper)
Ocena zasad i jakości: czy aplikacja oferuje rzeczywistą wartość, czy jest tylko witryną w ramce? Tę bramkę przechodzi wyłącznie pełnoprawna aplikacja. Nie zastąpi jej żadna usługa ani sama zmiana architektury.
Zasady + jakośćCelem nie jest więc sam WebView zamiast TWA, lecz aplikacja WebView z wystarczającą rzeczywistą wartością i natywnym zachowaniem. W praktyce oznacza to:
Przycisk Wstecz powinien przechodzić przez historię stron, a następnie bezpiecznie zamykać aplikację. Tester nie może trafić na pusty ekran ani nagłe zamknięcie.
Pokaż dopracowany ekran braku połączenia i możliwość ponowienia. Biały ekran po utracie internetu szybko zdradza thin wrapper.
Dodaj push notifications, funkcje ekranu głównego, integrację z urządzeniem lub pamięć offline. Aplikacja musi oferować wyraźnie więcej niż sam ładowany adres URL.
Zasada bez podmiany aplikacji
Nie testuj pełnoprawnej aplikacji z zamiarem późniejszego zastąpienia jej zasadniczo inną lub uboższą wersją produkcyjną. To działanie wprowadzające w błąd, za które Google zawiesza konta.
Wybierz architekturę WebView, zbuduj pełnoprawną aplikację, przetestuj tę kompilację i opublikuj dokładnie ją. Zachowaj ją w testach i wersji produkcyjnej.
Potrzebujesz dokładniejszej listy przyczyn odrzucenia jakościowego? Nasz poradnik o przyczynach odrzucenia testu zamkniętego opisuje najczęstsze problemy z zasadami i weryfikacją, niezależne od zaangażowania.
Nie wiesz, czy aplikacja jest TWA? Sprawdzimy to przy zamówieniu
Nie musisz uruchamiać poleceń adb ani zaglądać do APK. PrimeTestLab może potwierdzić, czy Twoja aplikacja jest TWA. Po zamówieniu usługi testowej nasz zespół sprawdza kompilację, rozpoznaje TWA lub opakowanie PWA i w razie potrzeby wskazuje konkretne poprawki przed zmarnowaniem 14-dniowego cyklu na architekturę obarczoną problemem zaangażowania.
Tylko w ostatnich miesiącach sprawdziliśmy i skonsultowaliśmy ponad 200 aplikacji TWA. Po zastosowaniu naszych rekomendacji i poprawek aplikacje te mogły niezawodnie kontynuować cykl testowy. Po wykryciu TWA otrzymujesz jasny, praktyczny plan przebudowy, a nie ogólną poradę, aby spróbować ponownie.
Co dzieje się po zamówieniu
Po udostępnieniu ścieżki testów zamkniętych lub kompilacji aplikacja automatycznie trafia do kolejki weryfikacji. Nie potrzeba osobnego zgłoszenia.
Zespół szuka typowych śladów TWA: DelegationService, launchera androidbrowserhelper, zachowania Custom Tabs i braku kodu natywnego. To te same znaczniki opisane w sekcji o rozpoznawaniu powyżej).
Otrzymujesz konkretną rekomendację, zwykle przebudowę do WebView opisaną w tym poradniku. Możesz poprawić architekturę przed wykorzystaniem 14-dniowego cyklu na kompilację narażoną na negatywną ocenę zaangażowania.
Prawidłowa architektura i ponad 12 zweryfikowanych testerów aktywnych przez 14 dni z rzędu obejmują obie bramki. W ten sposób utrzymujemy skuteczność 99,9%.
Wielu deweloperów odkrywa problem TWA dopiero po nieudanym 14-dniowym cyklu, co oznacza konieczność rozpoczęcia od nowa. Wykrywamy go w dniu zerowym, dzięki czemu wystarczy raz poprawić architekturę, raz przeprowadzić test i raz opublikować aplikację. To różnica między postępem w dwa tygodnie a miesiącem kolejnych odrzuceń.
Jak pomaga PrimeTestLab, czyli druga połowa problemu
Architektura to połowa problemu. Drugą, która zatrzymuje wielu samodzielnych deweloperów, jest znalezienie 12 testerów, którzy rzeczywiście dołączą do testu i pozostaną aktywni nieprzerwanie przez 14 dni. W tym pomaga PrimeTestLab.
Zapewniamy zweryfikowanych testerów na prawdziwych urządzeniach z Androidem. Uczestniczą w teście zamkniętym przez cały wymagany okres, aby rezygnacja jednej osoby nie przerwała 14-dniowej ciągłości. Ty udostępniasz link do testów, a my obsługujemy zaproszenia, weryfikację uczestnictwa, codzienne monitorowanie zaangażowania i utrzymanie testerów przez 14 dni. Obsłużyliśmy już 7 400+ aplikacji ze skutecznością 99,9% przy pierwszej próbie.
Usługa testowa spełnia wymaganie dotyczące testerów. Nie wybiera architektury aplikacji i nie przechodzi za Ciebie weryfikacji thin wrapper. Skuteczne połączenie to pełnoprawna kompilacja WebView oraz 12 prawdziwych testerów przez pełne 14 dni, dzięki czemu żadna z tych dwóch kwestii nie staje się przyczyną odrzucenia.
Aktualne plany
- Spełnia minimum Google
- Prawdziwe urządzenia z Androidem
- Pełne 14 dni testu
- Największy margines bezpieczeństwa
- Większa różnorodność urządzeń
- Większa szansa powodzenia przy pierwszej próbie
- Wliczony bufor bezpieczeństwa
- Większa różnorodność urządzeń
- Większa pewność procesu
Plus 5% opłaty serwisowej · Bezpłatny ponowny test lub pełny zwrot pieniędzy
Często zadawane pytania
Dlaczego moja aplikacja TWA jest stale odrzucana w teście zamkniętym?
Z naszego doświadczenia obejmującego 7 400+ aplikacji wynika, że kompilacje TWA i opakowania PWA znacznie częściej otrzymują odrzucenie "testers were not engaged" niż standardowe aplikacje natywne, nawet przy codziennej aktywności testerów. Prawdopodobnie sygnały zaangażowania odczytywane podczas weryfikacji dostępu do wersji produkcyjnej są słabsze, gdy treść internetowa działa w Chrome Custom Tabs zamiast w procesie aplikacji. Google nie ujawnia dokładnych sygnałów, dlatego jest to nasza obserwacja, a nie oficjalna zasada.
Czy lepiej przejść z TWA na WebView, czy naprawiać TWA?
Z naszego doświadczenia wynika, że przebudowa do standardowej aplikacji WebView jest znacznie pewniejsza niż próby wymuszenia lepszych sygnałów zaangażowania z TWA. WebView ładuje witrynę wewnątrz Twojej aplikacji, więc aktywność jest przypisywana do Twojego package zgodnie z oczekiwaniami weryfikacji. Po przejściu na WebView pozostań przy tej architekturze i opublikuj przetestowaną kompilację, zamiast wracać do TWA w wersji produkcyjnej.
Czy aplikacja WebView automatycznie przechodzi test zamknięty?
Nie. Przejście na WebView usuwa problem z sygnałami zaangażowania obserwowany w kompilacjach TWA, ale nie zwalnia z zasad Google dotyczących spamu i minimalnej funkcjonalności. WebView, który tylko wyświetla witrynę w ramce, nadal może zostać odrzucony jako thin wrapper. Zbuduj pełnoprawną aplikację z rzeczywistą funkcją natywną, prawidłową obsługą przycisku Wstecz oraz dopracowanymi stanami offline i błędów.
Czy aktualizacja aplikacji podczas testu zamkniętego resetuje licznik 14 dni?
Nie. Przesłanie aktualizacji na ścieżkę testów zamkniętych nie resetuje licznika 14 dni. Możesz zastąpić kompilację TWA kompilacją WebView w trakcie cyklu bez rozpoczynania od nowa, o ile zachowasz ten sam package name. Google uznaje aktywne poprawianie aplikacji podczas testów za normalną praktykę.
Dlaczego TWA pokazuje mało aktywnych użytkowników w Play Console?
Niektórzy deweloperzy zgłaszają niską liczbę aktywnych użytkowników kompilacji TWA. Google nie opisuje dokładnej przyczyny, ale prawdopodobnie wiąże się ona z działaniem treści internetowej w Chrome Custom Tabs zamiast wewnątrz aplikacji. Kompilacja WebView zwykle raportuje aktywność pewniej, ponieważ ekrany działają w procesie Twojej aplikacji.
Czy można bezpiecznie testować TWA, a opublikować aplikację WebView?
Bezpieczna zasada to testowanie i publikowanie tej samej kompilacji. Najpierw przebuduj aplikację jako WebView, przeprowadź tę kompilację przez test zamknięty i opublikuj dokładnie ją jako wersję produkcyjną. Przesłanie jednej aplikacji tylko po to, aby przejść weryfikację, a następnie zastąpienie jej zasadniczo inną może doprowadzić do zawieszenia z powodu naruszenia zasad Google dotyczących działań wprowadzających w błąd.
Czy opakowanie TWA lub PWA może zostać zatwierdzone w Google Play?
Tak. Aplikacje opakowujące treść internetową mogą zostać zatwierdzone, jeśli spełniają zasady minimalnej funkcjonalności i wymaganie testu zamkniętego. W przypadku kont osobistych, które muszą ukończyć 14-dniowy test zamknięty z udziałem 12 testerów, kompilacje WebView przechodzą weryfikację zaangażowania pewniej niż TWA. Dlatego w tej sytuacji zalecamy WebView.
Czy TWA korzysta z komponentu WebView systemu Android?
Nie. To najczęstsze nieporozumienie. TWA nie korzysta z Android WebView. Używa silnika Custom Tabs i przekazuje adres URL do pełnej przeglądarki zainstalowanej przez użytkownika, zwykle Chrome, aby wyświetlić stronę na pełnym ekranie bez interfejsu przeglądarki. Otrzymuje ten sam silnik renderowania, silnik JavaScript i piaskownicę zabezpieczeń co Chrome, a także wspólne pliki cookie i pamięć. Android WebView jest natomiast osadzanym modułem przeglądarki kontrolowanym przez aplikację i działającym w jej procesie. Właśnie dlatego przebudowa do WebView poprawia przypisywanie zaangażowania.
Dlaczego TWA pokazuje u góry pasek adresu przeglądarki?
Oznacza to nieudaną weryfikację zaufania Digital Asset Links. Chrome ukrywa pasek adresu tylko wtedy, gdy witryna udostępnia prawidłowy plik /.well-known/assetlinks.json z package aplikacji i odciskiem SHA-256 certyfikatu podpisującego. Jeśli pliku brakuje, zwraca błąd 404 albo odcisk nie pasuje do klucza używanego przez Google Play w Play App Signing, aplikacja nadal się otwiera, ale Chrome pokazuje pasek adresu. Naprawa assetlinks.json przywraca pełny ekran, lecz nie usuwa przyczyny odrzucenia testu zamkniętego z powodu zaangażowania. Do tego potrzebna jest przebudowa do WebView.
Jak sprawdzić, czy aplikacja jest TWA?
Sprawdź kompilację. Najpewniejszym znacznikiem jest DelegationService deklarujący akcję TRUSTED_WEB_ACTIVITY_SERVICE, ponieważ deklarują ją wyłącznie TWA. Zwykle występuje również LauncherActivity z com.google.androidbrowserhelper i nie ma natywnych bibliotek Flutter ani React Native. Na podłączonym urządzeniu uruchom adb shell dumpsys package <package> | grep -i DelegationService, aby znaleźć usługę, oraz adb shell pm get-app-links <package>, aby sprawdzić, czy weryfikacja Digital Asset Links przechodzi ("verified"), czy kończy się niepowodzeniem ("1024").
Czy PrimeTestLab może sprawdzić, czy moja aplikacja jest TWA?
Tak. Po zamówieniu usługi testowej nasz zespół sprawdza kompilację, potwierdza, czy jest to TWA lub opakowanie PWA, i w razie potrzeby wysyła konkretną rekomendację przed zmarnowaniem 14-dniowego cyklu. W ostatnich miesiącach sprawdziliśmy ponad 200 aplikacji TWA. Po zastosowaniu naszych rekomendacji i poprawek aplikacje te mogły niezawodnie kontynuować cykl testowy. Nie musisz samodzielnie uruchamiać adb ani sprawdzać APK.
Jak szybko PrimeTestLab może zapewnić testerów do testu zamkniętego?
Gdy ścieżka testów zamkniętych jest aktywna i dostępna, testerzy PrimeTestLab zwykle zaczynają dołączać do testu w ciągu 4-6 godzin. Cena zaczyna się od $19.99 za 12 testerów, plus 5% opłaty serwisowej. Skuteczność wynosi 99,9% w 7 400+ aplikacji.
Podsumowanie
Najważniejsze
Jeśli kompilacja TWA nie przechodzi testu zamkniętego Google Play z powodu zaangażowania, najprostszym rozwiązaniem jest przebudowa do standardowej aplikacji WebView i opublikowanie tej kompilacji jako wersji produkcyjnej bez późniejszego powrotu do TWA. Zachowaj ten sam package name, aby aktualizacja nie zresetowała licznika 14 dni. Zbuduj aplikację wystarczająco funkcjonalną, by przejść weryfikację minimalnej funkcjonalności, a PrimeTestLab może zapewnić 12 testerów przez 14 dni. WebView usuwa problem zaangażowania, pełnoprawna aplikacja przechodzi bramkę thin wrapper, a PrimeTestLab zapewnia testerów. Zobacz plany cenowe →