Universal Linksについて調査をしたことのまとめ

こんにちは、id:numanuma08です。iOS9以降よりサポートされているUniversal Linksについて調査を行ったのでまとめて共有をします。

Universal Linksとは

ユーザーがWebサイトへのリンクをタップしたときにSafariやChromeなどのブラウザではなく、アプリを直接開く仕組みです。似た機能としてcustom URL schemesがありますが、いくつかの点でcustome URL schemesより便利です。詳しくは公式のリファレンスを参照してください。

developer.apple.com

Universal Linksが使えないパターン

次のパターンではUniversal Linksを利用できません。

同一ドメイン内でのページ遷移

ブラウザアプリでhttps://my-domain.com/page/aからhttps://my-domain.com/page/bへ遷移するとき、apple-app-site-associationpath/page/bが含まれていてもUniversal Linksは機能しません。

ブラウザのアドレスバーにURLを入力する

アドレスバーにURLを入力してもUniversal Linksは発動しません。開発中にこれをやりがちなので、注意が必要です。

開発中に注意をしたいこと

Universal Links関連機能開発中に注意をしたことをまとめました。

apple-app-site-associationを取得するタイミング

運用に関わってくる部分かもしれないですが、apple-app-site-associationをサーバーから取得するタイミングは以下のとおりです。

  1. アプリを初めて起動したとき
  2. アプリのアップデートが行われたとき

apple-app-site-associationをサーバーの更新しても再取得は行われません。開発中でもアプリの再インストールが必要です。また、運用段階でもこの点は注意が必要です。サーバー上のapple-app-site-assocationをアップデートするときには更新版アプリの配信が必要です。

Universal Linksを発動させる方法

アドレスバーにURLを入力してもUniversal Linksは発動しないため、デバッグ中はちょっと工夫を行います。今回私はmac用アプリのRocketSimを使いました。

www.rocketsim.app

RocketSimはiOS Simulatorの操作を色々とサポートするアプリで、Universal Links関連としては次の機能があります。

  • macのクリップボード上のURLを開く機能
  • 事前に定義したURLのセットを開く機能

クリップボードのURLを開く機能

これはそのままですね。クリップボードに開きたいURLをコピーしておけば、RocketSimのメニューから開けます。

f:id:numanuma08:20201120114658p:plain
Open ... からページを開ける

事前に定義したURLのセットを開く機能

RocketSim上で設定したURLのリストをメニューより開けます。この画面のようにURLのリストをセットしておくと、メニューから選んで開くことができます。URLのリストはjson形式で入出力が可能なので、チームで共有も可能です。

f:id:numanuma08:20201120114729p:plain
URLリストの定義が可能
f:id:numanuma08:20201120114750p:plain
メニューに表示されるリストから開ける

ちなみに、RocketSimはiOS Simulator用の機能となるので実際のデバイスで利用できません。実際のデバイスでUniversal Linksを開くときは、開きたいURLのリンクをメモ帳アプリなどで作って開くと良いでしょう。