🖇️

ディープリンクとカスタムURLとユニバーサルリンク

2023/08/10に公開

ディープリンク、カスタムURL、ユニバーサルリンクなど用語の使い分けがわからなかったのでまとめです。

ディープリンクとは、ユーザーをアプリの特定の場所やページに直接導くリンクのことを指します。具体的には、ウェブページや他のアプリから、モバイルアプリの特定の画面や機能にダイレクトにアクセスするためのリンクです。

たとえばスマホだと下記のような挙動です。

  • ブラウザ(Chromeなど)でTwitterのAさんのプロフィールをタップすると、TwitterアプリのAさんの画面に遷移
  • お買い物アプリでPayPayの決済ボタンをタップすると、PayPayアプリの決済画面に遷移

ディープリンクを実現するための技術についてはいくつか手法があります。

Custom URL Scheme(カスタムURLスキーム)

アプリ独自のURLスキーム(URLの先頭の部分httpftp など)を使用して、そのアプリを直接起動するリンク。これは初期のディープリンク手法であり、リンクをタップするとアプリが直接開かれます。下記は一例です。

music: (ミュージックアプリの起動)
comgooglemaps:(Google Mapsの起動)

カスタム URL スキームをサポートするには

  1. アプリの URL の形式を定義
  2. システムが適切な URL をアプリに送信できるようにスキームを登録
  3. アプリが受け取る URL を処理

注意点①:特定のコンテンツを呼び出すには、該当するアプリのインストールが必要

該当のアプリを持っていない場合は機能しない、あるいはエラーが表示される

注意点②:他のアプリとスキームが競合する可能性がある

競合した場合の挙動

  • Android:アプリをを選択するダイアログが表示
  • iOS(バージョンにより違う):動作が保証されない。ランダムでアプリ起動もしくは、インストールの新しい順に起動

たとえば、FaceBookのURLスキーム はfbです。他のアプリ(アプリAとする)もURLスキーム をfbにしてリリースすると、同じカスタムURLスキームのアプリが、端末内に複数インストールされることになります。すると「FaceBookに遷移すると思ったのに、アプリAに遷移する」といった挙動が起こり得ます。

https://reliphone.jp/same-url-schemes2/

脆弱性に関する記事
https://qiita.com/saten_qiita/items/7d2ea6769bbf1e61b61e
https://www.security-next.com/117859

Appleのドキュメントでは次にまとめるユニバーサルリンクという手法を勧めています。

While custom URL schemes are an acceptable form of deep linking, universal links are strongly recommended. For more information on universal links, see Allowing apps and websites to link to your content.

公式ドキュメント

https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app

ユニバーサルリンク(Universal Links)・アプリリンク(App Links)

「ユニバーサルリンク」は、iOS(Apple)のテクノロジーで、ウェブサイトとモバイルアプリをリンクする方法です。Androidには、類似のテクノロジーとして「アプリリンク」というものがあります。アプリがインストールされていればそのアプリを開きます。インストールされていなければウェブページにリダイレクトします。

注意点①:設定の複雑さ

ユニバーサルリンクを機能させるためには、Webサイトのドメインに関連するファイル(Apple App Site Association File)の正確な設定が必要となる。また、アプリの設定も適切に行う必要があります。

注意点②:古いOSのサポート

ユニバーサルリンクはiOS 9以降でサポートされています。それより古いバージョンのユーザーには、この機能は提供されません。

公式ドキュメント

https://developer.apple.com/documentation/xcode/defining-a-custom-url-scheme-for-your-app
https://developer.android.com/studio/write/app-link-indexing?hl=ja

参考資料

https://speakerdeck.com/ninjinkun/deipurinkufalse-she-ji-toshi-zhuang-iosdc2017

https://speakerdeck.com/natmark/iosdc-japan-2022-deeplink

Discussion