たくさんの自由帳
Androidのお話
たくさんの自由帳
投稿日 : | 0 日前
文字数(だいたい) : 3670
目次
本題
今回使うサイトは
用意するもの
HTMLを用意する
ServiceWorker
sw.jsを置く
iconsフォルダを置く
manifest.jsonを置く
ServiceWorker登録
ここまででできたファイル
sw.jsを書く
キャッシュしなければいけないファイルを並べる
キャッシュに付ける名前
install イベント
リクエスト横取り
古いキャッシュを消す
ここまでのsw.js
Web Server for Chrome を開いて
本当にオフラインで動くの?
Netlifyで公開
Netlify Drop
Site Settings > Change site name からURLを変更
おわりに
参考にしました
Footnotes
今月はあんまりモバイルデータ使ってないですね。
PWAのキャッシュ機能でオフラインでも見れるサイトができたので書きたいと思います。
今回はAkashic Engineで作ったゲームをPWAに対応させてオフラインでも遊べるようにしたいと思います。
別にAkashic Engineじゃなくても良いですが
ちなみにこのサイトはnuxt.jsにPWA関係を任せているので特に何もせずに動いてます。
PWA+Cacheでモバイルデータを節約するぞ
PWAが何をするのかは各自で調べてください(え
これ。前のブログのおまけで使ってたやつ1
もうすでにhtmlを持ってる方は良いです。
今回私はAkashic EngineをHTML形式に書き出さないといけないので以下を実行
--minify
を指定して必要なファイルを極限まで減らします。
これでHTMLを用意できました。
あとは生成されたHTMLファイルの<title>
を書き換えて名前を変えましょう
Hello, Worker
index.htmlのあるところにsw.js
を作成します。
中身はとりあえず空のままでいいです。
sw.js
と同じ感じで同じ場所にicons
フォルダを作成します。
中には、192x192
の大きさのアイコン画像と512x512
の大きさのアイコン画像を入れます。
名前はそれぞれ以下のようにします。
icon_192.png
icon_512.png
sw.js
と同じ感じで同じ場所にmanifest.json
を作成します。
そして以下の内容を入れます
最低限、
name
short_name
を書き換えればいいと思います。
index.html
を開きます。
開いたら、head内に以下のように書きます。
よくわからない場合は<title>
の下辺りに書いておけばいいと思います。
image
フォルダ以外はみんなあるよね?
sw.js白紙だとインストールのためのバナー(ホーム画面に {アプリ名} を追加)すら出ない模様。
ここでファイル名を間違えるとキャッシュ取得諦めるのでちゃんと書きましょう。先生が生徒の名前間違えないようにするみたいな感じで
多分識別に使うと思います。同じ名前だったら取得しない、名前が変わっていたら再度取り直すみたいな感じだと思います。
キャッシュ取得し直したい場合はここの値を変えることで再度取り直してくれます。
install
イベントコピペで行けると思います。
インターネットに画像リクエストしよー
↓
ServiceWorkerが検知
↓
キャッシュがあればキャッシュを返す
これを書きます。
キャッシュに付ける名前の項目で、キャッシュを再度取り直してくれますなど言いましたが、これ勝手には消してくれないので消してくれるコードです。
CHOOSE FOLDER
を押して、index.html
のあるフォルダを指定します。
そしたらWeb Server
のスイッチを押して起動させます。
起動できたら、http://127.0.0.1
から始まるURLがWeb Server URL(s)
の下に表示されるので押します。するとWebページが表示されるようになるんですね~
そしたらWebページを開いた状態でF12
おしてApplication
タブを押します。
その中からCache Storage
を探して、キャッシュが取得できてるか確認しましょう。
このように登録されていれば完成です。おめ!
ちなみに:本当ならindex.html
をブラウザで開くだけで見れるわけですが、Service Workerを動かすためにはURLが https
で始まるかlocalhost(127.0.0.1)
で始まる必要があるようです。
だからWeb Server for Chromeを利用する必要があったのですね。
Service Worker
を押して、Offline
にチャックを入れます。
入れた後に再読み込みしても表示されている場合は動いてます。
もう一回タイトル見てください。データプラン弱者がなんとかとか書いてあります。そうスマホで見れないと意味がないんですよ。
というわけでNetlifyで公開します。
アカウントは各自作成してください。この記事に辿り着くってことはそれなりの知識があるはずです。
なんかindex.html
なんかが入ったフォルダをブラウザに投げるだけで公開できるらしい。
というわけでindex.html sw.js manifest.json
もろもろ入ってるフォルダをNetlifyのサイトに投げましょう。この方法ならGitHubを経由すること無く公開できます。
https:// {自由に決められる} .netlify.app
の自由に決められるの部分なら、自由に変更可能です。
自分の持ってるドメインを設定する場合は前に書きました→ Google Domainsでドメイン買った
以上です。
今回できたサイトはこちら。→ https://game-akashic-bird.negitoro.dev/
ところで今の所通信制限かかったことは無いと思われ
https://qiita.com/masanarih0ri/items/0845f312cff5c8d0ec60
https://www.simicart.com/blog/pwa-offline/
Nuxt.jsでHTML貼るのってどうすりゃいいんだ? ↩