Linksこんにちは。TunnelでAndroidアプリの開発を担当しています冨永です。RoomClipでは昨年、主要なページを対象にAppIndexingの対応を行いました。これによりWebの検索からシームレスにアプリを開くことができるようになっています。検索結果からだけではなく、RoomClipのページ内に「アプリで見る」等のボタンを配置してアプリを開くということもできるようになりました。AppIndexingはアプリをインストールしていることが前提となっています。Linksを導入したい!と思い、今回実際にリンクを作成して動作を確認してみました。2016で話題となった開発をサポートするモバイルプラットフォームです。Firebaseには、Analyticsを中心に様々な機能があります。」と紹介されています。ストアのページが開きインストールすることができます。それだけでなく、インストール後も開いたURLを取得することができ適切にユーザーの求めるコンテンツを提供することができます。実際に試してみる!それでは、実際にリンクを作成して動かしてみたいと思います。Linksを選択します。パッケージ名やIDが公的に入手可能なアセット/関連ファイルに追加されますがいいですか?と聞かれるので内容を確認して「始める」をクリックします。Linksを確認してください。質問に答えていくことでリンクが作成されます。ディープリンクURLとダイナミックリンク名を設定します。リンク名はコンソール画面での判別用の名前です。ディープリンクURLは、タグページがすでにディープリンクに対応しているのでこちらを使用します。ちなみに、このURLでは西海岸インテリアのタグがついた実例写真一覧が表示されます。2016で見事1位に輝いた2016年主役のインテリアスタイルです。チェックしてみてください!今回はiOSでの動作確認は割愛します。ストアへ遷移するように設定します。カスタムURLやアプリのバージョンで動きを変えることもできるのでサービスに合わせて設定してください。残りの項目では、解析用のパラメータ設定やリンクがシェアされた際のプレビュータイトルなどの指定ができます。必要な場合は設定してください。一通り設定して「ダイナミックリンクを作成」ボタンをクリックするとURLが作成されます。動作を確認それでは、実際にリンクを開いて動作を確認していきたいと思います。以下の2つの場合を確認しました。ストアに公開されているものでディープリンクに対応しています。ストアのページが開きました。ストアでインストール完了後、通常では「開く」と表示される部分が「次へ」となっています。「次へ」をタップするとアプリが起動し、西海岸インテリアの写真一覧が表示されました。アプリをインストールした状態でリンクを開くこちらの場合も適切に西海岸インテリアの写真一覧が表示されました。Linksの関係アプリ側を変更せずに理想的な動作をしてしまいました。Linksの関係を調べてみました。確認には以下のコードを使用しました。ResultCallbackで取得できるディープリンクURLを確認しています。コードは、公式のドキュメントで紹介されているものを使用しています。Firebaseそのものの実装はこちらの公式ドキュメントをご確認ください。タグページのIntentFilterのみ実装しリンクを開く受信したIntentからactionはandroid.intent.action.VIEW、dataは設定したディープリンクURLが取得できました。ResultCallbackでもディープリンクURLを取得できています。通常のディープリンクによる遷移は、actionがIntent.ACTION_VIEWであること、dataがnullでないことの2点の条件に当てはまるかどうかで判定し、dataに格納されているURLを解析して適切な画面を表示しています。Linksのリンクを開きましたが、アプリ側では通常のディープリンクとして処理されていることがわかりました。IntentFilterをすべて削除してリンクを開くIntentFilterをすべて削除してリンクを開いたところ、アプリが起動しトップ画面が表示されました。actionはandroid.intent.action.MAIN、dataは設定したディープリンクURLが取得できました。ResultCallbackでもディープリンクURLを取得できています。IntentFilterを設定していない場合は、通常起動と同じように起動されるようです。Linksに対応したIntentFilterを設定する今回生成したリンクに対応したIntentFilterを設定し、以下の2パターンを確認しました。LinksのIntentFilterのみ設定した場合actionはandroid.intent.action.MAIN、dataは設定したディープリンクURLが取得できました。Linksとタグページの両方のIntentFilterを設定した場合actionはandroid.intent.action.VIEW、dataは設定したディープリンクURLが取得できました。1,2どちらの場合も、ResultCallbackでもディープリンクURLを取得できています。Linksを開いた際の動作まとめどうやら以下のような関係となっているようです。Linksを区別するにはResultCallbackで取得できる値を確認する必要があるが、非同期のため処理を工夫する必要があるIntentFilterを設定していない場合、通常起動と同じ動作をする今回の調査でdataにディープリンクURLが入っていたことが予想外でした。Linksの場合は、dataは空でResultCallbackでURLが取得できてコンテンツを表示するという動きを期待していました。リンクを作成することもできるようです。プログラムで作ることができると様々なページに対応することができます。新規インストールしたユーザーを判別すれば、チュートリアルを表示した上で適切なコンテンツを表示することもできるので理想的な動作になり良いなと思いました。広告で使用することも想定されているようですので、広告内容とリンク先内容の組み合わせを適切に設定することでより満足度の高い体験をしてもらえるのではないかと思いました。Linksをテスト実装してみました。アプリの作り次第では、良くないところとして上げた点もうまく解消できる可能性があります。URLの自動生成やiOSの実装に関してはまたの機会に。Linksこの記事を書いた人:TominagaAndroidエンジニア。