目的

「LINEBOT くんのメッセージをタップしたらアプリに飛ぶようにしてほしい!」

という要件を貰ったけど、
そのあたり全く初見だったので調べてまとめてみました。

ディープリンクとは

任意のアプリに遷移できるリンク(URL)のことです。
アプリに遷移できるだけでなく、更にその中の特定の画面を指定して遷移することができます。

スマホでTwitterやYoutubeのリンクをタップした時に、アプリが立ち上がって見たかった投稿や動画を開いてくれることってありますよね? あの仕組みのことです。

プラットフォームごとのディープリンク対応

プラットフォーム種類対応URL
AndroidApp linksAndroid6.0 以降WebURL
AndroidApp IndexingAndroidWebURL
Appleuniversal linksiOS9 以降WebURL
どちらもCustom URL SchemeiOS,Androidカスタム URL

Android(Google)

App Linksはオープンソースのアプリ連携サービスです。Facebookが提供しています。
https:// から始まる URL を利用できます。

メリット

  • WebURL から直接アプリを起動できる
  • Android 特有のアプリ選択画面を飛ばせる

デメリット

  • 認証情報ファイルを https 通信可能なサーバに上げておく必要がある
  • android 6.0(2015 年 10 月リリース)以降しか対応していない

設定方法

下記が参考になりました。
App Linksに対応してみた - Qiita

App Indexing

App Indexingは、その名の通りアプリのコンテンツをインデックスして、Google検索の結果からアプリに直接遷移することができるサービスです。Googleが提供しています。

参考になった記事: AppIndexing について - Qiita

iOS(Apple)

universal linksは、iOS9から使用できるサービスです。
https:// から始まる URL を利用できます。
例:LINE(https://line.me/R/)

  • アプリが端末に入っていない場合の挙動を設定できる(Store に飛ばす等)
  • WebURL から直接アプリを起動できる
  • 認証情報ファイルを https 通信可能なサーバに上げておく必要がある
  • iOS9(2015 年 9 月リリース)以降でしか使えない

こちらが参考になりました。
Universal Links を試してみました。関連づけファイル(apple-app-site-association)は S3 に置きました。 | Developers.IO

共通

Custom URL Scheme

amzn://apps/android?asin=B004FRX0MYcomgooglemaps:// など、アプリ独自に決めた scheme を利用する方法です。

メリット(Custom URL Scheme)

  • iOS8 以前,android 6.0 以前でも動く

デメリット(Custom URL Scheme)

  • アプリがインストールされていない場合に動作しない
  • 他のアプリと競合する可能性がある

設定方法(iOS)

2種類の実装方法があるけど内容は同じです。

  1. info.plistから設定する
  2. TARGET > infoから設定する

Safariから固定 URL(my-app://など)を叩けばアプリを起動できます。

まとめ

今から実装するとなったらApp Linksuniversal linksが良さげだなと思いました。

どちらもWebURLから直接アプリを起動できるので、LINEのメッセージ上から遷移が可能です。

参考

途中に載せさせて頂いてるサイトも大変参考になりました……ありがとうございます……

真面目に Deep Link 対応したい話 - Qiita
iOS/Android のディープリンクについての雑な説明 - Qiita