web-dev-qa-db-ja.com

ユニバーサルリンクはローカルで機能しますが、AppStoreアプリからは機能しません

アプリを手動でインストールするからxCodeから(デバイスをMacBookに接続した状態で)Webアプリへのリンクを含むメールをクリックすると、WebアプリではなくCordovaアプリに開かれます(- 期待どおり)。

しかし、アプリをダウンロードしてインストールするとAppStoreまたはtestFlightから(まったく同じコードベースで)ユニバーサルリンクは無視されますでWebアプリが開きます。

Apacheログを監視し、アプリを手動でインストールすると、次のようになります。

XX.XX.XX.XX - - [29/Aug/2018:14:32:33 +0000] "GET /.well-known/Apple-app-site-association HTTP/1.1" 200 730 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

しかし、testFlightまたはAppStoreからアプリをインストールしている間、そのファイルに対するリクエストはありません。

誰かが検索の手がかりを見つけるのを手伝ってくれませんか...プロダクションアプリでUniversalLinkを有効にするにはどうすればよいですか?

[編集] john316の回答から

生成されたIPAを解凍し、embedded.mobileprovisionを開きました。

<key>Entitlements</key>
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>XXXX.*</string>     
    </array>
    <key>get-task-allow</key>
    <true/>
    <key>application-identifier</key>
    <string>XXXX.my.domain.com</string>
    <key>com.Apple.developer.associated-domains</key>
    <string>*</string>
    <key>com.Apple.developer.team-identifier</key>
    <string>XXXX</string>
    <key>aps-environment</key>
    <string>development</string>
</dict>

関連付けられたドメインは有効になっていますが、すべてのapplinks:domains

13
Alexandre SIRKO

あなたが説明するような違いを観察した私の経験では、ほとんどの場合、それは開発および配布プロファイルのアプリの資格の違いが原因でした。アプリプロジェクトの設定で特定の機能が必要であると明確に述べている場合でも(この場合は[関連付けられたドメイン]チェックボックス)、特定の資格がない場合、署名プロセス(配布用にアプリをエクスポートするとき)中にXcodeがエラーをスローしない場合があります。プロビジョニングプロファイル内。

これらは、2つの理由で欠落している可能性があります-このプロファイルのdeveloper.Apple.comポータルに追加されていないか、Xcodeがそのポータルからプロファイルファイルを更新していません。後者の場合、ローカルディスクから古いプロファイルを消去して、Xcodeに強制的に再ダウンロードさせることができます。

実際にcom.Apple.developer.associated-domainsエンタイトルメントを配布ファイルに含めます。IPAファイルを解凍して、com.Apple.developer.associated-domainsキー<key>Entitlements</key>指定されたセクション ここ

これをデバッグする別の方法は、AppStore/TestFlightバージョンのアプリを実行しているときに、コンソール(Xcode-> Window-> Devices&Simulators-> Open Console)でデバイスログを確認することです。アプリのdevバージョンのアプリへのリンクが正しくたどられたときにiOSによって出力されるログ行を見つけ、失敗した場合と比較できます。通常、iOSはその時点で、資格情報が不足していることをログに記録します。

7
john316

最後に私はこの問題を修正することができました:

Entitlements-Release.plistには正しいエンタイトルメントが含まれています。私の場合、Entitlements-Debug.plistは正しいエンタイトルメントを持っていました。また、最後のステップでアプリをエクスポートするときは、通常、含まれる資格に関する概要が表示されます。com.Apple.developer.associated-domains適切なapplinksエントリとともにリストされます。

次のようになります。

enter image description here

ソース: https://forums.developer.Apple.com/message/334862

3
menelik

Cordova/Ionic v3を使用している場合

バグがあります...

これらのステップを確認してください:

4つのプロセスがあります

1. appコンソール

アプリID->アプリIDを選択→関連付けられたドメインを有効化->プロビジョニングプロファイルの完了->再度編集

  1. Xcode

AppName->一般的な<->機能->関連ドメイン-> +->

applinks:example.com

  1. サーバーで、httpのルートディレクトリにApple-app-site-associationファイルをアップロードし、httpsの.well-knownフォルダーをアップロードします

例- https://www.skyscanner.com/Apple-app-site-association

例- https://www.skyscanner.com/.well-known/Apple-app-site-association

Jsonがテキストとして残るので、このファイルを追加しないでください-Apple-app-site-associationの例

4.(重要)

(cordova)プロジェクトフォルダーには2つのファイルがあります:Project-> plateform-> ios-> projectNameFolder->

Entitlements-Debug.plist

Entitlements-Release.plist

値applinks:example.comをCapabilities-> Associated domains-> Domainsに追加すると、Entitlements-Debug.plistは次の行を取得します。

 <key>com.Apple.developer.associated-domains</key> <array>  
 <string>applinks:example.com</string> </array>

しかし、Entitlements-Release.plistは変更されませんでした。この問題を解決するために私が行ったのは、生成された行をEntitlements-Debug.plistからコピーして貼り付けることです。この後、私は以前とまったく同じアーカイブとアップロードのプロセスを行い、すべてがうまくいきました。

そしてionic-plugin-deeplinksを使用してパラメーターを取得し、Deeplinkプロセスをルーティングします

.......おかげで、後で最初にプロジェクトをビルドします

1
Amit Pandey