DynamicLinksが終了するため、自前でユニバーサルリンクに対応させたので、その時のメモです。
サーバサイドは最低限以下をやる必要があります。
- ディレクターやアプリ担当者とアプリで起動させるURLを決める
- スマートフォン内でどのURLがタップされた時に、アプリを起動するかを決めます
- 「apple-app-site-association」ファイルを作成してサーバに配置する
- 設置場所
https://example.com/.well-known/apple-app-site-association
- 必ず
/.well-known/
の配下に「apple-app-site-association」のファイル名で配置します - AppleのCDNがアクセスできるよう、IP制限や認証での制限に注意しましょう(特にステージング環境)
- 設置場所
apple-app-site-associationの内容
{
"applinks": {
"details": [
{
"appIDs": [
"***********"
],
"components": [
{
"/": "/item/detail/*"
},
{
"/": "/news/*",
"exclude": true,
"commentt": "newsのアプリでの起動を廃止"
}
]
}
]
}
}
「appIDs」は <チームID>.<バンドルID>
です。
カンマ区切りで複数設定する事もできます。
上記の場合は
https://example.com/item/detail/99
のような商品詳細ページのURLをスマホでタップすると、アプリがインストールされている場合アプリで起動します。
アプリ側でURLとパラメータの「99」を取得して表示すべき画面を判断します。
componentsには複数指定できるので、細かく制御する事ができます。
以下のような設定が出来ます。
設定項目 | 説明 |
---|---|
"#":"" | フラグメントの指定 |
"/":"" | パスの指定 |
"?":{"":""} | クエリパラメータの指定 |
"exclude":true | trueで設定すると該当の条件は発動しない |
"comment":"" | コメント |
やる事は意外とシンプルです。
細かく追及していくと、色々と工夫しないといけないところは出てきますが、基本はコレだけです。