こんにちは、id:numanuma08です。iOS9以降よりサポートされているUniversal Linksについて調査を行ったのでまとめて共有をします。
Universal Linksとは
ユーザーがWebサイトへのリンクをタップしたときにSafariやChromeなどのブラウザではなく、アプリを直接開く仕組みです。似た機能としてcustom URL schemesがありますが、いくつかの点でcustome URL schemesより便利です。詳しくは公式のリファレンスを参照してください。
Universal Linksが使えないパターン
次のパターンではUniversal Linksを利用できません。
同一ドメイン内でのページ遷移
ブラウザアプリでhttps://my-domain.com/page/a
からhttps://my-domain.com/page/b
へ遷移するとき、apple-app-site-association
のpath
に/page/b
が含まれていてもUniversal Linksは機能しません。
ブラウザのアドレスバーにURLを入力する
アドレスバーにURLを入力してもUniversal Linksは発動しません。開発中にこれをやりがちなので、注意が必要です。
開発中に注意をしたいこと
Universal Links関連機能開発中に注意をしたことをまとめました。
apple-app-site-associationを取得するタイミング
運用に関わってくる部分かもしれないですが、apple-app-site-associationをサーバーから取得するタイミングは以下のとおりです。
- アプリを初めて起動したとき
- アプリのアップデートが行われたとき
apple-app-site-associationをサーバーの更新しても再取得は行われません。開発中でもアプリの再インストールが必要です。また、運用段階でもこの点は注意が必要です。サーバー上のapple-app-site-assocationをアップデートするときには更新版アプリの配信が必要です。
Universal Linksを発動させる方法
アドレスバーにURLを入力してもUniversal Linksは発動しないため、デバッグ中はちょっと工夫を行います。今回私はmac用アプリのRocketSimを使いました。
RocketSimはiOS Simulatorの操作を色々とサポートするアプリで、Universal Links関連としては次の機能があります。
- macのクリップボード上のURLを開く機能
- 事前に定義したURLのセットを開く機能
クリップボードのURLを開く機能
これはそのままですね。クリップボードに開きたいURLをコピーしておけば、RocketSimのメニューから開けます。
事前に定義したURLのセットを開く機能
RocketSim上で設定したURLのリストをメニューより開けます。この画面のようにURLのリストをセットしておくと、メニューから選んで開くことができます。URLのリストはjson形式で入出力が可能なので、チームで共有も可能です。
ちなみに、RocketSimはiOS Simulator用の機能となるので実際のデバイスで利用できません。実際のデバイスでUniversal Linksを開くときは、開きたいURLのリンクをメモ帳アプリなどで作って開くと良いでしょう。