URLの「scheme」がhttps以外になる
通常のWeb URLは https:// から始まります。カスタムURLスキームではアプリ独自のschemeを登録し、OSがそのschemeを処理できるアプリへURLを渡します。
Spotifyの spotify:、Slackの slack:// のように公式に公開されたschemeもあります。一方、第三者サービスのschemeは現在仕様を必ず一次情報で確認する必要があります。
自社アプリで作る基本の流れ
Appleの公式資料は、custom URL scheme対応を大きく3段階で説明しています。
- URL形式を定義する:どのpathやqueryを受け付け、何を開くのかを先に決めます。
- schemeをアプリへ登録する:OSがそのschemeをアプリへ渡せるよう設定します。
- 受信URLを処理する:受け取ったpath/queryを検証し、対応画面や処理へ安全にルーティングします。
「schemeを登録したら完成」ではありません。外部から任意URLを渡される前提で、想定外のpath・壊れたquery・危険な操作を拒否する処理も必要です。
メリット
- 特定のアプリ画面へ直接渡せる。
- HTTPドメインとの関連付けを用意しなくても使える場面がある。
- アプリ間連携やネイティブ機能呼び出しに利用できる。
デメリットと制約
Appleはcustom URL schemeを許容しつつ、Universal Linksを強く推奨しています。schemeはWebドメイン所有のように一意検証されず、複数アプリが同じschemeを登録する可能性があります。
また、対象アプリがインストールされていない場合、custom schemeだけでは通常のWebページへ自然にfallbackできないことがあります。一般公開するリンクでは、元のHTTPS URLや別のfallback導線を残す設計が重要です。
Universal Links / App Linksとの違い
| 方式 | URL | 関連付け | 未導入時 |
|---|---|---|---|
| Custom URL scheme | myapp://... | アプリがschemeを登録。ドメイン所有との検証はない | 別途fallback設計が必要 |
| Universal Links | HTTPS | AASA/Associated Domains | 同じWeb URLへ到達できる |
| Android App Links | HTTPS | Digital Asset Links | 同じWeb URLへ到達できる |
自社Webと自社iOSアプリを結ぶならUniversal Links、AndroidならApp Linksも比較してください。
ブラウザからschemeを開く時
ブラウザやSNS内WebViewは、外部schemeを常に同じように処理するとは限りません。ユーザー操作なしの起動を抑制する、外部アプリ起動を確認する、何も起こさないなどの差があります。
対象アプリ未導入時の設計はfallback設計、公開前確認はテスト方法に分けています。
セキュリティで必ず確認すること
Appleはcustom URL schemeをアプリへの攻撃経路になり得ると警告し、URLパラメータの検証、不正形式の拒否、ユーザーデータを危険にさらす操作をリンクだけで実行させないことを案内しています。
詳しくはディープリンクのセキュリティへ分けています。
この製品との関係
現在のディープリンクジェネレーターは、第三者サービスURLを解析してcustom schemeやAndroid Intent候補を組み立てるコードを持ちます。これは自社ドメインへUniversal Links/App Linksを設定するツールとは違います。
使う前のチェック
- 対象アプリがそのschemeを現在サポートしているか。
- URL path/queryの仕様を明確に定義したか。
- 受信パラメータを検証しているか。
- アプリ未導入時のWeb fallbackがあるか。
- iOS/Android/ブラウザ別にテストしたか。
- Universal Links/App Linksを使える用途ではないか。