FirebaseのコンソールでDynamicLinksを作成する記事はたくさんあるが、APIを使用してDynamicLinksを作成する記事があまりないような気がした。これからDynamicLinksをAPIを使用して作成する人の参考になったら良いなと思う。たくさんの記事があるので「DynamicLinksとは」などという基本情報は割愛する。
使用言語
PHP
こんな想定
iOSやAndroidのアプリを使用したサービスで、クリックしたらアプリの具体的なページに飛ぶリンクを作りたい。
例えば、シューズの広告のQRコードを読み取れば、アプリ内のシューズの購入ページに飛ぶリンクが欲しい。アプリを持っていない人は、AppleストアやGoogle Playストアに飛ばされ、インストールが終わるとアプリのシューズの購入ページに飛ぶことができるリンクを作りたい。など。
ドキュメント
今回は、DynamicLinksのショートリンクを作成する。
まずは、ドキュメントを読む前にコンソールで実際にDynamicLinksを使用して、DynamicLinksの動きや設定イメージを掴むべきである。
イメージを掴んだところでドキュメントは以下の二つを使用する。
コード例
以下AndroidとiOSどちらもアプリがある場合を想定する。
どちらかのみの場合は、パラーメーターを減らすと良い。
https://google.com
に飛ぶダイナミックリンクを作成する。
必要な情報
① DynamicLinksのURL接頭辞
② FirebaseのWEB APIキー
③ Androidのパッケージ名
④ iOS BundleId
⑤ iOS AppleStoreId
その情報はどこにあるの?
② FirebaseのWEB APIキー
③ Androidのパッケージ名
④ iOS BundleId
⑤ iOS AppleStoreId
これらは、.env
ファイルに記述する。以下は.env
ファイルに記述した環境変数をconfigファイル
を通して使用している。
DynamicLinksClientのクラスを作成
<?php
namespace App\Model\Firebase\DynamicLinks;
use GuzzleHttp\Client;
use Psr\Http\Message\ResponseInterface;
class DynamicLinksClient
{
private string $endpoint;
private string $domainUriPrefix;
private string $androidPackageName;
private string $iosBundleId;
private string $iosAppStoreId;
public function __construct()
{
$this->endpoint = 'https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key='.config('services.firebase.api_key');
$this->domainUriPrefix = config('services.firebase.domain_uri_prefix');
$this->androidPackageName = config('services.firebase.android_package_name');
$this->iosBundleId = config('services.firebase.ios_bundle_id');
$this->iosAppStoreId = config('services.firebase.ios_app_store_id');
}
public function getShortLink(string $urlParameter): ResponseInterface
{
$httpClient = new Client();
return $httpClient->request('POST', $this->endpoint, $this->params($urlParameter));
}
private function params(string $urlParameter): array
{
return [
'json' => [
'dynamicLinkInfo' => [
'domainUriPrefix' => $this->domainUriPrefix,
'link' => $urlParameter,
'androidInfo' => [
'androidPackageName' => $this->androidPackageName,
],
'iosInfo' => [
'iosBundleId' => $this->iosBundleId,
'iosAppStoreId' => $this->iosAppStoreId,
],
'navigationInfo' => [
'enableForcedRedirect' => true, //オプション
],
],
'suffix' => [
'option' => 'SHORT', //4文字のショートリンクになる
],
],
];
}
}
上記のオプションのパラメーターを入れることで、下の画像のような画面をとばしてアプリに直接遷移させることができる。
DynamicLinksClientのクラスを使用してショートリンクを作成する
$dynamicLinksClient = new DynamicLinksClient();
$response = $dynamicLinksClient->getShortLink('https://google.com');
$decodedResponse = json_decode($response->getBody()->getContents(), true);
$decodedResponse['shortLink']; //→https://example.page.link/WXYZ
ダイナミックリンクはhttps://example.page.link/WXYZ
でこれをクリックするとhttps://google.com
が開く。
全てドキュメントに書いてあるが、私みたいな初心者はそのドキュメントを解読するのに時間がかかった。
慣れるとドキュメントを読みながら実装を進めることができるが、この記事がDynamicLinksの実装イメージを持ちたい人の助けになれば嬉しい。