Introduction

全く同一のコードからビルドしたのに掲題のような事象が先方で発生。

deeplink)

iOS のバージョンや端末の違いから切り分けを行ったところ…

原因は Flutter のバージョンであることが判明。

何故?

How to resolve?

Flutter の 3.27 から Universal Link に関するデフォルトの設定が変更になった。

Flutter の公式サイトの Adjust iOS build settings にて下記の記述がある。

Version note
If you use a Flutter version earlier than 3.27, you need to manually opt in to deep linking by adding the key and value pair FlutterDeepLinkingEnabled and YES to info.Plist.
Note
If you’re using third-party plugins to handle deep links, such as app_links, Flutter’s default deeplink handler will break these plugins.
If you use a third-party plugin, add the key and value pair FlutterDeepLinkingEnabled and NO to info.Plist.

FlutterDeepLinkingEnabled という info.Plist に記載する値のデフォルト値が 3.27 から YES に変更されたので、app_links のようなサードパーティの Universal Link を使用するパッケージを使う場合は明示的に FlutterDeepLinkingEnabled に対して NO を設定しなさい、という記述だ。

具体的には ios/Runner/Info.plist を下記のようにする。

1
2
3
4
5
6
7
8
9
  <?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>
+ <false/>
</dict>
</plist>

修正後は意図した結果になる。

deeplink_fix)