anz blog

HostingでUniversal Links対応する

ざっくりまとめ。

  • Firebase Hosting で Universal Links 対応したい
  • apple-app-site-association をどうするか
  • firebase.json で指定をしてあがたら良い
    • headers に追加をしてあげて content-typeapplication/json にする

です。

環境

  • 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:) でハンドリング

です。

ちょっと迷うのが apple-app-site-association の設置でしょうか🤔
設置自体は何でもないのですが、content-typeapplication/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で何か挙動かわるのかわからん)