10月 30, 2017
これはAndroidでのディープリンキングに関する技術ガイド(4部構成)のパート3です。以前の投稿では URIスキームとChromeインテントを取り上げましたが、次の投稿ではGoogle Play Referrer.
先頃リリースされたAndroid Marshmallow(6.0)とともに、Androidはアプリを直接開く新しいメカニズムであるアプリリンクを発表しました。この新しいメカニズムには、iOS 9のユニバーサルリンクの機能(通常のHTTP/HTTPSリンクがクリックされた時、対応するアプリがインストールされていればそのアプリがすぐに開く機能)を複製する意図があります。アプリリンクのリダイレクト論理は次のとおりです。
Androidアプリリンクは単に既存のウェブサイトのリンクをアプリリンクに変換する方法でしかありません。その一例がhttps://imbd.com/title/12345。IMDBが自社のウェブサイトをアプリリンク用に適切に設定している場合、IMDBが携帯電話にインストールされていればリンクがクリックされた瞬間にそのサイトが開きます。アプリがインストールされていなければ、ウェブのURLがブラウザで開かれます。
今後数カ月以内に6.0がさらに普及すれば、標準のURLとChromeインテントのメカニズムをバイパスできるかもしれません。当面はその他すべてのメカニズムを通じてサポートを行い、特殊なケースを処理する必要があります。繰り返しになりますが、Androidは極端に断片化しています。
アプリリンキングを使用できるよう自分のサービスを設定するには、次の2つのステップがあります。
これは非常に簡単です。どのウェブサイトがそのサイト自身ではなくあなたのアプリを開くか、Androidに伝える必要があります。
assetlinks.jsonというファイルを次の形式で作成する必要があります。
注:私たちはandroid_appのデフォルト値を変えずにアプリリンクを動作させることができます。
あなたのアプリの署名証明書のSHA256フィンガープリントです。フィンガープリントの生成にはキーツールを使用する必要があります。コマンドラインで、javaホームディレクトリ、binフォルダの順に進みます。そして次のコマンドを実行します。
$ keytool -list -v -keystore my-release-key.keystore
(キーツールを探すには、MacまたはWindowsの例をご覧ください)
最後に、assetlinks.jsonファイルが /.well-known/assetlinks.jsonでホストされている必要があります。私たちは、自社のNode+Expressリンクサーバーを使い、すべてのBranch統合済みアプリ用のものを設定しました。私たちが使用したコードは次のとおりです。
アプリでディープリンクを処理するには、クリック経由で開いたアクティビティでインテントデータ文字列を取得するだけで結構です。この操作は次のように行います。
残念ながら、ここからは文字列解析を行い、アプリを開くようトリガーしたアプリリンクの全文字列を読み取る必要が出てきます。
全員がAndroid 6.0以上を使用しており、ウェブサイトを構築しているのであれば、実際にはこれが最も簡単なメカニズムでしょう。今後数年間には発生しないため、特殊なケースを処理する必要が出てきます。
現時点では、アプリリンクで自分のウェブサイトを有効にすることとともに、アプリリンクがさらに普及するまでURIスキームやChromeインテントに関する既存のディープリンクメカニズムを引き続き活用することをお勧めします。たとえばアプリがインストールされている状態でユーザーがあなたのサイトを開く場合、彼らがあなたのモバイルサイトでボタンをクリックし、アプリを起動する時はChromeインテントやURIスキームをトリガーさせたいとします。アプリリンクはこのシナリオを処理しないようです。
ウェブサイトは持っていないがアプリリンクを活用したいという場合は、Deepviewsはあなたのアプリコンテンツのモバイルウェブプレビューで、私たちが自動的に生成とホストを行います。Deepviewsは、あなたのアプリをインストールしていないユーザーにコンテンツを表示し体験させるうえで格好の代替製品であり、Androidアプリリンクの優れたフォールバックとなります。
Androidのディープリンキングに関する次回のエピソードにご期待ください。