PAKELITE / config builder iOS 15+ · WKWebView
ウェブ → iPhone アプリ 変換キット

サイトを、
アプリの殻に入れる。

URLを1行入れるだけで、そのサイトが全画面のiPhoneアプリになる。 カメラの許可も、位置情報の許可も、写真への保存も、 サイトが求めればアプリと同じダイアログが出る。 中身はぜんぶ読めるSwiftで書いてある。

390 pt WKWebView = サイトそのもの ・読み込み ・ログイン保持(Cookie) ・JSダイアログ ・別タブ → 同じ画面で開く NSCameraUsageDescription navigator.geolocation .jpg .png .heic .mp4 .mov → PHPhotoLibrary(写真に追加) .pdf .zip など → Documents config.json 1枚で設定
fig.1 — 殻の断面

サイトの権限を、そのまま要求する

仕様

サイト側が「カメラを使いたい」と言えば、iOS本体の許可ダイアログが出る。 アプリが勝手に覗くのではなく、サイトの要求をそのまま通すだけ、というのがこの殻の考え方。

01カメラ / マイク

サイトが getUserMedia を呼んだ瞬間に、iOSの許可ダイアログが出る。殻側は「渡してよい」と答えるだけ。

02位置情報

navigator.geolocation がそのまま動く。Info.plist の1行を書き換えれば、文章も自分で決められる。

03写真を選ぶ

サイトのファイル選択が本物の写真ピッカーになる。アップロードも普通に通る。

04ダウンロードの振り分け

拡張子で行き先を決める。画像と動画は写真、それ以外はファイルへ。PDFが写真に入る事故が起きない。

05ログインを覚える

Cookieは永続保存。アプリを閉じてもログインしたまま。

06ページにJSを差し込む

広告を消す、CSSを当てる、ボタンを足す。ページを読み込んだ直後に自分のJavaScriptを実行できる。

07ページ → アプリの連絡

window.pake.post() で、サイト側からアプリ側へメッセージを送れる。ここから機能を足していける。

08開く先を選ぶ

別ドメインのリンクを、アプリ内で開くか Safari に投げるかを切り替えられる。

できないこと。ここを先に言う。

制限

ごまかしても、あとで君が損をするだけ。はっきり書いておく。

できないCloudflare Pages でアプリを配る

Cloudflare Pages は「Webサイトの置き場」だ。HTMLやJSは置けるけど、 iOSアプリ(.ipa ファイル)は置けないし、iPhoneはWebからアプリを入れられない。 「アプリ」と「Pages」は一直線にはつながらない。 Pages に置けるのは、この設定ページとソースの配布ページまで。

できないMacなしで、その場でアプリが完成

.ipa を作るには macOS の Xcode が要る。Macがなくても、 GitHub Actions の macos ランナーを借りれば作れる(この設計はそれ前提)。 ただしクラウドでビルドすると数分かかる。

できない作った .ipa をそのまま iPhone に入れる

署名のないアプリは iPhone が拒否する。Sideloadly や AltStore などで 自分の Apple ID で再署名して入れる。無料IDは「7日で切れる/同時3アプリ」の制限つき。 ずっと使うなら Apple Developer Program(年99ドル)が要る。

やらない有料版のコードを解除すること

PakePlus の作者さんが支援者に渡しているアクティベーションコードは、その人のもの。 黙って使うのは盗むのと同じ。この殻は全部このリポジトリ内のコードだけで動くように作った。 だから解除する必要がない。それが一番きれいだと思う。

設定をつくる

builder

左をいじると右の config.json が変わる。できたファイルをそのまま PakeLite/PakeLite/config.json に上書きすれば、君のアプリになる。

入力

https:// から始まるアドレス
半角英数が無難。日本語もビルドは通る

この設定で、iOSが出す許可ダイアログ

出力

PakeLite/PakeLite/config.json—

      
ソース全体(zip)

ビルドの手順

3 steps

Macがなくても、ここまでは進める。順番にやれば必ず着く。

01

ソースを GitHub に上げる

zip を解凍して、中身を新しいリポジトリに push する。GitHubのWeb画面にドラッグするだけでもいい。

git init && git add . && git commit -m "first" && git branch -M main
git remote add origin https://github.com/<キミのID>/PakeLite.git
git push -u origin main
02

Actions を回して .ipa を作る

Actions タブ →「Build iOS (unsigned ipa)」→ Run workflow。数分待つと Artifacts に PakeLite-unsigned-ipa が出てくる。

03

iPhone に入れる

署名なしのままでは入らない。Sideloadly や AltStore で自分の Apple ID を使って再署名し、実機へ。無料IDは7日で切れるので、切れたら入れ直す。