1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

クリエーションラインAdvent Calendar 2024

Day 18

Flutter アプリでの Universal links 対応まとめ

Posted at

Flutter アプリで Universal links 対応をしたときに色々ハマったので、確認方法などをまとめておきます。

iOS アプリの設定

Xcode 上で Universal links で iOS アプリを起動するために必要な設定を追加します。

Set up universal links for iOS - Adjust iOS build settings (Flutter 公式ドキュメント)

  • info.plist に FlutterDeepLinkingEnabled 設定を追加
  • Signing & Capabilities に Associated Domains 設定を追加

Associated Domains の Domains 設定で applinks: を書き忘れるとアプリが起動しません (一度書き忘れてハマりました)。

apple-app-site-association ファイル

サーバーに配置する Universal links 設定ファイルが必要になります。
ファイル名は必ず apple-app-site-association です。拡張子は必要ありません。

シンプルな例では、次のような書き方になります:

  • App ID Prefix (Team ID) : ABCDE12345
  • Bundle ID : com.example.app
{
  "applinks": {
    "details": [
      {
        "appIDs": [
          "ABCDE12345.com.example.app"
        ],
        "components": [
          {
            "/": "/*"
          }
        ]
      }
    ]
  }
}

Universal links でアプリが起動しないときの確認

apple-app-site-association がきちんと配置されている

下記の curl を実行し、apple-app-site-association の内容が返ってくれば大丈夫です。

curl -v https://{ドメイン}/.well-known/apple-app-site-association

ドメインは apple-app-site-association ファイルを配置しているサーバーのドメインを指定します。

Apple CDN に apple-app-site-association の情報がキャッシュされている

下記の curl を実行し、status code 200 で apple-app-site-association の内容が返ってくればキャッシュされています。

curl -v https://app-site-association.cdn-apple.com/a/v1/{ドメイン}

ドメインは apple-app-site-association ファイルを配置しているサーバーのドメインを指定します。

Apple Developer サイトに Associated Domain 設定が反映されている

https://developer.apple.com/account/resources/identifiers/list

Apple Developer サイト内の上記ページにアクセスし、リストから該当の Bundle ID を選択すると、どの Capability が有効になっているか確認できます。

apple-developer-capabilities.png

コマンドでアプリ起動を試す

下記コマンドで Universal links を指定して実行すると、設定などがうまくいっていれば iOS アプリが起動します。

xcrun simctl openurl booted {Universal links URL}

Universal links 呼び出し側が未実装でも動作確認ができます。

アプリをアンインストールしてから再インストールする

設定変更を行なったあとにアプリを入れ直す場合は、アンインストールしてから再インストールをしました。

アプリ起動時のログ確認

アプリで問題が起きていないかを確認するため、下記コマンドでアプリのログを確認をするということもやりました。

xcrun simctl spawn booted log stream --level debug --style compact --predicate 'process == "Runner"' | grep "Flutter"

Console.app でもログの確認ができます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?