From 446cf36103a0b1eab54fdc6f5bfbaf13d77be093 Mon Sep 17 00:00:00 2001 From: AliReza Date: Sun, 11 Oct 2026 22:41:07 +0330 Subject: [PATCH] Keep the system splash until the first real screen: no blank WebView gap, no second splash Installed APK sequence was system splash -> white WebView -> web splash -> home. The activity now holds the system splash (core-splashscreen) until the page calls TadrisinoAndroid.appReady(), after its first non-boot screen; released after 10s or on a main-frame load error so a dead site shows the WebView error, not an endless splash. Older APKs have no appReady and are unaffected. Debug build compiles; not run on a device. Co-Authored-By: Claude Sonnet 5.5 --- android/app/build.gradle.kts | 2 ++ android/app/src/main/AndroidManifest.xml | 1 + .../java/com/tadrisino/app/MainActivity.kt | 27 ++++++++++++++++++ .../res/drawable-nodpi/splash_icon_art.png | Bin 0 -> 59570 bytes .../app/src/main/res/drawable/splash_icon.xml | 8 ++++++ android/app/src/main/res/values/themes.xml | 11 +++++++ src/app/App.tsx | 8 ++++++ src/lib/bazaar.ts | 2 ++ 8 files changed, 59 insertions(+) create mode 100644 android/app/src/main/res/drawable-nodpi/splash_icon_art.png create mode 100644 android/app/src/main/res/drawable/splash_icon.xml diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index bb0c184..438dba3 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -105,5 +105,7 @@ android { dependencies { implementation("androidx.appcompat:appcompat:1.7.0") implementation("androidx.activity:activity-ktx:1.9.2") + // اسپلشِ سیستم تا آماده‌شدنِ اولین صفحه‌ی وب می‌ماند (MainActivity.keepSplash). + implementation("androidx.core:core-splashscreen:1.0.1") implementation("com.github.cafebazaar.Poolakey:poolakey:2.2.0") } \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index b524dd4..8596419 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -21,6 +21,7 @@ android:name=".MainActivity" android:configChanges="orientation|screenSize|keyboardHidden" android:exported="true" + android:theme="@style/Theme.Tadrisino.Starting" android:screenOrientation="portrait"> diff --git a/android/app/src/main/java/com/tadrisino/app/MainActivity.kt b/android/app/src/main/java/com/tadrisino/app/MainActivity.kt index 86d3cc6..d0a756e 100644 --- a/android/app/src/main/java/com/tadrisino/app/MainActivity.kt +++ b/android/app/src/main/java/com/tadrisino/app/MainActivity.kt @@ -5,6 +5,8 @@ import android.content.Intent import android.net.Uri import android.os.Build import android.os.Bundle +import android.os.Handler +import android.os.Looper import android.os.VibrationEffect import android.os.Vibrator import android.os.VibratorManager @@ -15,6 +17,7 @@ import android.webkit.WebView import android.webkit.WebViewClient import androidx.activity.OnBackPressedCallback import androidx.appcompat.app.AppCompatActivity +import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import ir.cafebazaar.poolakey.Connection import ir.cafebazaar.poolakey.Payment import ir.cafebazaar.poolakey.config.PaymentConfiguration @@ -41,6 +44,13 @@ import org.json.JSONObject class MainActivity : AppCompatActivity() { private lateinit var webView: WebView + + /** + * اسپلشِ سیستم تا وقتی true نشده روی صفحه می‌ماند. فرانت وقتی اولین صفحه‌ی واقعی (ورود/خانه) کشیده شد + * `TadrisinoAndroid.appReady()` را صدا می‌زند. اگر هرگز نرسید (سایت بالا نیامد، JS خطا داد) بعد از + * SPLASH_MAX_MS رها می‌شود تا کاربر به‌جای اسپلشِ بی‌انتها صفحه‌ی خطای WebView را ببیند، نه چیزِ دیگر. + */ + @Volatile private var webReady = false private var payment: Payment? = null private var connection: Connection? = null private val webHost: String = Uri.parse(BuildConfig.WEB_URL).host ?: "" @@ -59,6 +69,11 @@ class MainActivity : AppCompatActivity() { @SuppressLint("SetJavaScriptEnabled") override fun onCreate(savedInstanceState: Bundle?) { + installSplashScreen().setKeepOnScreenCondition { !webReady } + Handler(Looper.getMainLooper()).postDelayed({ + if (!webReady) Log.w(TAG, "web app never reported ready; releasing the splash after ${SPLASH_MAX_MS}ms") + webReady = true + }, SPLASH_MAX_MS) super.onCreate(savedInstanceState) webView = WebView(this) setContentView(webView) @@ -71,6 +86,11 @@ class MainActivity : AppCompatActivity() { // صداهای کوتاهِ رابط (Web Audio) بعد از پاسخِ سرور پخش می‌شوند، نه درست در لحظه‌ی لمس. webView.settings.mediaPlaybackRequiresUserGesture = false webView.webViewClient = object : WebViewClient() { + // صفحه‌ی اصلی بالا نیامد (نبودِ شبکه): اسپلش را رها کن تا خطای WebView دیده شود، نه ۱۰ ثانیه انتظار. + override fun onReceivedError(view: WebView, request: WebResourceRequest, error: android.webkit.WebResourceError) { + if (request.isForMainFrame) webReady = true + } + // هر آدرسی بیرونِ دامنه‌ی خودمان در مرورگرِ گوشی باز می‌شود، نه داخلِ اپ؛ پس پل فقط // در صفحه‌های خودمان در دسترس است. override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { @@ -205,6 +225,12 @@ class MainActivity : AppCompatActivity() { else @Suppress("DEPRECATION") vibrator.vibrate(timings, -1) } + /** فرانت اولین صفحه‌ی واقعی را کشید؛ اسپلشِ سیستم می‌تواند برود. */ + @JavascriptInterface + fun appReady() { + webReady = true + } + /** فرانت با این می‌فهمد درگاه داخلِ اپ باز می‌شود (isPaymentPage)، نه در مرورگرِ بیرونی. */ @JavascriptInterface fun paysInApp(): Boolean = true @@ -225,5 +251,6 @@ class MainActivity : AppCompatActivity() { companion object { private const val TAG = "Tadrisino" + private const val SPLASH_MAX_MS = 10_000L } } diff --git a/android/app/src/main/res/drawable-nodpi/splash_icon_art.png b/android/app/src/main/res/drawable-nodpi/splash_icon_art.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ad5957ddabbd4f28f2ea7823a17586e0d4e624 GIT binary patch literal 59570 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 DGu$H& literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable/splash_icon.xml b/android/app/src/main/res/drawable/splash_icon.xml new file mode 100644 index 0000000..f56f94f --- /dev/null +++ b/android/app/src/main/res/drawable/splash_icon.xml @@ -0,0 +1,8 @@ + + + diff --git a/android/app/src/main/res/values/themes.xml b/android/app/src/main/res/values/themes.xml index 449d7ba..e0d2e95 100644 --- a/android/app/src/main/res/values/themes.xml +++ b/android/app/src/main/res/values/themes.xml @@ -4,4 +4,15 @@ #ED6956 @android:color/white + + + diff --git a/src/app/App.tsx b/src/app/App.tsx index 2900199..31cf398 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -62,6 +62,14 @@ export function App() { void boot(); }, [boot]); + // داخلِ اپِ اندروید اسپلشِ سیستم تا این لحظه روی صفحه می‌ماند؛ پس از اولین صفحه‌ی واقعی (نه boot) می‌رود + // و کاربر مستقیم همان صفحه را می‌بیند. ۳۰۰ms: تا محوشدنِ ورودِ صفحه تمام شود. APKِ قدیمی‌تر appReady ندارد. + useEffect(() => { + if (flow.kind === 'boot') return; + const t = setTimeout(() => window.TadrisinoAndroid?.appReady?.(), 300); + return () => clearTimeout(t); + }, [flow.kind]); + // هر جا نشست باطل شد (refresh هم شکست خورد)، برگرد به صفحه‌ی ورود. useEffect( () => diff --git a/src/lib/bazaar.ts b/src/lib/bazaar.ts index d72ce04..7577263 100644 --- a/src/lib/bazaar.ts +++ b/src/lib/bazaar.ts @@ -23,6 +23,8 @@ import { store } from './storage'; interface AndroidBridge { bazaarPurchase?: (sku: string, orderId: string) => void; bazaarConsume?: (purchaseToken: string) => void; + /** اولین صفحه‌ی واقعی کشیده شد؛ اسپلشِ سیستم می‌تواند برود (APKهای قدیمی‌تر این را ندارند). */ + appReady?: () => void; } declare global {