Vai al contenuto

Guida di correzione del rifiuto 2026

TWA rifiutato su Google Play? Passa a WebView

Se la tua app Trusted Web Activity continua a fallire il test chiuso con "testers were not engaged", la correzione più affidabile è ricostruirla come app WebView standard e pubblicare esattamente quel build. Ecco perché i wrapper TWA e PWA vengono segnalati, e come cambiare senza azzerare l’orologio di 14 giorni.

TWA Segnalato più spesso
WebView Correzione affidabile
14 giorni L’orologio non si azzera
99,9% Tasso di successo PTL
Testers were not engaged
Rifiutato Wrapper TWA / PWA Gira sulla superficie di Chrome
Shell della tua app Chrome Custom Tab Contenuto web

Engagement sembra debole → rifiutato

Superato WebView standard Gira nel tuo processo
Shell della tua app WebView (in-process) Contenuto web

Attività registrata → superato

Risposta rapida

Se la tua app TWA continua a fallire il test chiuso (closed testing) con il messaggio "testers were not engaged", la correzione più affidabile nella nostra esperienza è ricostruirla come app WebView standard (WebView di Android Studio, Capacitor o Cordova) e pubblicare esattamente quel build in produzione, non il TWA. Mantieni lo stesso package name e invialo come update così l’orologio di 14 giorni non si azzera mai. Il WebView risolve il problema dei segnali di engagement, ma non ti esenta dalla revisione thin wrapper: fai un’app vera. E se il collo di bottiglia reale è trovare 12 tester attivi per 14 giorni di fila, è esattamente ciò che PrimeTestLab risolve: a partire da $19.99, il test di solito parte in 4-6 ore.

È uno dei rifiuti più frustranti che uno sviluppatore indie possa subire. I tuoi tester erano davvero attivi. Avevi le tue 12 persone. I 14 giorni sono passati. E Google ha comunque risposto con "your testers were not engaged enough." Se hai costruito l’app come Trusted Web Activity (TWA) o wrapper PWA, non stai immaginando il pattern: su oltre 7.400+ app che abbiamo seguito, i build wrapper cadono in questo rifiuto specifico molto più spesso dei build nativi standard o WebView. Questa guida spiega perché, mostra la differenza di architettura che conta e dettaglia il passaggio a WebView senza buttare via i giorni di test che hai già accumulato.

Perché le app TWA subiscono rifiuti nel test chiuso?

Una Trusted Web Activity renderizza il tuo sito sulla superficie Custom Tabs di Chrome, invece di disegnare le schermate dentro la tua app. È un percorso rapido per trasformare un sito o una PWA in qualcosa di installabile, e per molte app in produzione funziona bene. Il problema compare in particolare quando un account sviluppatore personale deve soddisfare il requisito obbligatorio di test chiuso di 14 giorni prima dell’accesso in produzione.

Nella nostra esperienza aiutando oltre 7.400+ app in questo processo, i build TWA e wrapper PWA ricevono il rifiuto "testers were not engaged" molto più spesso delle app native standard, anche quando i tester erano davvero attivi ogni giorno. Il pattern è abbastanza costante da farci oggi orientare gli sviluppatori a evitare il TWA ogni volta che l’app deve ancora superare il test chiuso di 14 giorni.

Rilievo 01

Segnali di engagement deboli

L’attività che legge la revisione di Google sembra arrivare più debole quando il contenuto gira sulla superficie di Chrome invece che dentro il processo della tua app. L’uso reale può sembrare uso basso.

Rilievo 02

Rifiuto "testers not engaged"

Il messaggio più comune che vediamo sui build TWA. I tester hanno attivato il test, installato e usato l’app ogni giorno, e la revisione di accesso in produzione segna comunque l’engagement come insufficiente.

Rilievo 03

Pochi utenti attivi nella Play Console

Alcuni sviluppatori riportano anche conteggi inaspettatamente bassi di utenti attivi nella Dashboard su build TWA, in linea con lo stesso comportamento della superficie di Chrome.

Rilievo 04

Rifiuti ripetuti al reinvio

Poiché l’architettura è la causa radice, reinviare lo stesso build TWA tende a fallire allo stesso modo. Per questo le pezze raramente risolvono e un rebuild sì.

Una precisazione onesta

Una precisazione onesta: Google non documenta pubblicamente esattamente quali segnali pesa nella revisione di accesso in produzione, quindi tratta il meccanismo preciso come nostra osservazione, non policy ufficiale. Diffida di qualsiasi post su forum che dica di conoscere la telemetria esatta. Ciò che possiamo riportare con fiducia è l’esito che continuiamo a vedere: i build TWA vengono rifiutati per engagement, e i build WebView comparabili passano.

Cos’è davvero un TWA (e come si costruisce)

Prima di correggere il rifiuto, aiuta capire esattamente cosa hai pubblicato. Una Trusted Web Activity è un’app Android che, in sostanza, è il tuo sito a schermo intero dentro un motore browser reale, senza barra degli indirizzi, senza chrome del browser, nulla che dica all’utente che sta guardando una pagina web. Per l’utente sembra e si sente come un’app nativa. Sotto, è il tuo sito live.

I TWA di solito si generano con la CLI Bubblewrap di Google o con PWABuilder, entrambi sopra la libreria androidbrowserhelper di Google. Punti lo strumento a un URL, produce un progetto Android, firmi e invii l’AAB a Google Play.

Perché gli sviluppatori scelgono un TWA

Un’unica base di codice

Hai già un sito (idealmente una PWA). Un TWA lo porta sul Play Store senza riscrivere in Kotlin, Flutter o React Native.

Update istantanei

Poiché l’app carica il tuo sito live, pubblichi le modifiche deployando il sito: niente update dell’app, niente coda di revisione.

Economico e rapido

Generare un TWA richiede minuti, non settimane. Per una PWA esistente, è il percorso di minor sforzo verso Android.

Il trade-off che causa il rifiuto

La stessa cosa che rende il TWA economico lo rende fragile nel test chiuso:

  • Serve internet. È una finestra sul tuo sito, quindi una connessione debole significa app debole, a meno che la tua PWA non abbia supporto offline solido.
  • Rischio di rifiuto sul Play Store. La policy su funzionalità minima / contenuto ripacchettato mira alle app che sono «solo un sito in un wrapper». Un TWA senza capacità native reali può essere rifiutato o rimosso, soprattutto su invii nuovi. Aggiungere funzioni native (push, modalità offline, fotocamera, share target) è come restare dalla parte giusta di quella linea.
  • Il problema dei segnali di engagement coperto sopra, ed è perché gli account personali davanti al test chiuso di 14 giorni continuano a ricevere il messaggio "testers not engaged".

L’equivoco: un TWA NON è un WebView

Questa è la parte che la maggior parte degli articoli sbaglia, e vale essere precisi perché cambia come correggi il problema. Un TWA non usa il componente WebView di Android in alcun modo.

Il mito

"Un TWA è solo un wrapper di WebView"

Il WebView di Android è un browser incorporabile snello controllato dall’app: più vecchio, con meno funzioni e isolamento di sicurezza più debole. Un TWA non lo usa.

La realtà

Un TWA usa il motore di Custom Tabs

Consegna il tuo URL al browser completo installato dell’utente (di solito Chrome) e chiede di renderizzare la pagina a schermo intero, senza UI: il motore reale del browser, non un componente incorporato.

Poiché un TWA usa il motore dietro le Custom Tabs, ottieni lo stesso motore di rendering, JavaScript e sandbox di sicurezza del Chrome reale, più cookie e storage condivisi con Chrome (così un utente già loggato sul web resta loggato), aggiornamenti automatici del browser e supporto completo alla piattaforma web. È genuinamente potente per un’app pubblicata normale, ma significa anche che le tue schermate girano fuori processo, dentro Chrome, non dentro la tua app. È la radice sia della diluizione dei segnali di engagement sia dei conteggi bassi di utenti attivi.

Il flusso di avvio, passo dopo passo

1
L’utente tocca l’icona dell’app

Android lancia la LauncherActivity del TWA (da androidbrowserhelper).

2
Quell’activity chiede a Chrome di aprire il tuo URL

La pagina si apre in un Custom Tab a schermo intero, senza chrome: senza barra degli indirizzi, senza schede, senza UI del browser.

3
Prima di nascondere la barra degli indirizzi, Chrome esegue un controllo di fiducia

È il "Trusted" di Trusted Web Activity. Se l’app non dimostra di possedere il sito, la barra degli indirizzi resta visibile e l’illusione nativa si spezza.

Il controllo di fiducia: Digital Asset Links

Chrome nasconde la barra degli indirizzi solo se l’app dimostra di possedere il sito, usando i Digital Asset Links. L’app dichiara quale sito rappresenta, e il sito deve servire un file in /.well-known/assetlinks.json che nomina il package dell’app e l’impronta digitale del certificato di firma (SHA-256).

https://yoursite.com/.well-known/assetlinks.json JSON
[{
  "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
    ]
  }
}]
Come si risolve la verifica

L’app dichiara il sito

Il manifest nomina il dominio https che l’app rappresenta.

Il sito serve assetlinks.json

Il file elenca il package name e l’impronta SHA-256.

Chrome incrocia i due

L’impronta deve corrispondere al certificato di firma dell’app.

Match L’app gira a schermo intero, come un’app nativa. Barra degli indirizzi nascosta.
Assente / 404 / impronta sbagliata L’app si apre comunque, ma Chrome mostra la barra degli indirizzi: il bug TWA più comune.
Il bug n. 1 dei TWA

Se i tester riferiscono di vedere una barra degli indirizzi del browser in alto nella tua «app», il tuo assetlinks.json è assente, restituisce 404 o carica l’impronta SHA-256 sbagliata. Correggi il file (e assicurati che l’impronta corrisponda alla chiave con cui Google Play firma davvero sotto Play App Signing), ma ricorda: questo ripristina solo l’illusione a schermo intero. Non corregge il rifiuto per segnali di engagement, che richiede il rebuild in WebView.

Il percorso dei segnali di engagement: TWA vs WebView

Il modo più semplice per capire il rifiuto è seguire dove va davvero l’attività del tester. In un TWA, le tue schermate vivono uno strato più lontano dalla tua app, dentro la superficie Custom Tabs di Chrome. In un’app WebView, le stesse schermate girano dentro il processo della tua applicazione, attribuite direttamente al tuo package. Quell’unica differenza è ciò che cambia quanto forte viene registrata l’attività.

Dove viene attribuita l’attività del tester

TWA
Il tester tocca l’app Il tuo package Chrome Custom Tab Contenuto web
Debole
WebView
Il tester tocca l’app Il tuo package WebView (in-process) Contenuto web
Forte
L’idea centrale

Un WebView carica l’URL del tuo sito dentro la tua applicazione, quindi l’attività si registra sul tuo package come la revisione di Google si aspetta di vedere. Con un TWA, il Custom Tab in mezzo è il salto in più che sembra diluire il segnale. Per questo numeri bassi nella tua analytics web (Google Analytics, Firebase sul layer web) su un TWA non significano necessariamente «Google vede zero uso», ma l’esito pratico nel test chiuso è lo stesso: un rebuild a WebView è la correzione affidabile.

Come riconoscere un TWA (da fuori e da dentro)

Non sei sicuro se l’app che hai pubblicato (o che ha pubblicato un contractor) sia davvero un TWA? Ecco come confermare: prima a occhio, poi in modo definitivo dall’APK o da un dispositivo collegato.

Segnali visivi rapidi (come utente)

  • Si comporta esattamente come il sito, perché è il sito.
  • Se lo sviluppatore ha configurato male, vedrai una barra degli indirizzi del browser in alto: prova schiacciante (vedi il bug di assetlinks sopra).
  • Il contenuto si aggiorna senza un update dell’app che compaia sul Play Store.

Segnali tecnici definitivi (ispezionando APK / dispositivo)

Marcatore Cosa significa
Un DelegationService che dichiara l’action TRUSTED_WEB_ACTIVITY_SERVICE L’impronta più affidabile: solo i TWA la dichiarano.
LauncherActivity (spesso ManageDataLauncherActivity) di com.google.androidbrowserhelper Il launcher di Bubblewrap.
Un dominio https verificato nelle impostazioni di link dell’app (assetlinks.json funzionante) Il sito che il TWA incapsula.
Niente libflutter.so, niente index.android.bundle, poco codice nativo È un wrapper web, non un build Flutter / React Native / nativo.

Conferma con adb

Su un dispositivo collegato (o emulatore), due comandi bastano:

terminal bash
# 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)
Come leggere il risultato

Come leggere il risultato: se vedi un DelegationService e una LauncherActivity di androidbrowserhelper, sei quasi certamente di fronte a un TWA. Se invece vedi una MainActivity personalizzata, librerie native .so e nessun delegation service, è un’app nativa vera (o Flutter / React Native), e il problema dei segnali di engagement di questa guida non si applica.

TWA vs WebView nel test chiuso: a confronto

Le due architetture incapsulano contenuto web. La differenza che conta per superare il test chiuso di 14 giorni è dove quel contenuto gira e come viene attribuita l'attività. Ecco come si confrontano sulle metriche che decidono se arrivi alla produzione in un ciclo.

Cosa conta per te
Wrapper TWA / PWA
WebView padrão
Dove le schermate renderizzano
Chrome Custom Tabs
Dentro il processo dell'app
Forza del segnale di engagement
Debole
Forte
Rischio di "testers not engaged"
Alto (nei nostri dati)
Basso
Utenti attivi nella Play Console
Di solito sottostima
Riporta in modo affidabile
Controllo nativo (indietro, offline)
Limitato
Controllo totale
Comportamento analytics nell'app
Strano / sottoconta
Standard
Revisione thin wrapper
Si applica ancora
Si applica ancora
Affidabilità nel test di 14 giorni
Inconsistente
Affidabile
Maggior rischio di rifiuto

Wrapper TWA / PWA

Meglio per: app già approvate che non devono superare il test chiuso.

Rapido da montare da una PWA esistente
Esperienza a schermo intero, senza barra degli indirizzi
L'attività gira uno strato più lontano in Chrome
Maggior tasso di rifiuto "testers not engaged"
Può sottostimare gli utenti attivi nella Play Console
Consigliato per il test chiuso

WebView padrão

Meglio per: app che devono superare il test chiuso di 14 giorni con 12 tester.

Le schermate girano nel processo della tua app
L'attività si attribuisce direttamente al tuo package
Controllo nativo totale: indietro, offline, errori
Comportamento standard di analytics
Serve ancora valore reale per superare la revisione thin wrapper
Interattivo

Controllo di compatibilità del framework

Il WebView si comporta in modo diverso da Chrome desktop. Scegli il tuo stack per vedere la configurazione che si rompe di più al lancio.

Seleziona il framework sopra per vedere l'ottimizzazione specifica del WebView.

Attiva DOM Storage

SPA / Client Routing

Le single-page app dipendono da localStorage e sessionStorage per routing client-side e stato di auth. Se non attivi settings.domStorageEnabled = true, il routing web si rompe al lancio: i tester cadono su schermata bianca o loader bloccato, che si legge come "not engaged".

Mantieni anche javaScriptEnabled = true e gestisci la navigazione in-app con un WebViewClient così i deep link non saltano a Chrome.

Dichiara permessi nativi per embed e upload

No-Code Builder

Il WebView tratta gli embed iframe in modo diverso da Chrome desktop, e i builder no-code ne dipendono molto. Assicurati che i permessi di upload file siano dichiarati in modo nativo in AndroidManifest.xml (e collega WebChromeClient.onShowFileChooser), altrimenti form e upload media falliscono in silenzio.

Aggiungi <uses-permission android:name="android.permission.INTERNET"/> e, se accetti media, permessi di fotocamera/storage, e richiedili a runtime.

Aggiungi cache offline e valore nativo reale

Static / CMS

Un sito statico puro caricato in un WebView è il "thin wrapper" da manuale. Imposta cacheMode = LOAD_DEFAULT per un fallback offline utilizzabile, aggiungi una schermata di errore/riprova con brand per connessioni assenti, e includi almeno una funzione nativa (push notification, share target o scorciatoie sulla home).

È ciò che porta un CMS o un export statico da "sito incorniciato" a un'app che supera la revisione di funzionalità minima.

La soluzione: costruisci un'app WebView standard

Invece di rattoppare un TWA o tentare di estrarre segnali migliori da esso, il percorso più pulito è ricostruire l'app intorno a un componente WebView e pubblicare quel build. Ci sono tre strade mainstream, tutte caricano il tuo sito dentro la tua applicazione:

1
WebView nativo in Android Studio

La strada più diretta. Metti un WebView nell'activity principale, punta al tuo URL e attiva JavaScript e DOM storage. Controllo massimo, senza framework extra.

2
Capacitor

Se l'app è già un progetto web/PWA, Capacitor la incapsula in uno shell nativo WebView e offre plugin nativi (fotocamera, push, storage). Un upgrade pulito da una PWA senza il problema di segnale del TWA.

3
Cordova

L'opzione più antica, ancora valida. La stessa idea centrale: il tuo contenuto web gira dentro il WebView dell'app, non sulla superficie Custom Tabs di Chrome.

Il setup minimo di WebView (pronto da copiare)

Il nucleo è piccolo: un WebView che carica il tuo URL con JavaScript e storage attivi, tiene la navigazione dentro l'app invece di saltare a Chrome, e collega l'handler del pulsante Indietro che la revisione di Google si aspetta. Cambia scheda per la tua lingua e copia la base:

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

Le tre cose che devi aggiungere per superare la revisione

Un WebView nudo che chiama solo loadUrl() è ancora thin wrapper. Queste tre aggiunte lo rendono un'app reale e tengono i tester lontani dalle schermate bianche:

1
Gestisci il pulsante Indietro di Android

Collega OnBackPressedCallback (mostrato nello snippet pronto da copiare sopra) così Indietro percorre prima la cronologia web e esce dall'app solo quando non c'è più dove andare. Senza questo, un tocco chiude tutta l'app e sembra rotta: un segnale rosso istantaneo di thin wrapper.

2
Gestisci gli stati offline e di errore

Implementa onReceivedError nel tuo WebViewClient per mostrare una schermata vera di "sei offline" con pulsante riprova invece di una pagina bianca. Schermata bianca con connessione assente è il modo più rapido per sembrare thin wrapper e fallire la revisione.

3
Aggiungi valore nativo genuino

Push notification (FCM), cache offline, share target, upload di file via WebChromeClient.onShowFileChooser o integrazione con il dispositivo. Qualsiasi cosa che renda l'app significativamente più dell'URL che carica. È ciò che supera la policy di funzionalità minima.

Sei già su una PWA? Usa Capacitor

Se non vuoi scrivere il codice Android a mano, Capacitor incapsula il tuo progetto web esistente in uno shell nativo WebView e offre gestione del pulsante Indietro, splash nativo e un sistema di plugin (push, fotocamera, filesystem) di serie. È il percorso PWA-a-WebView più diretto che evita del tutto il comportamento Custom Tabs del TWA: ottieni l'attribuzione in-process del WebView e funzioni native facili in un passo.

La regola che conta

Pubblica l'app che hai testato. Costruisci l'app WebView, eseguila nel test chiuso e pubblica lo stesso build in produzione. Non testare un'architettura e sostituirla con un'app diversa dopo: inviare un build solo per superare la revisione e sostituirlo in produzione si scontra con le policy di comportamento ingannevole di Google e può sospendere l'app o l'account. Passare in modo permanente a WebView evita questo, perché ciò che testi è ciò che lanci.

Come cambiare senza azzerare l’orologio di 14 giorni

Se sei già a metà test, non devi ripartire da zero. Il contatore di 14 giorni sopravvive a un update dell’app purché resti sullo stesso canale con lo stesso package name. Questa è la migrazione sicura:

1
Costruisci l’app WebView con lo stesso package name

Mantieni lo stesso applicationId esatto del tuo TWA attuale. Un package name diverso crea una scheda app nuova e forza un ciclo fresco di 14 giorni.

Suggerimento: aumenta il versionCode di almeno 1 rispetto al build TWA, altrimenti la Play Console rifiuterà l’invio come versione duplicata.
2
Falla comportare come un’app standalone vera

Caricamento affidabile, gestione corretta del pulsante Indietro di Android, stati offline e di errore sensati, e niente schermate bianche. Questo ti tiene anche lontano dalla revisione thin wrapper (sezione successiva).

3
Inviala come update sul canale di test chiuso esistente

Apri il tuo canale di test chiuso, crea una nuova versione e invia l’AAB WebView. Non creare un canale nuovo né un’app nuova.

4
Lascia che i tester aggiornino e continuino

I tester che hanno attivato il test aggiornano semplicemente alla versione WebView e proseguono. L’orologio continua, purché almeno 12 tester restino attivi.

L’orologio continua a correre

Inviare un update sul canale di test chiuso non azzera il contatore di 14 giorni. L’orologio prosegue, e Google tratta l’iterazione attiva durante il test come parte normale del processo. È ciò che rende possibile il passaggio TWA-a-WebView a metà ciclo senza perdere i giorni già accumulati.

Un’app WebView conta ancora come "thin wrapper"?

Questa è la trappola che prende gli sviluppatori che pensano che WebView sia una bacchetta magica. Passare da TWA a WebView risolve il problema dei segnali di engagement, ma non ti esenta dalla policy di Spam e funzionalità minima di Google. Un WebView che è solo la homepage in un frame può ancora essere rifiutato come thin wrapper (wrapper sottile), allo stesso modo di un TWA nudo.

Aiuta vederlo come due porte separate. Un servizio di test o un rebuild WebView può aiutare a superare una di esse, ma non l’altra.

Porta 1

Il requisito di test chiuso

Un controllo di conteggio e durata: almeno 12 tester attivati, attivi per 14 giorni consecutivi. Il WebView fa sì che l’engagement venga letto in modo affidabile; PrimeTestLab fornisce i tester.

Conteggio + durata
Porta 2

Funzionalità minima (thin wrapper)

Una decisione di policy e qualità: l’app offre valore reale, o è solo un sito incorniciato? Solo un’app sostanziale passa: nessun servizio o cambio di architettura lo fa al posto tuo.

Policy + qualità

Quindi l’obiettivo non è solo «WebView invece di TWA»: è un’app WebView con valore genuino e comportamento nativo abbastanza da reggersi da sola. In pratica, significa:

A
Gestisci correttamente il pulsante Indietro di Android

Indietro deve navigare la cronologia web e poi uscire con eleganza, senza lasciare il tester su una schermata bianca né chiudere l’app di sorpresa.

B
Gestisci gli stati offline e di errore

Mostra una schermata vera di «sei offline» e un percorso di riprova. Schermata bianca con connessione assente è il modo più rapido per sembrare thin wrapper.

C
Aggiungi valore nativo genuino

Push notification, esperienza sulla home, integrazione con il dispositivo, cache offline: qualsiasi cosa che renda l’app significativamente più dell’URL che carica.

La regola del bait-and-switch (non romperla)

Non testare un’app sostanziale e poi sostituirla in produzione con un’app fondamentalmente diversa (o più sottile). È esattamente il comportamento ingannevole per cui Google sospende gli account.

Fai scegliere l’architettura WebView, costruirla in modo sostanziale, testare quel build e pubblicare esattamente quel build. Impegnati su di esso nel test e in produzione.

Vuoi la checklist più approfondita di cosa fa scattare un rifiuto di qualità? La nostra guida su perché il test chiuso viene rifiutato dettaglia i fallimenti di policy e revisione più comuni oltre all’engagement.

Non sai se la tua app è un TWA? Controlliamo al momento dell’ordine

Non devi eseguire comandi adb né ispezionare l’APK da solo. Sì: PrimeTestLab può confermare se la tua app è un TWA per te. Nel momento in cui ordini il nostro servizio di test, il nostro team ispeziona il build, identifica se è TWA o wrapper PWA e, se lo è, dice esattamente cosa correggere prima che l’orologio di 14 giorni venga sprecato su un’architettura che sarà segnalata per engagement.

200+ app TWA controllate

Abbiamo ispezionato e orientato oltre 200 app TWA solo negli ultimi mesi e, dopo le nostre raccomandazioni e correzioni, tutte hanno proseguito verso l’accesso in produzione. Quando rileviamo un TWA, ricevi un piano di rebuild chiaro e azionabile, non un vago «riprova».

Cosa succede al momento dell’ordine

1
Ordini e condividi l’app

Appena il tuo canale di test chiuso o build è condiviso con noi, l’app entra nella nostra coda di revisione: senza richiesta extra.

2
Ispezioniamo subito il build in cerca di marcatori TWA

Il nostro team cerca le impronte tipiche di TWA: il DelegationService, il launcher androidbrowserhelper, il comportamento di Custom Tabs e l’assenza di codice nativo (gli stessi marcatori della sezione di rilevamento sopra).

3
Se è TWA, lo segnaliamo e diciamo esattamente come correggere

Ricevi una raccomandazione specifica, tipicamente il rebuild WebView di questa guida, per correggere l’architettura prima di bruciare un ciclo di 14 giorni su un build che fallirebbe la revisione di engagement.

4
Quando è solido, i nostri tester eseguono il ciclo completo di 14 giorni

Con l’architettura giusta e 12+ tester verificati attivi per 14 giorni senza interruzioni, entrambe le porte restano coperte: ed è così che manteniamo un tasso di successo del 99,9%.

Perché questo fa risparmiare settimane

La maggior parte degli sviluppatori scopre che il TWA è il problema dopo un ciclo di 14 giorni fallito, il che significa ripartire. Poiché lo intercettiamo al giorno zero, correggi l’architettura una volta, testi una volta e pubblichi una volta. È la differenza tra un percorso di circa due settimane e un mese di rifiuti ripetuti.

Come aiuta PrimeTestLab (l’altra metà del problema)

L’architettura è metà del problema. L’altra metà, quella che ferma la maggior parte degli sviluppatori solo, è trovare 12 tester che attivino davvero il test e restino attivi per 14 giorni senza interruzioni. È ciò che PrimeTestLab risolve.

Forniamo tester verificati, attivati su dispositivi Android reali, che tengono il tuo test chiuso attivo per tutto il requisito, così l’uscita di un singolo tester non spezza mai la sequenza di 14 giorni. Condividi il link di attivazione del test chiuso; gestiamo invito, verifica di attivazione, monitoraggio giornaliero dell’engagement e retention di 14 giorni. Oltre 7.400+ app, con tasso di successo del 99,9% al primo tentativo.

A partire da $19.99 12 tester
4-6 ore Avvio del test
7.400+ app 99,9% di successo
Per essere diretti

Un servizio di test copre il requisito dei tester. Non sceglie l’architettura della tua app né supera la revisione thin wrapper al posto tuo. La combinazione vincente è un build WebView sostanziale più 12 tester reali per i 14 giorni completi, così nessuna delle due parti sia il motivo del rifiuto.

Piani attuali

Starter 12 tester $19.99
  • Soddisfa il minimo di Google
  • Dispositivi Android reali
  • Copertura completa di 14 giorni
Vedi il piano
Miglior valore Enterprise 25 tester $27.99
  • Massimo margine di sicurezza
  • Migliore diversità di dispositivi
  • Più margine al primo invio
Vedi il piano
Professional 20 tester $29.99
  • Buffer di sicurezza incluso
  • Migliore diversità di dispositivi
  • Più margine di sicurezza all’invio
Vedi il piano

+5% di commissione di servizio · Nuovo test gratuito o rimborso completo

Domande frequenti

Perché la mia app TWA continua a essere rifiutata nel test chiuso?

Nella nostra esperienza con oltre 7.400+ app, i build TWA e wrapper PWA ricevono il rifiuto "testers were not engaged" molto più spesso delle app native standard, anche quando i tester erano attivi ogni giorno. La ragione probabile è che i segnali di engagement che legge la revisione di accesso in produzione di Google arrivano più deboli quando il contenuto web gira sulla superficie Custom Tabs di Chrome invece che dentro il processo della tua app. Google non documenta pubblicamente i segnali esatti, quindi trattalo come nostra osservazione, non policy ufficiale.

Devo passare da TWA a WebView o solo tentare di sistemare il TWA?

Nella nostra esperienza, ricostruire come app WebView standard è molto più affidabile che tentare di forzare segnali di engagement migliori da un TWA. Un WebView carica il tuo sito dentro la tua applicazione, quindi l’attività si registra sul tuo package come la revisione si aspetta. Dopo il passaggio a WebView, restaci: pubblica il build che hai testato invece di tornare al TWA in produzione.

Un’app WebView supera automaticamente il test chiuso?

No. Passare a WebView rimuove il problema di segnali di engagement che vediamo sui build TWA, ma non ti esenta dalla policy di Spam e funzionalità minima di Google. Un WebView che incornicia solo il sito può ancora essere rifiutato come thin wrapper, quindi fai un’app genuina con valore nativo reale, gestione corretta del pulsante Indietro e stati offline e di errore adeguati.

Aggiornare l’app durante il test chiuso azzera l’orologio di 14 giorni?

No. Inviare un update sul canale di test chiuso non azzera il contatore di 14 giorni. L’orologio continua, quindi puoi sostituire un build TWA con un WebView a metà ciclo senza ripartire, purché mantenga lo stesso package name. Google tratta l’iterazione attiva durante il test come normale.

Perché il mio TWA mostra pochi utenti attivi nella Play Console?

Alcuni sviluppatori riportano numeri bassi di utenti attivi su build TWA. Google non documenta la causa esatta, ma sembra legata al contenuto web che gira sulla superficie Custom Tabs di Chrome invece che dentro la tua app. Un build WebView tende a riportare l’attività in modo più affidabile perché le schermate girano nel tuo processo.

È sicuro testare un TWA e pubblicare un’app WebView al suo posto?

La mossa sicura è testare e pubblicare lo stesso build. Invece di testare un TWA e sostituirlo con un’app diversa, ricostruisci prima come WebView, esegui quel build WebView nel test chiuso e pubblica esattamente quel build in produzione. Inviare un’app solo per superare la revisione e sostituirla con un’altra fondamentalmente diversa rischia sospensione sotto le policy di comportamento ingannevole di Google.

Un wrapper TWA o PWA può essere approvato su Google Play?

Sì, le app wrapper possono essere approvate quando soddisfano la policy di funzionalità minima e completano il requisito di test chiuso. Ma per gli account personali che devono superare il test chiuso di 14 giorni con 12 tester, vediamo in modo costante che i build WebView superano la revisione di engagement con più affidabilità dei build TWA, ed è per questo che orientiamo gli sviluppatori verso WebView in quella situazione.

Un TWA usa il componente WebView di Android?

No: è l’equivoco più comune. Un TWA non usa il WebView di Android. Usa il motore dietro le Custom Tabs, consegnando l’URL al browser completo installato dell’utente (di solito Chrome) per renderizzare a schermo intero senza UI. Così ottiene lo stesso motore di rendering, JavaScript e sandbox di sicurezza di Chrome, più cookie e storage condivisi. Un WebView Android, al contrario, è un browser incorporabile controllato dall’app e gira dentro il processo dell’app: è esattamente per questo che un rebuild WebView corregge l’attribuzione di engagement.

Perché il mio TWA mostra una barra degli indirizzi del browser in alto?

Significa che il controllo di fiducia dei Digital Asset Links è fallito. Chrome nasconde la barra degli indirizzi solo se il sito serve un file valido /.well-known/assetlinks.json che nomina il package dell’app e l’impronta SHA-256 del certificato di firma. Se il file è assente, restituisce 404 o l’impronta non corrisponde alla chiave con cui Google Play firma sotto Play App Signing, l’app si apre comunque ma Chrome mostra la barra degli indirizzi. Correggere assetlinks.json ripristina lo schermo intero, ma non corregge il rifiuto per engagement nel test chiuso: quello richiede il rebuild in WebView.

Come so se un’app è un TWA?

Ispeziona il build. Il marcatore più affidabile è un DelegationService che dichiara l’action TRUSTED_WEB_ACTIVITY_SERVICE: solo i TWA la dichiarano. Spesso vedi anche una LauncherActivity di com.google.androidbrowserhelper e nessuna libreria nativa Flutter o React Native. Su un dispositivo collegato, esegui adb shell dumpsys package <package> | grep -i DelegationService per trovare il service, e adb shell pm get-app-links <package> per vedere se la verifica Digital Asset Links sta passando ("verified") o fallendo ("1024").

PrimeTestLab può dirmi se la mia app è un TWA?

Sì. Nel momento in cui ordini il nostro servizio di test, il nostro team ispeziona il build, conferma se è TWA o wrapper PWA e, se lo è, invia una raccomandazione specifica di correzione prima che l’orologio di 14 giorni venga sprecato. Abbiamo controllato oltre 200 app TWA negli ultimi mesi e, dopo raccomandazioni e correzioni, tutte hanno proseguito verso l’accesso in produzione. Non devi eseguire adb né ispezionare l’APK da solo.

Con quanta rapidità PrimeTestLab fornisce tester per il mio test chiuso?

Quando il tuo canale di test chiuso è online e accessibile, i tester di PrimeTestLab di solito iniziano ad attivare il test in 4-6 ore. I prezzi partono da $19.99 per 12 tester, con tasso di successo del 99,9% su oltre 7.400+ app.

Conclusione

In sintesi

Se un build TWA continua a fallire il test chiuso di Google Play per engagement, la correzione più pulita è ricostruirlo come app WebView standard e pubblicare quel build in produzione, senza tornare poi al TWA. Mantieni lo stesso package name così gli update non azzerano l’orologio di 14 giorni, fai l’app abbastanza sostanziale da superare la revisione di funzionalità minima, e lascia che PrimeTestLab copra il requisito di 12 tester per 14 giorni, così il test non sia mai il motivo del rifiuto. Il WebView risolve la porta dell’engagement; un’app vera risolve la porta thin wrapper; PrimeTestLab fornisce i tester. Vedi i piani prezzi →

Kefayatullah Khadem - Software Engineer & Google Play Publishing Specialist

Scritto da

Kefayatullah Khadem

Software Engineer & Google Play Publishing Specialist

Kefayatullah Khadem is a software engineer with over 8 years of experience building scalable applications. At PrimeTestLab, he helps indie developers clear Google Play's closed testing requirement after seeing how many of them struggled with it. To date, he has helped 7,400+ Android apps get production access with a 99.9% success rate across 120+ countries. When he's not helping developers get published, he writes about Google Play policies, app rejection patterns, and the closed testing process.

7,400+ Apps Tested
99.9% Success Rate
120+ Countries
4.9/5 Rating

Tasso di successo 99,9%

Hai ricostruito come WebView? Copri i tuoi 14 giorni di test.

Tester reali. Dispositivi reali. Copertura completa di 14 giorni. Senza rischio di azzeramento.

A partire da solo $19.99 · +5% di commissione di servizio

Il test parte in 4-6 ore · 120+ paesi · Nuovo test gratuito o rimborso completo

Unisciti a oltre 7.400+ sviluppatori che hanno pubblicato con PrimeTestLab

Ottieni 12 tester · $19.99 WhatsApp