LoginSignup
46
27

More than 1 year has passed since last update.

【iOS】Universal Links実装時にハマったこと

Last updated at Posted at 2021-07-11

Universal Linksを実装した際にいくつかハマったことがあったので、覚書として残しておきます。

【おさらい】 Universal Linksとは

  • iOS9〜利用可能
  • 通常のWeb URL経由でアプリを起動できる
    • アプリがインストール済み →アプリが起動する
    • アプリが未インストール →Webページが開く
  • Custom URL Schemeとは違って、test-app://のような起動用URLは不要
  • 「アプリを開きますか?」などのポップアップは表示されず、シームレスにアプリに遷移する

参考: URLスキーム・独自ディープリンク実装に代わる、Universal Links(iOS 9で導入)でより良いUXを実現 - Qiita
参考: iOS ディープリンク(Custom URL Scheme)でアプリを起動する | DevelopersIO

ハマりポイント

1. apple-app-site-associationファイルが反映されるタイミング(リリース版)

Universal Linksの仕組みは「Associated Domainsで設定したドメインのapple-app-site-associationファイルが、アプリの初回起動時にダウンロードされ、ファイルに記載のあるパスのみ、タップ時にアプリに遷移するようになる」というものです。
では、その後apple-app-site-associationファイルの内容に変更を加えた場合、反映されるのはいつでしょうか?

apple-app-site-association caching? | Apple Developer Forums
Universal Link not working on TestFlight | Apple Developer Forums
上記のサイトによると「アプリのインストール時・更新時に、アプリ側でapple-app-site-associationファイルがフェッチされる。その後、数日間に1回程度継続して取得される」そうです。
なお、これはAppStoreからリリース版アプリをインストールした場合のことであり、TestFlight版アプリの場合は少し事情が異なります(後述)。

アプリインストール済みのユーザーにすぐに変更を届けたい場合、アプリのアップデートや再インストールをしてもらうのが確実かもしれません。

2. apple-app-site-associationファイルが反映されるタイミング(TestFlight版)

apple-app-site-associationファイルを書き換えたので、TestFlightを配布して検証したい」なんてことがあると思います。

Universal Link not working on TestFlight | Apple Developer Forums
上記サイトにあるように、TestFlight版アプリでapple-app-site-associationファイルがフェッチされるまでには、インストール後15分〜2時間程度かかります

インストールしたからと言ってすぐにはすぐには反映されないので、お茶でも淹れて気長に待ちましょう:tea:

3. apple-app-site-associationファイルのpathsの優先度

とあるサイトの全てのページをUniversal Links対応させたい場合、apple-app-site-associationファイルのpathsは以下のようになります。

"paths": ["*"]

しかし、そのサイトの中で/hoge/にだけは遷移させたくない場合、どの位置に記述したらいいでしょうか?
paths上に書いてある条件が優先されるため、以下のようにする必要があります。

正しい
"paths": ["NOT /hoge/", "*"]

以下だと"*"が優先されてしまい、除外が効かないので注意です。

正しくない!!
"paths": ["*", "NOT /hoge/"]

参考: apple-app-site-associationのpaths(遷移対象パス)の作り方(UniversalLinks対応) - Qiita

4. 同一ドメイン上のUniversal Linksの有効性

https://hoge.comというWebサイトがあり、https://hoge.comをUniversal Linksの対象パスに設定した場合、サイト上からアプリへの遷移はできません。

参考: Swift 同一ドメインでのユニバーサルリンク(Universal Links)は動作しないので注意 - Qiita

5. SNS上のUniversal Linksの有効性

一部のSNSアプリに投稿されたURLは、タップしてもアプリへの遷移ができませんでした

  • LINE App →タップしてもLINE内のWebViewが開くだけ :heavy_multiplication_x:
  • Facebook Messenger App →タップしてもMessenger内のWebViewが開くだけ :heavy_multiplication_x:
  • Apple純正のメッセージApp →タップすると正常にアプリが起動した :o:
46
27
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
46
27