Engagement sembra debole → rifiutato
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.
Sommario
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.
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.
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.
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.
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: 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.
"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.
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
Android lancia la LauncherActivity del TWA (da androidbrowserhelper).
La pagina si apre in un Custom Tab a schermo intero, senza chrome: senza barra degli indirizzi, senza schede, senza UI del browser.
È 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).
[{
"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
]
}
}]
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.
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
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:
# 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: 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.
Wrapper TWA / PWA
Meglio per: app già approvate che non devono superare il test chiuso.
WebView padrão
Meglio per: app che devono superare il test chiuso di 14 giorni con 12 tester.
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.
Attiva DOM Storage
SPA / Client RoutingLe 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 BuilderIl 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 / CMSUn 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:
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.
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.
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:
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.
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.
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.
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.
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:
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.
versionCode di almeno 1 rispetto al build TWA, altrimenti la Play Console rifiuterà l’invio come versione duplicata.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).
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.
I tester che hanno attivato il test aggiornano semplicemente alla versione WebView e proseguono. L’orologio continua, purché almeno 12 tester restino attivi.
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.
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 + durataFunzionalità 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:
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.
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.
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.
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
Appena il tuo canale di test chiuso o build è condiviso con noi, l’app entra nella nostra coda di revisione: senza richiesta extra.
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).
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.
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%.
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.
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
- Soddisfa il minimo di Google
- Dispositivi Android reali
- Copertura completa di 14 giorni
- Massimo margine di sicurezza
- Migliore diversità di dispositivi
- Più margine al primo invio
- Buffer di sicurezza incluso
- Migliore diversità di dispositivi
- Più margine di sicurezza all’invio
+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 →