【2018/06/10追記】
iOS 11.3からSafariでもPWAの恩恵を受けれるようになりました!
ただ、プッシュ通知やバックグラウンドの同期ができないなど、AndroidのPWAとは所々出来ることが違います。
こちらの方の記事が詳しくまとまっているので、参考にしていただけると><
iOSの11.3からのPWA対応でできるようになったこと
以下は、記事を書いたとき(2017/06/19)のお話なので注意してください。
iPhoneでPWAは実現できるのか?
PWA(Progressive Web Apps)を利用できる環境を調べてたときにふと出てきた疑問。
日本のWebサービス運営において避けて通れないのは、スマホユーザーの半数がiPhoneユーザーであること。
iOSのSafariでPWAが実現できない話は有名だが、それなら他のブラウザ入れたらいいのでは?
AndroidのChromeやFirefoxは使えたので、iOSにChrome、Firefox入れちゃえば使えるかも!?
・・・と、思ったので検証してみました。
PWAを実現するためにはServiceWorkerの存在が欠かせないので、それを呼び出せるかどうかで調べることに。
検証コード
以下のコードをそれぞれのブラウザで読み込ませます。
ServiceWorkerが定義されていればtrue、定義されていなければfalseを表示するだけの単純なスクリプトです。
<html>
<body>
<script>
alert('serviceWorker' in navigator);
</script>
</body>
</html>
検証環境
2017/06/18時点の環境です。検証コードの妥当性を確認するため、Androidも加えています。
-
iPhone7 iOS 10.3.2
-
iOS版 Safari 10.0
-
iOS版 Google Chrome 59.0
-
iOS版 Firefox 7.5
-
Softbank AQUOS Xx3(506SH) Android 6.0.1
-
Android版 Google Chrome 58.0
-
Android版 Firefox 54.0
検証結果
ブラウザ | 結果 |
---|---|
iOS版 Safari 10.0 | × |
iOS版 Google Chrome Chrome 59.0 | × |
iOS版 Firefox 7.5 | × |
Android版 Google Chrome 58.0 | ○ |
Android版 Firefox 54.0 | ○ |
iOS、見事に全滅・・・_(┐「ε:)_
結論
というわけで、iOSにChromeやFirefox入れたとしても残念ながらPWA実現不可能・・・。
今回試したのはChromeとFirefoxだけですが、この結果を見ると
ブラウザがというよりiOSがServiceWorkerに対応していないって考えたほうがよさそうですね。
(というか、同じブラウザでもOSで異なることに驚きました・・・)
現在、PWAの恩恵が受けれるのはAndroid、PCの一部ブラウザということですね。
iOSでも対応したら、クロスプラットフォームなアプリが作れたりしそうで夢が広がりそうですが・・・。
Appleさん、お願いします><