2020.10.13

iOS14 におけるUniversal Links の変更点

Pocket

こんにちは。次世代システム研究室のT.M です。

はじめに

先日、iOS14 がリリースがされました。かなり急なスケジュールであったため、各所で混乱があったように見受けられます。私が開発しているアプリでも、iOS14 で一部表示崩れが発生するなどの問題が生じました。主だった問題は様々な方が修正方法をまとめているので割愛するとして、本稿では日本語の解説記事が見当たらなかったUniversal Links の変更点について解説します。

Universal Links とは

Universal Links とは、web からアプリへシームレスに遷移するためのリンクのことです。細かい設定方法については本稿では割愛し、大まかな仕組みについて説明します。

アプリにはassociated domains という形でUniversal Links で繋がるweb のドメインが設定されています。

一方、web にはapple-app-site-association というjson ファイルが配置されて、Universal Links で繋がるアプリが設定されています。
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "XXXXXXXXXX.com.example.sampleapp",
        "paths": [
          "*"
        ]
      }
    ]
  }
}
アプリとweb で双方向に関連付いていることで、iOS は信頼してアプリへ遷移させることができます。

iOS14 での変更点

iOS14 より前では、アプリがインストール時に、associated domains に登録されているドメインのwebサーバからapple-app-site-association を直接取得していました。

しかし、iOS14 からは、Apple が用意したCDN サーバからapple-app-site-association を取得するようになりました。これのメリットとしては、以前はweb サーバが落ちていたとき、取得することができませんでしたが、高可用なCDN サーバなので取得することができない、ということが限りなく起こらないようになります。また、web サーバへの負荷が小さくなります。

問題点

通常の運用では、CDN 経由であっても問題が発生するとは考えていません。ただ、開発環境において、問題が発生することが考えられます。

開発環境では、開発中の機能を外部に公開したくない、などの理由によりIP 制限などをしていることが多いかと思います。そのため、CDN がweb サーバからapple-app-site-association を取得することができなくなり、アプリもまたCDN からapple-app-site-association を取得することができなくなります。その結果、Universal Links が機能しない、という問題が発生します。

解決方法

この問題の解決するためには、apple-app-site-association を公開するようにIP 制限の設定を変更すれば良いです。apple-app-site-association をApple にだけ公開するということができれば良いのですが、リクエスト元のApple のIP がわからないので、全てのIP から許可する必要があるかと考えます。

最後に

iOS14 におけるUniversal Links の変更点について説明しました。また、その変更により起きる可能性のある問題点について紹介しました。今後もバージョンアップのたびに、大小様々な問題が起こるかと思いますので、適切に情報を収集して対応していく必要があると感じました。

参考

https://developer.apple.com/videos/play/wwdc2020/10098/

 

次世代システム研究室では、グループ全体のインテグレーションを支援してくれるアーキテクトを募集しています。インフラ設計、構築経験者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ募集職種一覧からご応募をお願いします。

皆さんのご応募をお待ちしています。

Pocket

関連記事