iOS 9 が登場するまでは、モバイル Web サイトとネイティブ iPhone アプリケーション間の移動は、予測不可能でぎこちないエクスペリエンスでした。 開発者は、instagram:// や mybank:// などのカスタム URI プロトコルに依存していました。 これらのスキームは、「アプリで開きますか?」という不快なシステム アラートを頻繁にトリガーし、アプリが見つからない場合は完全に機能しなくなり、深刻なセキュリティ脆弱性を抱えていました。 これらの根本的な欠陥を解決するために、Apple はユニバーサル リンクを発表しました。 しかしユニバーサル リンクとは何ですか?また、なぜそれがモバイル ソフトウェア アーキテクチャを変革したのでしょうか?

ユニバーサル リンクの核心は、インストールされている iOS アプリ内の特定のビュー コントローラーにシームレスにルーティングする標準の安全な HTTPS Web URL です。 アプリがインストールされている場合、iOS は Safari を開かなくても即座にアプリを起動します。 アプリが見つからない場合、オペレーティング システムは、エラー ダイアログを表示せずに、応答性の高い Web ページを Safari に正常に読み込みます。 この技術的な詳細では、Apple Universal Links の内部動作を調べ、AASA 設定ファイルを調査し、最新のモバイル ルーティングがこのプロトコルに依存する理由を説明します。

ユニバーサル リンクを理解することは、電子メール キャンペーン、ソーシャル プラットフォーム、検索エンジンの結果からスムーズなカスタマー ジャーニーを実現しようとしている iOS エンジニアやデジタル マーケティング担当者にとって非常に重要です。

Apple Universal Links が iOS Web リクエストをネイティブ モバイル アプリケーションに直接ルーティングする方法を示す図
Apple Universal Links は、ドメインの関連付けを検証して、インストールされているアプリを直接起動すると同時に、Safari へのシームレスなフォールバックを提供します。

ユニバーサル リンクの目的を理解するには、従来のカスタム URL スキームの欠点を調べる必要があります。 カスタム スキームには中央レジストリがありませんでした。 モバイル URL スキームに関するガイドで説明されているように、開発者は誰でも paypal:// スキームを主張し、正規のサービスを目的とした機密の財務パラメータを傍受するアプリを構築する可能性があります。 さらに、アプリを持たないユーザーが Safari でカスタム スキームのリンクをクリックした場合、iOS は次のような厳しいシステム エラーを表示しました。「アドレスが無効であるため、Safari はページを開けません。」

Apple は、次の 3 つの重要な運用標準を確立するために Universal Links を設計しました。

  • 独自性とセキュリティ: ユニバーサル リンクは標準の Web ドメイン (例: https://dslink.me/path) を使用するため、検証済みの DNS レコードと SSL 証明書を管理しない限り、他の開発者はリンクを主張できません。
  • スムーズなフォールバック: iPhone ユーザーがアプリをインストールしていない場合、まったく同じ URL で Safari でモバイル ウェブサイトが自動的に開きます。 壊れたリンクやエラー プロンプトはありません。
  • 単一 ID: マーケティング担当者と開発者は、デスクトップ コンピュータ上の Web 訪問者とモバイル デバイス上のネイティブ アプリ ユーザーの両方にサービスを提供する単一の URL を共有するだけで済みます。

この設計により、プロトコル ハンドオフの破損により、アプリではなく Safari でリンクが開くという問題も解決されました。

Apple App Site Association (AASA) のアーキテクチャ

Universal Links の運用基盤は、Apple のオペレーティング システムと Web サーバー間の安全なハンドシェイクです。 このハンドシェイクは、Apple App Site Association (AASA) ファイルによって仲介されます。このファイルは、次の場所でホストされている JSON ドキュメントです。

https://yourdomain.com/.well-known/apple-app-site-association

このファイルは、ドメイン上の特定の URL パスの処理を許可されるアプリケーション ID を定義します。 最新の AASA JSON 形式の例を次に示します。

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAMID1234.com.example.myapp",
        "paths": ["/video/*", "/product/*", "/user/*"],
        "components": [
          {
            "/": "/video/*",
            "comment": "Matches all video detail pages"
          }
        ]
      }
    ]
  }
}

AASA ファイルには、主要な技術的なホスティング ルールが適用されます。

  • 信頼できる SSL 証明書を使用して HTTPS 経由で提供する必要があります。
  • application/json の Content-Type を返す必要があります。
  • HTTP から HTTPS へのリダイレクトを行わずに、HTTP 200 OK ステータス コードを返す必要があります。
  • Apple はこのファイルをコンテンツ配信ネットワーク (CDN) にキャッシュします。 サーバーに加えられた変更がすべての iOS デバイスに反映されるまでに時間がかかる場合があります。

スマートなディープリンクを数秒で作成

不格好なアプリ内ブラウザのログイン画面にモバイル訪問者を奪われないようにしましょう。 DSLink を使用して、リアルタイム分析を備えたクリーンなアプリを開くディープ リンクを生成します。

Open Universal Links vs schemes guide

ユニバーサル リンクとカスタム スキームのアーキテクチャの違いを理解することは、ユニバーサル リンクと URL スキームの比較で説明されているように、開発者が回復力のあるクロスプラットフォーム ルーティング システムを設計するのに役立ちます。

特徴 Appleユニバーサルリンク カスタム URI スキーム
URL形式 標準 HTTPS (https://brand.com) 独自のプロトコル (brand://)
セキュリティと所有権 DNS および AASA JSON 経由で検証済み 未検証。 スキームハイジャックされやすい
フォールバック処理 Safari で Web サイトを正常にロードします 「Safari でページを開けません」エラーが表示される
機敏な行動 プロンプトなしでアプリをすぐに開きます 多くの場合、「アプリで開きますか?」がトリガーされます。 システムダイアログ
アプリ内ブラウザのサポート 多くの場合、ソーシャル Web ビューによって制限されます JavaScript リダイレクト経由でトリガー可能

ユニバーサル リンクはセキュリティとユーザー エクスペリエンスの点で優れていますが、頑固なソーシャル メディアのアプリ内ブラウザに対処する際のバックアップ フォールバックとしてカスタム スキームが依然として頻繁に維持されます。詳細については、アプリ内ブラウザ ナビゲーション に関するガイドで説明します。

iPhone ユーザーが Apple Mail、メッセージ、またはサードパーティ アプリのリンクをタップすると、iOS は正確な決定ワークフローを実行します。

  1. ローカル データベース ルックアップ: iOS は、アプリのインストール中に保存された検証済みドメインのローカル インデックス付きデータベースをチェックします。
  2. パスの評価: ドメインが一致する場合、iOS は URL パスが AASA ドキュメントで定義されたパターンと一致するかどうかを評価します。
  3. ユーザー設定チェック: iOS は、ユーザーが右上のドメインのブレッドクラム ボタンをタップして Safari 設定を切り替えたかどうかをチェックします。
  4. ネイティブ ハンドオフ: すべてのチェックに合格すると、iOS はネイティブ アプリを起動し、クリックされた URL を含む NSUserActivity オブジェクトをアプリケーション デリゲートまたは SwiftUI ライフサイクル ハンドラーに渡します。
  5. Safari フォールバック: アプリが見つからない場合、パスが一致しない場合、またはドメインが未検証の場合、iOS は Safari を起動し、通常どおり Web ページを取得します。

開発者は、対話型のリンク チェッカー ツールを使用してこれらのルーティング遷移をテストし、応答コードとドメイン マッピングを確認できます。

マーケティング キャンペーンと開発者インフラストラクチャ間で完璧なユニバーサル リンク ルーティングを確保するには、以下の実証済みのベスト プラクティスに従ってください。

  • ユニバーサル リンクを標準リダイレクトでラップしないでください。 リンクが関連付けられていないドメイン上の汎用 301/302 リダイレクトを通過すると、iOS はチェーンを切断し、クリックを Safari にルーティングします。 詳細については、ディープリンクと短縮ガイドをご覧ください。
  • ソーシャルアプリ内ブラウザのアカウント: Instagram、TikTok、Facebook などのアプリは、サンドボックス化された Web ビュー内のクリックをキャプチャします。 DSLink を利用したスマート ディープ リンクを使用して、Webview を検出し、インテント ハンドシェイクをトリガーしてエスケープします。
  • ユニバーサル コンテンツ パスのサポート: ネイティブ モバイル アプリとウェブ サーバーが一貫した URL ルーティング パスを共有していることを確認します (例: /item/123 はウェブとアプリの両方で同じ製品にルーティングします)。
  • AASA 構文を継続的に検証する: Apple の App Search API 検証ツールを使用して、AASA ファイルが有効で破損しておらず、サーバーの展開後に適切にフォーマットされていることを確認します。

Apple Universal Links をマスターし、マルチプラットフォームのスマート ルーティングと組み合わせることで、ユーザーがネイティブ ソフトウェアに没頭できるスムーズなモバイル エクスペリエンスを提供できます。

よくある質問

iOS のユニバーサル リンクとは何ですか?

ユニバーサル リンクは、インストールされているアプリに関連付けられているものとして Apple iOS が認識する標準の HTTPS Web アドレスで、オペレーティング システムが Safari をロードする代わりにネイティブ アプリを直接開くことができるようにします。

Apple はアプリがドメインを所有していることをどのように確認しますか?

Apple は、Web ドメインでホストされている apple-app-site-association (AASA) JSON ファイルを通じて所有権を確認します。 iOS は、アプリのインストール時にこのファイルをダウンロードして、アプリ ID とパスが一致することを確認します。

ユーザーがユニバーサル リンクをクリックしたが、アプリがインストールされていない場合はどうなりますか?

アプリがインストールされていない場合、iOS は、エラー プロンプト、警告ダイアログ、破損した画面を表示することなく、目的の Web ページを Safari にシームレスに読み込みます。

ユニバーサル リンクは Android デバイスでも使用できますか?

いいえ、ユニバーサル リンクは Apple 固有の iOS および iPadOS 標準です。 Android は、Android App Links と呼ばれる同等のテクノロジーを使用しており、デジタル アセット リンクの検証に依存しています。