34
25

More than 5 years have passed since last update.

URL Scheme と Universal Links の比較

Posted at

今更ですが、 Deeplink を実装するにあたり 2 つの方法について調べたので、せっかくなのでまとめてみます

  • 2018/7/20 現在
  • Xcode 9.4.1
  • iOS 11.4.1

概要

URL Scheme

  • 任意の scheme へのリクエストがあると対応するアプリを起動してくれる
  • scheme → 一般的な URL の先頭にある httphttps の部分

Universal Links

  • 任意のドメイン(のパスまで設定可能)へのリクエストがあると対応するアプリを起動してくれる
  • サーバーに設定ファイル( apple-app-site-association )を配置する
    • 配置先はドメインの root 直下、もしくは {root}/.well-known/ の中
    • Android は .well-known の中なので、こっちがおすすめかも
  • アプリがその設定ファイルを SSL で読みに来る

比較

URL Scheme Universal Links
サーバー側の対応 対応する scheme のリンクを張る 設定ファイルを配置する
アプリ側の対応 [TARGETS]-[Info]-[URL Types] に対応する scheme を設定する [TARGETS]-[Capabilities]-[Associated Domains] に対応するドメインを設定する
アプリ起動時 起動確認ダイアログが出る(ユーザーが1アクション必要) シームレスに起動する
アプリ未インストール時 ページを開けません とダイアログが表示される ・リンク先URLがブラウザで表示される
・表示されたページに App Store へのリンクを表示してくれる
アプリ起動後の処理 AppDelegateapplication:openURL:options: に書く AppDelegateapplication:continueUserActivity:restorationHandler: に書く
リダイレクトした時の動作 アプリを起動しようとする ブラウザで対象URLを開く
その他注意点 scheme は自由に設定できるので、他のアプリと被る可能性がゼロではない ・同一ドメイン内の遷移ではアプリは起動しない(ブラウザ内で遷移する)のでSSL対応の別ドメインを用意する必要があるかも(サブドメインでも可)
・ユーザーがリンクタップ時の動作をブラウザで開くように変更できてしまう

雑感

  • Universal Links の方がシームレスに起動する分魅力的
  • 一方でユーザーがブラウザで開く動作を選択した場合に対象の Web ページが無いと困る
  • 両方設定しておいて Web ページで URL Scheme でのリダイレクトをすればいい?(未確認)
  • URLscheme タグと URLスキーム タグ統合したい
  • それぞれの詳細については各自で調査、確認をお願いします:bow_tone1:
  • 事実と違う箇所があればツッコミお待ちしています
34
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
25