はじめに
iOS14以降でUniversal Linksの実装を行う場合、Apple CDNがapple-app-site-association1 (以下AASA)を参照できるようにファイルを公開しておく必要があります。
しかし、業務のステージング環境ではIP制限などによって外部から参照出来ない状況となっていることも多いですよね。
Universal Linksの起動確認のみを行いたい場合にわざわざステージング環境の外部公開の手続き・作業を行うのもコストが掛かりすぎるため、GitHub PagesでAASAを公開してUniversal Linksの起動確認を行ってみました。
その手順をまとめておきます。
GitHub Pagesにapple-app-site-association(AASA)を配置する
GitHub Pagesの作成
まずは下記を参考にGitHub Pagesサイトを作成し、{username}.github.ioのドメインを取得しましょう。
疎通確認のためにリポジトリの最上位のディレクトリに index.html を置いておき、 {username}.github.io
でアクセス出来るか確認してみましょう。
続いて、.well-known
ディレクトリを作成し、AASAを配置します。
AASAは下記のようなJSONフォーマットで配置します。
{
"applinks": {
"details": [
{
"appIDs": [
"ABCDEFGHIJ.jp.co.myapp"
],
"components": [
{
"/": "/*",
"comment": "Any comments"
}
]
}
]
}
}
AASAに最低限記載する項目
appIDs
"appIDs": [
"ABCDEFGHIJ.jp.co.myapp"
],
appIDs
にはDevelopment team ID2とBundle identifierを連結したAppIDを記載します。
検証AppであればEnterpriseのアカウントのTeam IDである必要があります。
components
"components": [
{
"/": "/*",
"comment": "Any comments"
}
]
Appを起動させたいパスを記載します。
{username}.github.io
(ドメインそのまま)で起動させたい場合には /*
を許可するよう指定します。
.nojekyll
を忘れずに
ただし、上記のファイルのみだと .well-known/
配下のファイルが 404 となってしまいAASAが参照できません。
リポジトリに最上位に .nojekyll
を配置しておく必要がありました。
最終的にこのようにファイルを配置しておきます。
なお、この状態にしてすぐにドメインへアクセスしてもUniversal Linksは発火しません。
ここまでの作業を行った上で、数十分〜数時間程度待つ必要があります。
夜にやっておいて翌日に確認するのが確実かもしれませんね。
AppのEntitlementの修正
あとはiOSプロジェクトのEntitlementに指定したいドメインを記載します。
指定するドメインに ?mode=developer
を付与することにより、開発用プロファイルでビルドしたAppでもUnversal Linksを使用することが出来るようになります。
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:username.github.io?mode=developer</string>
</array>
参考にしたサイトはこちら
あとがき
サーバーサイドの環境が自由に変更出来ない場合でも、github.ioのみで無事Universal Linksの起動確認が出来ました。
反映待ちの時間が不定などちょっと不便さがありますが、急ぎ出ない場合などはこの方法でも十分かと思います。