web-dev-qa-db-ja.com

ワイルドカードを使用したiOS関連ドメイン(ユニバーサルリンク)が機能しない

私が取り組んでいるiOSアプリで、関連ドメイン(ユニバーサルリンク)をセットアップしました。アプリは複数のドメインをホストします。ワイルドカードを使用して設定した一部のドメイン。これらのドメインは機能していないようです。たとえば、https://news.mydomain.com/にリンクしたいとします。以下を関連ドメインのリストに追加すると、

applinks:*.mydomain.com->機能しません

applinks:news.mydomain.com->正常に動作します

私はすべて正しく設定したと思います。Apple-app-site-associationファイルは問題なく設定されています。どちらの場合でも(チャールズプロキシを使用して)Apple-app-site-associationファイルが正常に取得されたことがわかります。

ワイルドカードの場合、リンクはSafariでのみ開きます。

ワイルドカードなしでドメインを構成すると、アプリが開きます。

ここで何か不足していますか?私はデバイス上でiOS 9.3.2を実行しており、Xcode 7.3.1を実行しています。これは今日の最新バージョンです。

26
Bocaxica

私の発見をこのスレッドに追加しました: https://forums.developer.Apple.com/thread/47315

要するに、iOS 10でも、ワイルドカードのセットアップでは、Apple-app-site-associationファイルがワイルドカードのルートによって提供される必要があるようです。

たとえば、*.domain.comを使用する場合、Apple-app-site-associationapp1.domain.comdomain.comなどの両方でホストする必要があります。そうでない場合、単純に機能しません。 Xcodeでapplinks:*.domain.comを指定します。

メインサイトがwww.domain.comでホストされていて、domain.comに301リダイレクトがある場合(www.domain.comにリダイレクトされる)、ユニバーサルリンクではリダイレクトが許可されないため、これは残念です。

私が見つけた回避策は、アプリのメインサブドメインを作成し、ワイルドカードにサブサブドメインを使用することでした。例えば。

  • app.domain.comApple-app-site-associationファイルを提供する必要があります)
  • server1.app.domain.comApple-app-site-associationを提供する必要があります)
  • server2.app.domain.com(...)

このように、Xcodeではapplinks:*.app.domain.comのみを指定でき、ユニバーサルリンクはXcodeでserver1.app.domain.comserver2.app.domain.comなどを指定しなくても機能します。

ただし、アプリでサーバーを使用する場合は、applinks:app.domain.comも明示的に指定する必要があります。

これがお役に立てば幸いです。

28
focorner

applinksのドメイン部分にワイルドカードを追加することは、iOS 9.3 Beta 2でのみ導入されたようです。 9.3 Beta 2リリースノート:

アプリのすべてのサブドメインを完全修飾ドメイン名としてリストする必要がなく、任意のサブドメインでユニバーサルリンクを使用できるようになりました。エントリの形式は次のとおりです。

:[:port number]は、「webcredentials」、「activitycontinuation」、または「applinks」です。

エントリの一部には、オプションで「*」をプレフィックスとして付けることができます。ワイルドカードサブドメインを示します。例えば:

applinks:*。example.com

あなたはiOS 9.3.2で実行すると言っています。しかし、あなたのdeployment target> = iOS 9.3ですか?そうでない場合は、変更してみてください。あなたの問題は解決すると思います。

ここに、このリリースノートのコピーがあります (申し訳ありませんが、他の公開ソースはありません)

編集:

Apple Doc がドメインでワイルドカードを使用できると言っている場合でも、 これには問題があるようです

関連付けられたドメインのすべてのサブドメインを照合するには、プレフィックスを使用してワイルドカードを指定できます。特定のドメインの開始前(ピリオドが必要)。ドメインマッチングは、applinksエントリの最も長い部分文字列に基づいています。たとえば、applinks:。mywebsite.comとapplinks:*。users.mywebsite.comのエントリを指定すると、ドメインemily.users.mywebsite.comの照合が、より長い* .usersに対して実行されます。 mywebsite.comエントリ。 * .mywebsite.comのエントリは、アスタリスクの後のピリオドのため、mywebsite.comと一致しないことに注意してください。 * .mywebsite.comとmywebsite.comの両方のマッチングを有効にするには、それぞれに個別のapplinksエントリを提供する必要があります。

2
Julien Quere

私は2016年9月に、iOS 9.3.5とiOS 10ベータの両方でこれを試しました。状況は変更されていないように見えます:applinksにワイルドカードドメインのみが含まれている場合、ドキュメントはこれが機能するはずであると示唆していますが、ユニバーサルリンクはまだ機能していません。

1
Jaanus

Appleドキュメントのバグです。9.3.1でも同じエラーが発生しました。9.3.2は正常に機能します。非常に興味深いリンクです。 署名の問題については、Laurence Fanのコメントを参照してください)

Appleは、*。domain.comがこのリンクで9.3.2以上で機能することを通知する必要があります ユニバーサルリンクをサポート

1
Marriage