iOS11.3とMacOS10.13.4アップデートを実施したメモです。
なお、筆者はiPhone歴9年目で、Androidは個人購入したことありません。
動作確認
アップデートが終わると、iPhoneの設定のsafariからいける実験的な機能一覧でServiceWorkerのトグルがデフォルトでONになっています。
Mac上から確認すると、確かにServiceWorkerから供給されていることが確認できます。Cool!
開発ツール
上記の動作確認で気づいた方がいらっしゃるかもしれませんが、serviceworker.js(workerスクリプト)やmanifest.jsonが一覧に出てきていません。
通常なら、iPhoneをMacに繋いでSafariの開発メニューの対象デバイスをクリックすると、iPhoneで動かしているwebサイトのコンソールが見られるわけですが、ServiceWorkerの項目は何もありません。
-
iPhoneの場合、標準でServiceWorkerのデバッグする機能が見つからない。
-
デスクトップ版では、Safari開発メニューにServiceWorkerという専用項目が増えている。
- デスクトップ版Safariでアクセスしているページのみが対象。iPhoneアクセスしているページは除外されている。
- 通常の開発コンソールのリソースタブやネットワークタブからworkerスクリプト部分が切り出されてまとめられている。
- cacheStorageのビューアーは無い。
- ChromeでのServiceWorkerの登録・解除やmanifestのレビューやイベントのエミューレートのような開発補助は無い。
ホームスクリーンアイコン
manifest.jsonのアイコンが反映されません。タブ画面のスクショがアイコン化されます。
もともとMobile Safariには「ホーム画面に追加」というメニュー(Webクリップ)があり、独自タグ<link rel="apple-touch-icon" href="hoge.png" />
でアイコン指定する形式でしたが、まだ統合されていないようです。
ホームスクリーンからの起動
MobileSafariのタブが動作制御されて起動するのかと思いきや、別アプリとして起動します(たぶんWebViewなんでしょう)。
MobileSafariの出たり消えたりするヘッダー/フッターは一切出現しなくなります。Cool!
WebViewで起動することで、筆者の試験アプリでは以下の状況が発生しました。
- LocalStorageが別扱いになる
- カメラキャプチャがエラーになる(navigator.mediaDevices.getUserMediaがundefined)
他にもポロポロ出てきそうです。
ディープリンク/ユニバーサルリンク
iOSはstoreで発行するapp-id
が必要ですが、store登録がサポートされていないのでできません。
PushAPIは無い
リソースキャッシュとホームスクリーン追加だけです。
感想
開発ツールはこれから拡充するものとして待っていれば良さそうなものですが、WebView起動が大きなインパクトありました。PC版ChromeでもPWAのデスクトップ版アプリをインストールできる試験機能がフラグ付きで出ていて、似たように別アプリとして起動します。また、MicroSoftがPWAをStore配布できるようにすると発表しています。よって、WebView起動に合わせた設計の見直しが必要になると覚悟した次第です。