両バージョンを一人で開発し、Androidアプリの動作とリリース日程をiOSアプリに合わせました。
アプリケーションは Kotlin で組み、AndroidX Views・Hilt・Coroutines、それに韓国の決済・銀行アプリ生態系を綺麗に通り抜ける Android 11 世代相当のディープリンクポリシーを備えています。ネイティブのシェルは Certilife と同じ設定の WebView surface で storefront のトラフィックを受け止めます。
韓国向けコマースシェルの難所は、決済を取り巻くすべてです。Android 11 以降、アプリは自分が呼び出す外部アプリをあらかじめ宣言しなければならず、このシェルは韓国の決済 · 銀行アプリ群へ向けた明示的な許可リストを抱えて出荷されます。storefront が決済インテントを放つとシェルがそれを解釈し、インストール済みならそのアプリを立ち上げ、なければストアの掲載ページへ送ります — 韓国の決済ゲートウェイが期待する「インストールしてから支払う」ループを、web 層に気付かせないままネイティブ側で受け持ちます。
トークン受け渡しと電話発信のインターフェースはiOSと同じ規則に従い、WebView がサーバーに自分を名乗る方法も同じで、画面の縁まで満たすインセット処理さえ iOS の safe-area の振る舞いを基準に書かれています。storefront からの写真アップロードはカメラかギャラリーかを選ぶネイティブの選択画面を開き、Android のスコープ付きファイル API を経由して、web のファイル入力を規約どおりの形で支えます。そしてデバッグビルドにだけ宿るスイッチ一つで、再ビルドなしにサーバー環境を行き来できます。
