Etkileşim zayıf okunur → reddedilir
Aktivite kayda geçer → onaylanır
Hızlı yanıt
TWA uygulamanız kapalı testte (closed testing) "test kullanıcıları yeterince etkileşimli değildi" / "testers were not engaged" mesajıyla sürekli başarısız oluyorsa, deneyimimize göre en güvenilir çözüm standart bir WebView uygulaması olarak yeniden inşa etmek (Android Studio WebView, Capacitor veya Cordova) ve üretime TWA değil, o sürümü göndermektir. Aynı package name'i koruyun ve güncelleme olarak yükleyin; böylece 14 günlük sayaç sıfırlanmaz. WebView etkileşim sinyali sorununu giderir ama thin wrapper incelemesinden muaf tutmaz; bu yüzden gerçek bir uygulama yapın. Darboğaz aralıksız 14 gün için 12 aktif test kullanıcısı bulmaksa, bunu PrimeTestLab üstlenir: $19.99'dan, test genellikle 4-6 saatte başlar.
Bağımsız bir geliştiricinin karşılaşabileceği en sinir bozucu reddetmelerden biridir bu. Test kullanıcılarınız gerçekten aktiftı. 12 kişi vardı. 14 gün geçti. Google yine de "test kullanıcılarınız yeterince etkileşimli değildi" / "your testers were not engaged enough" dedi. Uygulamanızı bir Trusted Web Activity (TWA) veya PWA sarmalayıcı olarak kurduysanız, bu örüntü hayal değildir: 7.400+ uygulamada gördüğümüz gibi, sarmalayıcı sürümler standart native veya WebView sürümlerine göre bu retle çok daha sık karşılaşır. Bu rehber nedenini açıklar, önemli mimari farkı gösterir ve bankanızdaki test günlerini çöpe atmadan WebView'a geçişi adım adım anlatır.
İçindekiler
TWA Uygulamaları Kapalı Testte Neden Reddedilir?
Bir Trusted Web Activity, ekranları kendi uygulamanızın içinde çizmek yerine sitenizi Chrome'un Custom Tabs yüzeyi üzerinden sunar. Siteyi veya PWA'yı yüklenebilir hale getirmenin hızlı bir yoludur ve birçok üretim uygulamasında sorun çıkarmaz. Sorun özellikle bir kişisel geliştirici hesabının üretim erişiminden önce zorunlu 14 günlük kapalı test şartını geçmesi gerektiğinde ortaya çıkar.
7.400+ uygulamayı bu süreçten geçirmeye yardımcı olurken edindiğimiz deneyime göre TWA ve PWA sarmalayıcı sürümler, test kullanıcıları her gün gerçekten aktif olsa bile standart native uygulamalara göre "testers were not engaged" / "test kullanıcıları yeterince etkileşimli değildi" reddine çok daha sık takılır. Örüntü o kadar tutarlıdır ki, uygulama hâlâ 14 günlük kapalı testi geçmek zorundaysa geliştiricileri TWA'dan uzak tutuyoruz.
Zayıf etkileşim sinyalleri
Google incelemesinin okuduğu aktivite, içerik uygulamanızın sürecinde değil Chrome yüzeyinde çalıştığında daha zayıf geliyor gibi görünür. Gerçek kullanım düşük kullanım gibi okunabilir.
"Testers not engaged" reddi
TWA sürümlerinde en sık gördüğümüz mesaj budur. Test kullanıcıları kaydoldu, yükledi ve uygulamayı her gün kullandı; üretim erişimi incelemesi yine de etkileşimi yetersiz bulur.
Play Console'da düşük aktif kullanıcı
Bazı geliştiriciler TWA sürümlerinde Kontrol panelinde beklenmedik düşük aktif kullanıcı sayıları da bildirir; bu da aynı Chrome yüzeyi davranışıyla uyumludur.
Yeniden gönderimde tekrar ret
Kök neden mimari olduğu için aynı TWA sürümünü yeniden göndermek genellikle aynı şekilde başarısız olur; bu yüzden yama nadiren işe yarar, yeniden inşa eder.
Dürüst bir uyarı: Google, üretim erişimi inceleme aşamasında tam olarak hangi sinyalleri tarttığını kamuya belgelemez; bu yüzden kesin mekanizmayı resmi politika değil, bizim gözlemimiz olarak okuyun. Tam telemetriyi bildiğini iddia eden forum yazılarına şüpheyle yaklaşın. Güvenle söyleyebildiğimiz sonuç şudur: TWA sürümleri etkileşim nedeniyle reddedilir; karşılaştırılabilir WebView sürümleri onaylanır.
TWA Gerçekte Nedir (ve Nasıl İnşa Edilir)
Reddi düzeltmeden önce tam olarak ne yüklediğinizi anlamak faydalıdır. Bir Trusted Web Activity, özünde gerçek bir tarayıcı motoru içinde tam ekran çalışan web sitenizdir: adres çubuğu yok, tarayıcı arayüzü yok, kullanıcının bir web sayfasına baktığını söyleyen hiçbir şey yok. Kullanıcıya native bir uygulama gibi görünür ve hissettirir. Motorun altında ise canlı web sitenizdir.
TWA'lar genellikle Google'ın Bubblewrap CLI'si veya PWABuilder ile üretilir; ikisi de Google'ın androidbrowserhelper kütüphanesinin üzerindedir. Aracı bir URL'ye yönlendirirsiniz, bir Android projesi çıkar, imzalar ve AAB'yi Google Play'e yüklersiniz.
Geliştiriciler Neden TWA'ya Yönelir
Tek kod tabanı
Zaten bir web siteniz var (ideal olarak bir PWA). TWA, Kotlin, Flutter veya React Native ile yeniden yazmadan Play Store'a taşır.
Anında güncelleme
Uygulama canlı sitenizi yüklediği için değişiklikleri web sitenizi yayınlayarak gönderirsiniz: uygulama güncellemesi yok, inceleme kuyruğu yok.
Ucuz ve hızlı
Bir TWA üretmek haftalar değil dakikalar sürer. Mevcut bir PWA için Android'e en düşük eforlu yoldur.
Redde Yol Açan Ödün
TWA'yı ucuz kılan şey, kapalı test için onu kırılgan da kılar:
- İnternet gerekir. Sitenize açılan bir penceredir; PWA'nızın sağlam offline desteği yoksa zayıf bağlantı zayıf uygulama demektir.
- Play Store red riski. Minimum Functionality / yeniden paketlenmiş içerik politikası "sadece bir sarmalayıcıdaki web sitesi" uygulamalarını hedefler. Gerçek native yeteneği olmayan bir TWA, özellikle yeni gönderimlerde reddedilebilir veya kaldırılabilir. Native özellikler (push bildirimleri, offline mod, kamera, paylaşım hedefleri) eklemek o çizginin doğru tarafında kalmanın yoludur.
- Yukarıda ele alınan etkileşim sinyali sorunu: bu yüzden 14 günlük kapalı testi bekleyen kişisel hesaplar "testers not engaged" mesajını almaya devam eder.
Yanlış Kanı: TWA Bir WebView Değildir
Çoğu makalenin yanlış anlattığı kısım budur ve sorun nasıl çözüleceğini değiştirdiği için net olmak gerekir. Bir TWA, Android'in WebView bileşenini hiç kullanmaz.
"TWA sadece bir WebView sarmalayıcıdır"
Android'in WebView'ı, uygulama tarafından kontrol edilen sadeleştirilmiş, gömülebilir bir tarayıcıdır: daha eski, daha az özellikli, daha zayıf güvenlik yalıtımı. Bir TWA bunu kullanmaz.
TWA, Custom Tabs motorunu kullanır
URL'nizi kullanıcının tam yüklü tarayıcısına (genelde Chrome) devreder ve sayfayı UI olmadan tam ekran çizmesini ister: gömülü bir bileşen değil, gerçek tarayıcı motoru.
TWA, Custom Tabs arkasındaki motoru kullandığı için gerçek Chrome tarayıcısıyla aynı render motoru, JavaScript motoru ve güvenlik sandbox'ını, ayrıca Chrome ile paylaşılan çerez ve depolamayı (web'de zaten oturum açmış kullanıcı oturumda kalır), otomatik tarayıcı güncellemelerini ve tam web platformu desteğini alırsınız. Normal yayınlanmış bir uygulama için bu gerçekten güçlüdür; ama aynı zamanda ekranlarınızın süreç dışında, Chrome'un içinde çalıştığı anlamına gelir. Hem etkileşim sinyali seyrelmesinin hem de düşük aktif kullanıcı sayılarının kökü budur.
Başlatma Akışı, Adım Adım
Android, TWA'nın LauncherActivity'sini başlatır (androidbrowserhelper'dan).
Sayfa tam ekran, chrome'suz bir Custom Tab içinde açılır: adres çubuğu yok, sekmeler yok, tarayıcı arayüzü yok.
Trusted Web Activity'deki "Trusted" budur. Uygulama siteye sahip olduğunu kanıtlayamazsa adres çubuğu görünür kalır ve native illüzyon bozulur.
Güven Kontrolü: Digital Asset Links
Chrome adres çubuğunu yalnızca uygulama web sitesine sahip olduğunu Digital Asset Links ile kanıtlarsa kaldırır. Uygulama hangi siteyi temsil ettiğini bildirir; site de uygulamanın package adını ve imzalama sertifikası parmak izini (SHA-256) adlandıran bir dosyayı /.well-known/assetlinks.json adresinde sunmalıdır.
[{
"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
]
}
}]
Uygulama siteyi bildirir
Manifest, uygulamanın temsil ettiği https alan adını adlandırır.
Site assetlinks.json sunar
Dosya package name ve SHA-256 parmak izini listeler.
Chrome ikisini çapraz kontrol eder
Parmak izi, uygulamanın imzalama sertifikasıyla eşleşmelidir.
Test kullanıcıları "uygulamanızın" üstünde bir tarayıcı adres çubuğu gördüğünü bildiriyorsa assetlinks.json eksiktir, 404 dönüyordur veya yanlış SHA-256 parmak izi taşır. Dosyayı düzeltin (parmak izinin Play App Signing altında Google Play'in gerçekten imzaladığı anahtarla eşleştiğinden emin olun); ama unutmayın: bu yalnızca tam ekran illüzyonunu geri getirir. Etkileşim sinyali reddini düzeltmez; o WebView yeniden inşası ister.
Etkileşim Sinyali Yolu: TWA vs WebView
Reddi anlamanın en basit yolu, bir test kullanıcısının aktivitesinin gerçekten nereye gittiğini izlemektir. TWA'da ekranlarınız uygulamanızdan bir katman uzakta, Chrome'un Custom Tabs yüzeyinin içindedir. WebView uygulamasında aynı ekranlar kendi uygulama sürecinizde çalışır ve doğrudan package'ınıza yazılır. Aktivitenin ne kadar güçlü kayda geçtiğini değiştiren tek fark budur.
Test kullanıcısı aktivitesi nereye yazılır
WebView sitenizin URL'sini kendi uygulamanızın içinde yükler; böylece aktivite Google incelemesinin beklediği gibi package'ınıza yazılır. TWA'da ortadaki Custom Tab, sinyali seyrelten ekstra atlamadır. Bu yüzden TWA'da kendi web analitiğinizde (Google Analytics, web katmanında Firebase) düşük sayılar mutlaka "Google sıfır kullanım görüyor" demek değildir; ama kapalı test için pratik sonuç aynıdır: WebView'a yeniden inşa güvenilir çözümdür.
TWA Nasıl Tanınır (Dışarıdan ve İçeriden)
Sizin (veya bir yüklenicinin) gönderdiği uygulamanın gerçekten TWA olup olmadığından emin değil misiniz? Önce gözle, sonra APK veya bağlı cihazdan kesin olarak nasıl doğrulayacağınız burada.
Hızlı görsel ipuçları (kullanıcı olarak)
- Web sitesi gibi davranır, tam olarak: çünkü web sitesidir.
- Geliştirici yanlış yapılandırdıysa üstte bir tarayıcı adres çubuğu görürsünüz: kesin işaret (yukarıdaki assetlinks hatasına bakın).
- İçerik Play Store'da bir uygulama güncellemesi olmadan yenilenir.
Kesin teknik ipuçları (APK / cihaz incelemesi)
| İşaret | Ne anlama gelir |
|---|---|
TRUSTED_WEB_ACTIVITY_SERVICE eylemini bildiren bir DelegationService |
En güvenilir parmak izi: yalnızca TWA'lar bunu bildirir. |
com.google.androidbrowserhelper'dan LauncherActivity (çoğu zaman ManageDataLauncherActivity) |
Bubblewrap başlatıcısı. |
| Uygulamanın bağlantı ayarlarında doğrulanmış bir https alanı (assetlinks.json çalışıyor) | TWA'nın sarmaladığı site. |
libflutter.so yok, index.android.bundle yok, az native kod |
Web sarmalayıcıdır; Flutter / React Native / native derleme değildir. |
adb ile doğrulayın
Bağlı bir cihazda (veya emülatörde) iki komut işi bitirir:
# 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)
Sonucu okumak: bir DelegationService ve androidbrowserhelper'dan bir LauncherActivity görüyorsanız neredeyse kesin bir TWA'ya bakıyorsunuzdur. Bunun yerine özel bir MainActivity, native .so kütüphaneleri ve delegation service yoksa gerçek native (veya Flutter / React Native) bir uygulamadır ve bu rehberdeki etkileşim sinyali sorunu ona uygulanmaz.
Kapalı Test için TWA vs WebView: Yan Yana
Her iki mimari de web içeriğini sarmalar. 14 günlük kapalı testi geçmek için önemli fark, o içeriğin nerede çalıştığı ve aktivitenin nasıl yazıldığıdır. Bir döngüde üretime ulaşıp ulaşamayacağınızı belirleyen metriklerde şöyle karşılaştırılırlar.
TWA / PWA sarmalayıcı
En iyisi: zaten onaylanmış, kapalı testi geçmesi gerekmeyen uygulamalar için.
Standart WebView
En iyisi: 14 gün, 12 test kullanıcılı kapalı testi geçmesi gereken uygulamalar için.
Framework uyumluluk kontrolü
WebView, masaüstü Chrome'dan farklı davranır. Yığınınızı seçin; başlatmada en sık bozulan ayarı görün.
DOM Storage'ı etkinleştirin
SPA / istemci yönlendirmeTek sayfa uygulamalar istemci tarafı yönlendirme ve kimlik durumu için localStorage ve sessionStorage'a güvenir. settings.domStorageEnabled = true açmazsanız web yönlendirmeniz başlatmada bozulur: test kullanıcıları boş ekran veya takılı yükleyici görür; bu da "etkileşim yok" gibi okunur.
Ayrıca javaScriptEnabled = true tutun ve uygulama içi gezinmeyi bir WebViewClient ile yönetin; deep link'ler Chrome'a fırlamasın.
Gömüler ve yüklemeler için native izinleri bildirin
No-Code builderWebView, iframe gömülerini masaüstü Chrome'dan farklı ele alır ve no-code builder'lar bunlara çok yaslanır. Dosya yükleme izinlerinin AndroidManifest.xml'de native bildirildiğinden emin olun (ve WebChromeClient.onShowFileChooser'ı bağlayın); aksi halde formlar ve medya yüklemeleri sessizce başarısız olur.
<uses-permission android:name="android.permission.INTERNET"/> ekleyin; medya kabul ediyorsanız kamera/depolama izinlerini de ekleyin, sonra çalışma zamanında isteyin.
Offline önbellek ve gerçek native değer ekleyin
Statik / CMSWebView'da yüklenen düz bir statik site, ders kitabı "thin wrapper" örneğidir. Kullanılabilir offline yedek için cacheMode = LOAD_DEFAULT ayarlayın, kopan bağlantılar için markalı bir hata/yeniden dene ekranı ekleyin ve en az bir native özellik katmanlayın (push bildirimleri, paylaşım hedefi veya ana ekran kısayolları).
CMS veya statik dışa aktarımı "çerçeveli web sitesi"nden Minimum Functionality incelemesini geçen bir uygulamaya taşıyan budur.
Çözüm: Bunun Yerine Standart Bir WebView Uygulaması İnşa Edin
Bir TWA'yı yamalamak veya ondan daha iyi sinyaller koparmaya çalışmak yerine daha temiz yol, uygulamayı bir WebView bileşeni etrafında yeniden inşa edip o sürümü yayınlamaktır. Üç ana akım yol vardır; hepsi sitenizi kendi uygulamanızın içinde yükler:
En doğrudan yol. Ana activity'nize bir WebView koyun, URL'nize yönlendirin, JavaScript ve DOM storage'ı açın. Maksimum kontrol, ekstra framework yok.
Uygulamanız zaten bir web/PWA projesiyse Capacitor onu native bir WebView kabuğuna sarar ve native eklentiler (kamera, push, depolama) verir. TWA sinyal sorunu olmadan PWA'dan temiz bir yükseltme yolu.
Daha eski ama hâlâ geçerli seçenek. Aynı çekirdek fikir: web içeriğiniz Chrome'un Custom Tabs yüzeyinde değil, uygulamanın kendi WebView'ında çalışır.
Minimum WebView kurulumu (kopyalamaya hazır)
Çekirdek küçüktür: JavaScript ve depolama açık bir WebView URL'nizi yükler, gezinmeyi Chrome'a fırlatmak yerine uygulama içinde tutar ve Google incelemesinin beklediği geri düğmesi işleyicisini bağlar. Dilinize göre sekmeyi değiştirin ve temeli kopyalayın:
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
İncelemeyi geçmek için eklemeniz gereken üç şey
Yalnızca loadUrl() çağıran çıplak bir WebView hâlâ thin wrapper'dır. Bu üç ekleme onu gerçek bir uygulama yapar ve test kullanıcılarını boş ekranlardan uzak tutar:
OnBackPressedCallback'u bağlayın (yukarıdaki kopyalanabilir parçacıkta gösterildiği gibi) ki Geri önce web geçmişini yürüsün ve gidecek yer kalmadığında uygulamadan çıksın. Bu olmadan tek dokunuş tüm uygulamayı kapatır ve bozuk görünür: anında thin wrapper kırmızı bayrağı.
WebViewClient içinde onReceivedError uygulayın; beyaz sayfa yerine yeniden dene düğmeli gerçek bir "çevrimdışısınız" ekranı gösterin. Bağlantı kopunca boş ekran, thin wrapper gibi görünmenin ve incelemede düşmenin en hızlı yoludur.
Push bildirimleri (FCM), offline önbellek, paylaşım hedefi, WebChromeClient.onShowFileChooser ile dosya yükleme veya cihaz entegrasyonu. Uygulamayı yüklediği URL'den anlamlı şekilde daha fazla kılan her şey. Minimum Functionality politikasını karşılayan budur.
Android kodunu elle yazmak istemiyorsanız Capacitor mevcut web projenizi native bir WebView kabuğuna sarar ve geri düğmesi işleme, native splash ve eklenti sistemi (push, kamera, dosya sistemi) ile gelir. TWA Custom Tabs davranışını tamamen atlayan en doğrudan PWA-WebView yoludur: süreç içi WebView atıfını ve kolay native özellikleri tek adımda alırsınız.
Test ettiğiniz uygulamayı yayınlayın. WebView uygulamasını inşa edin, kapalı testten geçirin ve aynı sürümü üretime gönderin. Bir mimariyi test edip sonra farklı bir uygulamayı takas etmeyin: incelemeden geçsin diye bir sürüm gönderip üretimde başka bir şeyle değiştirmek Google'ın aldatıcı davranış politikalarına çarpar ve uygulama veya hesabın askıya alınmasına yol açabilir. Kalıcı olarak WebView'da kalmak bunu tamamen atlar; çünkü test ettiğiniz şey yayınladığınız şeydir.
14 Günlük Sayacı Yeniden Başlatmadan Nasıl Geçersiniz
Testin ortasındaysanız baştan başlamak zorunda değilsiniz. Aynı test kanalında aynı package name ile kaldığınız sürece 14 günlük sayaç bir uygulama güncellemesinden sağ çıkar. Güvenli geçiş şöyle:
Mevcut TWA'nızla aynı applicationId'yi koruyun. Farklı bir package name yepyeni bir uygulama kaydı açar ve taze 14 günlük döngü zorlar.
versionCode'unuzu TWA sürümünden en az 1 yükseltin; aksi halde Play Console yüklemeyi yinelenen sürüm diye reddeder.Güvenilir yükleme, doğru Android geri düğmesi işleme, makul offline ve hata durumları, boş ekran yok. Thin wrapper incelemesinden de sizi uzak tutan budur (sonraki bölüm).
Kapalı test kanalınızı açın, yeni bir sürüm oluşturun ve WebView AAB'yi yükleyin. Yeni bir kanal veya yeni bir uygulama oluşturmayın.
Kayıtlı test kullanıcılarınız yalnızca WebView sürümüne günceller ve devam eder. En az 12 test kullanıcısı aktif kaldığı sürece sayaç tıkır tıkır işler.
Kapalı test kanalınıza güncelleme itmek 14 günlük sayacı sıfırlamaz. Sayaç işlemeye devam eder ve Google test sırasında aktif yinelemeyi sürecin normal bir parçası sayar. Birikmiş günleri kaybetmeden döngü ortası TWA-WebView takasını mümkün kılan budur.
WebView Uygulaması Hâlâ "Thin Wrapper" Sayılır mı?
WebView'ın sihirli bir değnek sandığı geliştiricileri yakalayan tuzak budur. TWA'dan WebView'a geçmek etkileşim sinyali sorununu ele alır ama Google'ın Spam and Minimum Functionality politikasından muaf tutmaz. Ana sayfanızın bir çerçevede olduğu bir WebView, çıplak bir TWA gibi thin wrapper olarak reddedilebilir.
Bunları iki ayrı kapı olarak görmek yardımcı olur. Bir test hizmeti veya WebView yeniden inşası birini geçmenize yardımcı olabilir; diğerini sizin yerinize geçmez.
Kapalı test şartı
Sayı ve süre kontrolü: en az 12 kayıtlı test kullanıcısı, aralıksız 14 gün aktif. WebView etkileşimin güvenilir okunmasını sağlar; PrimeTestLab test kullanıcılarını sağlar.
Sayı + süreMinimum Functionality (thin wrapper)
Politika ve kalite kararı: uygulama gerçek değer mi sunuyor, yoksa sadece çerçeveli bir web sitesi mi? Bunu yalnızca gerçekten değerli bir uygulama geçer; hiçbir hizmet veya mimari takas sizin yerinize yapmaz.
Politika + kaliteYani hedef yalnızca "TWA yerine WebView" değildir; kendi ayakları üzerinde duracak kadar gerçek değeri ve native davranışı olan bir WebView uygulamasıdır. Pratikte bu demektir ki:
Geri web geçmişinde gezinsin, sonra zarifçe çıksın: test kullanıcısını boş ekrana düşürmesin veya uygulamayı beklenmedik şekilde öldürmesin.
Gerçek bir "çevrimdışısınız" ekranı ve yeniden deneme yolu gösterin. Kopan bağlantıda beyaz ekran, thin wrapper gibi görünmenin en hızlı yoludur.
Push bildirimleri, ana ekran deneyimi, cihaz entegrasyonu, offline önbellek: uygulamayı yüklediği URL'den anlamlı şekilde daha fazla kılan her şey.
Yem ve değiştir kuralı (bunu bozmayın)
Yapmayın: gerçek değerli bir uygulamayı test edip üretim için temelden farklı (veya daha ince) bir uygulamayı takas etmeyin. Google'ın hesapları askıya aldığı aldatıcı davranış tam olarak budur.
Yapın: WebView mimarisini seçin, gerçek değerle inşa edin, o sürümü test edin ve tam o sürümü yayınlayın. Testten üretime ona bağlı kalın.
Kalite reddini neyin tetiklediğine dair daha derin kontrol listesi mi istiyorsunuz? Kapalı test neden reddedilir rehberimiz, etkileşim dışındaki en yaygın politika ve inceleme başarısızlıklarını ayırır.
Uygulamanız TWA mı Emin Değil misiniz? Sipariş Anında Kontrol Ederiz
adb komutları çalıştırmanız veya APK'nizi kendiniz kurcalamanız gerekmez. Evet: PrimeTestLab uygulamanızın TWA olup olmadığını sizin için doğrulayabilir. Test hizmetimizi sipariş ettiğiniz anda ekibimiz sürümünüzü inceler, TWA veya PWA sarmalayıcı olup olmadığını belirler ve öyleyse etkileşim nedeniyle işaretlenecek bir mimaride 14 günlük sayaç boşa gitmeden önce tam olarak neyi düzeltmeniz gerektiğini söyler.
Yalnızca son birkaç ayda 200+ TWA uygulamasını inceledik ve danışmanlık verdik; önerilerimiz ve düzeltmelerden sonra bu uygulamalar yollarında başarıyla ilerledi. TWA yakaladığımızda belirsiz bir "yeniden deneyin" değil, net ve uygulanabilir bir yeniden inşa planı alırsınız.
Sipariş anında ne olur
Kapalı test kanalınız veya sürümünüz bizimle paylaşılır paylaşılmaz uygulamanız inceleme kuyruğuna girer: ekstra istek gerekmez.
Ekibimiz bilinen TWA parmak izlerini kontrol eder: DelegationService, androidbrowserhelper başlatıcısı, Custom Tabs davranışı ve native kod yokluğu (yukarıdaki tespit bölümünde aynı işaretler).
Belirli bir öneri alırsınız: genelde bu rehberdeki WebView yeniden inşası; böylece etkileşim incelemesinde düşecek bir sürümde 14 günlük döngüyü yakmadan önce mimariyi düzeltirsiniz.
Doğru mimari yerinde ve aralıksız 14 gün aktif 12+ doğrulanmış test kullanıcısıyla her iki kapı da kapanır; %99,9 başarı oranımızı böyle koruruz.
Çoğu geliştirici TWA'nın sorun olduğunu başarısız bir 14 günlük döngüden sonra öğrenir: yani baştan başlamak. Biz bunu sıfırıncı günde yakaladığımız için mimariyi bir kez düzeltir, bir kez test eder, bir kez yayınlarsınız. İki haftada temiz bir yol ile bir ay tekrarlanan ret arasındaki fark budur.
PrimeTestLab Nasıl Yardımcı Olur (Sorunun Diğer Yarısı)
Mimari sorunun bir yarısıdır. Diğer yarısı (çoğu solo geliştiriciyi durduran) aralıksız 14 gün teste katılacak ve kayıtlı kalacak 12 test kullanıcısı bulmaktır. Bunu PrimeTestLab üstlenir.
Gerçek Android cihazlarda doğrulanmış, kayıtlı test kullanıcıları sağlar ve kapalı testinizi şartın tamamında aktif tutarız; böylece tek bir test kullanıcısının düşmesi 14 günlük seriyi bozmaz. Kapalı test kayıt bağlantınızı paylaşırsınız; davet, kayıt doğrulama, günlük etkileşim izleme ve 14 günlük tutmayı biz yönetiriz. 7.400+ uygulama ve sayıyor, ilk denemede %99,9 başarı oranı.
Bir test hizmeti test kullanıcısı şartını karşılar. Uygulamanızın mimarisini seçmez veya thin wrapper incelemesini sizin yerinize geçmez. Kazanan kombinasyon gerçek değerli bir WebView sürümü artı tam 14 gün boyunca 12 gerçek test kullanıcısıdır; böylece reddin nedeni ne mimari ne de test tarafı olur.
Güncel paketler
- Google'ın minimumunu karşılar
- Gerçek Android cihazlar
- Tam 14 gün kapsama
- Maksimum güvenlik marjı
- En iyi cihaz çeşitliliği
- En güçlü ilk deneme oranı
- Güvenlik tamponu dahil
- Daha iyi cihaz çeşitliliği
- Daha yüksek yol güveni
Sık Sorulan Sorular
TWA uygulamam kapalı testte neden sürekli reddediliyor?
7.400+ uygulamadaki deneyimimize göre TWA ve PWA sarmalayıcı sürümler, test kullanıcıları her gün aktif olsa bile standart native uygulamalara göre "testers were not engaged" / "test kullanıcıları yeterince etkileşimli değildi" reddine çok daha sık takılır. Olası neden: web içeriği uygulamanızın kendi sürecinde değil Chrome'un Custom Tabs yüzeyinde çalıştığında üretim erişimi incelemesinin okuduğu etkileşim sinyallerinin daha zayıf gelmesidir. Google kesin sinyalleri kamuya belgelemez; bunu resmi politika değil, gözlemimiz sayın.
TWA'dan WebView'a mı geçmeliyim, yoksa TWA'yı mı düzeltmeliyim?
Deneyimimize göre standart bir WebView uygulaması olarak yeniden inşa etmek, TWA'dan daha iyi etkileşim sinyalleri koparmaya çalışmaktan çok daha güvenilirdir. WebView sitenizi kendi uygulamanızın içinde yükler; aktivite incelemenin beklediği gibi package'ınıza yazılır. WebView'a geçtikten sonra orada kalın: test ettiğiniz sürümü yayınlayın, üretim için TWA'ya geri dönmeyin.
WebView uygulaması kapalı testi otomatik geçer mi?
Hayır. WebView'a geçmek TWA'da gördüğümüz etkileşim sinyali sorununu giderir ama Google'ın Spam and Minimum Functionality politikasından muaf tutmaz. Yalnızca web sitenizi çerçeveleyen bir WebView hâlâ thin wrapper olarak reddedilebilir; bu yüzden gerçek native değer, doğru geri düğmesi işleme ve düzgün offline/hata durumlarıyla gerçek bir uygulama yapın.
Kapalı test sırasında uygulamamı güncellemek 14 günlük sayacı sıfırlar mı?
Hayır. Kapalı test kanalınıza güncelleme yüklemek 14 günlük sayacı sıfırlamaz. Sayaç işlemeye devam eder; aynı package name'i koruduğunuz sürece döngü ortasında TWA sürümünü WebView ile değiştirebilirsiniz. Google test sırasında aktif yinelemeyi normal sayar.
TWA'm neden Play Console'da düşük aktif kullanıcı gösteriyor?
Bazı geliştiriciler TWA sürümlerinde düşük aktif kullanıcı sayıları bildirir. Google kesin nedeni belgelemez; web içeriğinin uygulamanızın içinde değil Chrome Custom Tabs yüzeyinde çalışmasıyla bağlantılı görünür. WebView sürümü ekranlar kendi sürecinizde çalıştığı için aktiviteyi daha güvenilir raporlama eğilimindedir.
TWA test edip WebView uygulaması yayınlamak güvenli midir?
Güvenli hamle aynı sürümü test edip yayınlamaktır. TWA test edip farklı bir uygulamayı takas etmek yerine önce WebView olarak yeniden inşa edin, o WebView sürümünü kapalı testten geçirin ve tam o sürümü üretime gönderin. İncelemeden geçsin diye bir uygulama gönderip temelden farklı biriyle değiştirmek Google'ın aldatıcı davranış politikaları altında askıya alma riski taşır.
TWA veya PWA sarmalayıcı Google Play'de hiç onaylanabilir mi?
Evet, sarmalayıcı uygulamalar Minimum Functionality politikasını karşılayıp kapalı test şartını tamamladıklarında onaylanabilir. Ama 14 gün, 12 test kullanıcılı kapalı testi geçmesi gereken kişisel hesaplar için WebView sürümlerinin etkileşim incelemesini TWA'ya göre daha güvenilir geçtiğini tutarlı görüyoruz; bu yüzden o durumda geliştiricileri WebView'a yönlendiriyoruz.
TWA Android'in WebView bileşenini kullanır mı?
Hayır; en yaygın yanlış kanı budur. Bir TWA Android'in WebView'ını kullanmaz. Custom Tabs arkasındaki motoru kullanır: URL'yi kullanıcının tam yüklü tarayıcısına (genelde Chrome) devreder, UI olmadan tam ekran çizer. Böylece Chrome ile aynı render motoru, JavaScript motoru ve güvenlik sandbox'ını, artı paylaşılan çerez ve depolamayı alır. Android WebView ise uygulamanın kontrol ettiği, kendi sürecinizde çalışan gömülebilir bir tarayıcıdır; WebView yeniden inşasının etkileşim atfını düzeltmesinin nedeni tam olarak budur.
TWA'm neden üstte tarayıcı adres çubuğu gösteriyor?
Digital Asset Links güven kontrolünün başarısız olduğu anlamına gelir. Chrome adres çubuğunu yalnızca siteniz uygulamanın package'ını ve imzalama sertifikası SHA-256 parmak izini adlandıran geçerli bir /.well-known/assetlinks.json dosyası sunuyorsa gizler. Dosya eksikse, 404 dönüyorsa veya parmak izi Play App Signing altında Google Play'in imzaladığı anahtarla eşleşmiyorsa uygulama yine açılır ama Chrome adres çubuğunu gösterir. assetlinks.json'ı düzeltmek tam ekranı geri getirir; kapalı test etkileşim reddini düzeltmez: o WebView yeniden inşası ister.
Bir uygulamanın TWA olup olmadığını nasıl anlarım?
Sürümü inceleyin. En güvenilir işaret TRUSTED_WEB_ACTIVITY_SERVICE eylemini bildiren bir DelegationService'tir: yalnızca TWA'lar bunu bildirir. Genelde com.google.androidbrowserhelper'dan bir LauncherActivity ve Flutter veya React Native native kütüphanesi de görmezsiniz. Bağlı cihazda servisi görmek için adb shell dumpsys package <package> | grep -i DelegationService, Digital Asset Links doğrulamasının geçip geçmediğini ("verified") veya düştüğünü ("1024") görmek için adb shell pm get-app-links <package> çalıştırın.
PrimeTestLab uygulamamın TWA olup olmadığını söyleyebilir mi?
Evet. Test hizmetimizi sipariş ettiğiniz anda ekibimiz sürümünüzü inceler, TWA veya PWA sarmalayıcı olup olmadığını doğrular ve öyleyse 14 günlük sayaç boşa gitmeden belirli bir düzeltme önerisi gönderir. Son birkaç ayda 200+ TWA uygulamasını kontrol ettik; önerilerimiz ve düzeltmelerden sonra bu uygulamalar yollarında başarıyla ilerledi. adb çalıştırmanız veya APK'yi kendiniz incelemeniz gerekmez.
PrimeTestLab kapalı testim için test kullanıcılarını ne kadar hızlı sağlar?
Kapalı test kanalınız canlı ve erişilebilir olduktan sonra PrimeTestLab test kullanıcıları genellikle 4-6 saatte teste katılmaya başlar. Fiyatlandırma 12 test kullanıcısı için $19.99'dan başlar; 7.400+ uygulamada %99,9 başarı oranı.
Özet
Kısa özet
TWA sürümü Google Play kapalı testte etkileşim reddiyle sürekli düşüyorsa en temiz çözüm onu standart bir WebView uygulaması olarak yeniden inşa etmek ve o sürümü üretime göndermektir; sonra TWA'ya geri dönmeyin. Aynı package name'i koruyun ki güncelleme 14 günlük sayacı sıfırlamasın; uygulamayı Minimum Functionality incelemesini geçecek kadar gerçek değerli yapın ve PrimeTestLab 12 test kullanıcısı, 14 gün şartını üstlensin; reddin nedeni test olmasın. WebView etkileşim kapısını düzeltir; gerçek bir uygulama thin wrapper kapısını geçer; PrimeTestLab test kullanıcılarını sağlar. Fiyat planlarını görün →