HostingでUniversal Links対応する
ざっくりまとめ。
- Firebase Hosting で Universal Links 対応したい
- apple-app-site-association をどうするか
- firebase.json で指定をしてあがたら良い
- headers に追加をしてあげて
content-type
をapplication/json
にする
- headers に追加をしてあげて
です。
環境
- firebase-tools v6.3.0
- node v8.15.0
やりたいこと
Firebase Hosting で公開しているサイトで Universal Links の対応をしたい!
やっていき!
とはいっても、基本的には他でやるものと手順は変わりません(当たり前ですが)
- サイト側
- apple-app-site-association を root に設置
- json フォーマットで諸々を記述
- Xcode
- Associated Domains の有効化
- 対象ドメインの記述
- 必要であれば
application(_:continue:restorationHandler:)
でハンドリング
- Associated Domains の有効化
です。
ちょっと迷うのが apple-app-site-association の設置でしょうか🤔
設置自体は何でもないのですが、content-type
を application/json
に設定してあげる必要があります。
Nginx とかであれば server の記述でもしてあげりゃいいのでしょうけど。。
firebase.json で対応します
Firebase Hosting をつかっているということは、その設定ファイルで firebase.json っていうのがいるはずなので、
そちらで記述することで対応が可能になります
{
"hosting": {
"public": "build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "/",
"destination": "/index.html"
}
],
"headers": [
{
"source": "/.well-known/apple-app-site-association",
"headers": [{"key": "Content-Type", "value": "application/json"}]
}
]
}
}
こういう感じで headers に追加してあげれば ok です!
これでシームレスにアプリとリンクできますね!!💪
補足
application(_:continue:restorationHandler:)
でハンドリングして URL をみて振る舞いをかえることができるのですが、
ここで return false
と false を返してもアプリ自体は起動するので、
false 返すとアプリ起動しないだろうな〜とかって僕みたいに思い込んでいた人は気をつけてください(笑)
(ぶっちゃけ UniversalLinks で起動された場合に返すものがtrueとfalseで何か挙動かわるのかわからん)