Flutter: iOSでの「universal links」対応

Flutter: iOSでの「universal links」対応

最近、私たちのアプリTaleMeにディープリンク機能を導入しました。

ディープリンクは、アプリがユーザーの端末にインストールされている場合に、そのアプリの特定のページへユーザーをリダイレクトするリンクです。

Flutterとそのドキュメントを使えば、導入方法はすぐに分かります。しかし、いくつかの失敗と時間の無駄を経験したので、時間を節約できるようにここにチェックリストを用意しました。

1/ ios/Runner/Info.plist ファイルに正しい設定が追加されているか確認する

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  ...
  <key>FlutterDeepLinkingEnabled</key>
  <true/>
  ...
</dict>
</plist>

2/ ios/Runner/Runner.entitlements ファイルに正しい設定が追加されているか確認する

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>com.apple.developer.associated-domains</key>
  <array>
    <string>applinks:monsite.com</string>
  </array>
</dict>
</plist>

⚠ ここで対象となるのは monsite.com ドメイン本体であり、そのサブドメインではありません。複数のドメインがある場合は配列に追加するか、ワイルドカード applinks:*.monsite.com を使用できます。

3/ apple-site-association ファイルを追加する

a) 最新のフォーマットを遵守すること!apple-site-association には複数のフォーマットが存在し、混乱しやすいです。Appleの公式ドキュメントからコピー&ペーストすることをお勧めします。StackOverflow等からではなく。

b) ファイルを正しい場所に配置すること:次のアドレスでアクセス可能でなければなりません:https://monsite.com/.well-known/apple-app-site-association。 以前はサイトのルートに置くことが可能だったようですが、Appleのドキュメントでは現在は言及されていません…注意してください。

c) ファイルはHTTPSでアクセス可能で、パスワード保護されていてはいけません。MIMEタイプは application/json を返す必要があります。リダイレクトも不可です。

4/ apple-site-association ファイルが正しくアクセス可能で、AppleのCDNに反映されているか確認する

通常、AppleのCDNは情報を12〜24時間の間隔で更新します(ただしもっと長くかかる場合があります)。

次のサービスを利用できます:

ファイルが正しくアクセス可能か確認するためのコマンドもいくつかあります:

  sudo swcutil dl -d monsite.com

5/ ディープリンクをテストする

以下のコマンドでディープリンクが正しく動作するか確認できます:

  swcutil verify -d monsite.com -j ./path/to/apple-app-site-association [-u <URL>]

アプリをテストする場合はシミュレーターを使い、ターミナルで次のコマンドを実行します:

  xcrun simctl openurl booted https://monsite.com/

オプション -u は、マッチング用にテストするURLを指定するためのもので、アプリにリダイレクトされるべきURLをフィルタリングする場合に使用します。

AppleのCDNは情報の更新に時間がかかることがある点、またアプリが端末にインストールされていない場合はディープリンクが機能しないことを覚えておいてください。

また、ios/Runner/Runner.entitlements ファイルを変更してAppleのCDNを回避することもできます:

applinks:monsite.com -> applinks:monsite.com?mode=developer

私の環境ではうまくいきませんでしたが、役に立つ場合もあります。 アプリを公開する前に必ず開発者モードを解除する必要があります。

以上です!この記事が役に立ったことを願っています。 Androidについては手順がかなり異なるので、別の記事で取り上げます。

タグ

  • フラッター

  • ios

  • アンドロイド

  • ユニバーサルリンク

  • ディープリンク

この記事は

コメント

読み込み中...

Flutter: iOSでの「universal links」対応 | DEMILY Clément