リンクの種類(Deep/Web/App Links)と違い

投稿日:  更新日:

コンピュータの世界で「リンク」というと、次の2つが頭に浮かびます。

  • ウェッブページのハイパーテキスト
  • ファイルシステムのファイル(ディレクトリ)リンク

しかし、携帯端末で稼働するモバイルアプリでは、また別の意味を持ちます。

モバイルアプリの「リンク」とは「アプリから同一端末内の他アプリを呼び出すこと」です。

3つの種類に分類されているので、違いと特徴をここに整理します。

スポンサーリンク

モバイルアプリのリンク

携帯端末で稼働するモバイルアプリにおいて「リンク」とは、「アプリから同一端末内の他アプリを呼び出すこと」です。

例えば以下は、名刺管理アプリからカメラアプリを呼び出して、顔写真を名刺データへ追加しています。

名刺管理アプリ

特に新しい技術ではなく、Androidは登場した当初から「リンク」の仕組みを持っています。

「アプリコンポーネントの連携」が「リンク」です。
※詳細は「アプリケーションコンポーネント(App component)」を参照

呼び出しは、Intentオブジェクトへ呼び出したいコンポーネントの「Action、Category、Data(URI)」を指定し、システムへ要求すれば、該当のコンポーネントが起動されます。

この「リンク」ですが、3つの種類に分類されています。ただし、種類と言っても全くの別物ではなく、図のような集合関係にあります。

リンクの種類

スポンサーリンク

Deep Links

「Deep Links」は様々なスキームをURIへ指定するリンクです。

スキームの違いで、リンク先のアプリが変わります。

Deep Linksの概要

カスタムSchemeを定義して、ユーザー独自の呼び出しを行うことも可能です。

「Deep」が付く理由は、アプリのトップベージではなく、公開されていればアプリ内の任意のページを呼び出せるためです。

スポンサーリンク

Web Links

「Web Links」は、Deep Linksの中でスキームhttp/httpsをURIへ指定するリンクです。

Web Linksの概要

スキームがhttp/httpsですから、当然、呼び出されるアプリはウェブブラウザ―になります。

スポンサーリンク

リンクのセキュリティ

リンクの問題点は、同じSchemeに対応して複数のアプリが設定できる点です。

例えば、あなたが開発したアプリをhttpsに対応するアプリに出来ます。そのように、AndroidManifest.xmlへインテントフィルターを定義するだけです。

カスタムSchemeであっても同じで、何の制限もありません。

リンクにおいて、同じSchemeに対応して複数のアプリが存在する場合、システムはアプリのリストを提示して、ユーザーに利用するアプリの選択(アプリチューザー)を求めます。

アプリチューザー

この時、「悪意のあるアプリ」や「セキュリティの低いアプリ」を選択してしまうと、リンクのセキュリティは崩壊します。

 リンクの傍受 

リンクの傍受

 悪意のあるサイトへ誘導 

悪意のあるサイトへ誘導

 リンクの乗っ取り 

リンクの乗っ取り

スポンサーリンク

App Links

「App Links(正式にはAndroid App Links)」は、Web Linksの中でアプリとWebサイトの所有者が同じ場合に、実行するすことが可能なリンクです。

「同じである?」の検証結果が偽ならば、実行できません。

また、Webサイトへ接続するアプリが一意に定まる(Webサイトがアプリを指定する)ので、アプリチューザーが開くことはありません。リンクを行うと直ちに目的のアプリが呼び出されます。

App Linksの概要

このような条件を設けることにより、リンクのセキュリティの崩壊が回避できます。

ですので、Web Linksを行う場合は、App Linksにすることが推奨されています。

スポンサーリンク

関連記事:

アプリを構成する最上位の構成要素がアプリケーションコンポーネント(App component)です。 アプリケーションコンポーネントの概要をまとめます。 ...
「インテントの解決」はシステム内でアプリケーションコンポーネントを選択する処理のことです。 この選択する処理の流れが複雑で、ちょっと癖がありあます。 ここでは「インテントの解決」の処理の流れについてまとめます。 ...
アプリを構成する最上位の構成要素がアプリケーションコンポーネント(App component)です。 Activityはアプリケーションコンポーネントの1つです。アプリケーションの画面と処理を構築します。 Activityについてまとめます。 ...
アプリを構成する最上位の構成要素がアプリケーションコンポーネント(App component)です。 Content Providerはアプリケーションコンポーネントの1つです。アプリケーションが管理するデータを公開(共有)します。 Content Providerについてまとめます。 ...
アプリケーションコンポーネントの連携は、容易にアプリの機能を拡充できる、優れた仕組みです。 このコンポーネントの連携でYouTube動画を再生する場合、インテントの解決に癖があり、少々難解です。 ですので、後々、困らないように、ここへまとめます。 ※環境:Android Studio Meerkat | 2024.3.1 Patch 1     Kotlin 2.0.0 ...
スポンサーリンク