iOSユニバーサルリンクをConoHaドメイン + S3 + CloudFront + ACMで実装する方法(DNS設定の注意点付き)

iOSのユニバーサルリンクを使うと、ユーザーがSafariやメールなどから https:// のリンクをタップした際に、アプリが直接起動できるようになります。

今回は ConoHa WINGで取得した独自ドメインを使い、AWS(S3 + CloudFront + ACM) を利用してユニバーサルリンクを実装する手順を紹介します。

実際に私が詰まったポイント(DNS設定の落とし穴やContent-Type設定忘れなど)も注意事項として載せているので、これから設定する方の参考になると思います。


ステップ1:ConoHaで独自ドメインを取得

  • ConoHa WING でドメインを購入(例: engineer-papa.com
  • ユニバーサルリンク用にサブドメイン(例: links.engineer-papa.com)を利用

ステップ2:S3にapple-app-site-associationを配置

  1. S3 バケットを作成(名前は任意)
  2. 以下のファイルをアップロード
    /apple-app-site-association
    /.well-known/apple-app-site-association
  3. Content-Type を application/json に設定すること!
JSON
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "teamID.appID",
        "paths": ["/*"]
      }
    ]
  }
}

ステップ3:ACM証明書を発行(us-east-1必須)

  1. AWS マネジメントコンソール → Certificate Manager (ACM)
  2. リージョンを必ず バージニア北部 (us-east-1) に切り替える
  3. 証明書をリクエスト → links.engineer-papa.com を入力
  4. DNS検証を選択し、提示された CNAME レコードを ConoHa DNS に追加
4の注意点
  • ConoHa DNSのHost欄には links とだけ入力する(links.engineer-papa.com とフルで書くと失敗する)
  • Value の末尾に . をつけ忘れると aws.engineer-papa.com になってしまうことがある
  • links.engineer-papa.com独立ゾーンに追加しないこと
  • 親ゾーン(engineer-papa.com)の DNS に CNAME を作成するのが正解です。

ステップ4:CloudFrontにドメインを設定

  1. CloudFront ディストリビューションを作成し、オリジンにS3バケットを指定
  2. Alternate domain names (CNAMEs)links.engineer-papa.com を追加
  3. SSL証明書に ACM(us-east-1) で発行した証明書を選択
  4. Add domains(デプロイ)

ステップ5:ConoHa DNSでCNAMEを設定

親ゾーン(engineer-papa.com)に以下を追加します。

種別: CNAME
名前: links
値: dxxxxxx.cloudfront.net
TTL: 3600

※A/AAAA レコードが残っているとエラーになるので削除してから追加してください。


ステップ6:iOSアプリの設定

Xcode → Target → Signing & Capabilities → Associated Domains に以下を追加:

applinks:links.engineer-papa.com

その後、実機にビルドして Notes アプリなどにリンクを貼り、タップしてアプリが開くか確認します。


ステップ7:動作確認

DNS確認

dig links.engineer-papa.com CNAME

期待される結果:

links.engineer-papa.com. 3600 IN CNAME dxxxxxx.cloudfront.net.

HTTP確認

curl -I https://links.engineer-papa.com/apple-app-site-association

期待される結果:

HTTP/2 200
content-type: application/json

Apple公式CDNでの確認

Appleは各ドメインの AASA をCDNにキャッシュして配信します。
設定が正しければ以下のURLで確認できます。

https://app-site-association.cdn-apple.com/a/v1/links.engineer-papa.com

ブラウザでアクセスすると、自分の apple-app-site-association の内容が表示されます。

内容が表示されない場合、AppleのCDNは24時間以内に反映されます。

端末での動作確認

メモ帳アプリに「https://links.engineer-papa.com/app」を記入し、タップする

AASAに設定したアプリが起動したら成功

もしWEBページが表示された場合は上記の確認をする必要があります。

AppleのCDNが「Not Found」だとアプリは起動しません。また、内容が後に対象アプリをもう一度ビルドすると良いと思います。


実際にハマった注意点まとめ

  • サブドメインを独立ゾーンにしてしまい、CNAME が作れなかった
  • Host にフルドメインを入力して links.engineer-papa.com.engineer-papa.com になってしまった
  • ACM証明書を us-east-1 以外で発行してしまい CloudFront で使えなかった
  • S3 の Content-Type が application/octet-stream のままで iOS がAASAを読まなかった

まとめ

  • ConoHaで取得したドメインでも、S3 + CloudFront + ACMを使ってユニバーサルリンクを実装可能
  • DNSはConoHa DNSに正しくCNAMEを設定することが最大のポイント
  • Apple公式のCDNチェック(https://app-site-association.cdn-apple.com/a/v1/<ドメイン>)を使うと検証がスムーズ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA