web-dev-qa-db-ja.com

iOSアプリのサーバーでユニバーサルリンクのApple-app-site-associationファイルをアップロードする方法

アップロードする手順は何ですかApple-app-site-associationサーバー内のファイル。 stg1.example.comは、ユニバーサルリンクを行う必要があり、そのルートパスにファイルをアップロードする必要があるWebサイトです。iOSのユニバーサルリンク用にアップロードするサービスを作成する方法。サーバーにjsonフォーマット済みファイルをアップロードする方法は?

14
Shrawan

Apple-app-site-associationファイルは、https://stg1.example.com/Apple-app-site-associationで、リダイレクトなしでHTTPS経由でアクセスできる必要があります。

ファイルは次のようになります。

{
"applinks": {
    "apps": [ ],
    "details": [
        {
            "appID": "{app_prefix}.{app_identifier}",
            "paths": [ "/path/to/content", "/path/to/other/*", "NOT /path/to/exclude" ]
        },
        {
            "appID": "TeamID.BundleID2",
            "paths": [ "*" ]
        }
    ]
}
}

のデモファイル

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "M8HBL5W4VV.com.Universal-Links",
                "paths": [ "/iOS-Universal-Links/*"]
            }
        ]
    }
}

[〜#〜] note [〜#〜]-追加しない.jsonからApple-app-site-association ファイル名。

キーは次のとおりです:
apps:値として空の配列が必要であり、存在する必要があります。これは、Appleが望んでいる方法です。
details:辞書の配列で、WebサイトでサポートされているiOSアプリごとに1つです。各辞書には、アプリ、チーム、バンドルIDに関する情報が含まれています。

パスを定義するには3つの方法があります:
Static:特定のリンクを識別するために、サポートされているパス全体がハードコーディングされています。/static/terms
Wildcards:*を使用して、動的パスを一致させることができます。/books/*は、任意の著者のページへのパスと一致します。 ?特定のパスコンポーネント内、たとえばbooks/1? IDが1で始まる書籍と一致させるために使用できます。
Exclusions:パスの前にNOTを付けると、そのパスは一致から除外されます。

配列内でパスが言及される順序は重要です。以前のインデックスは優先度が高くなります。パスが一致すると、評価は停止し、他のパスは無視されます。各パスでは大文字と小文字が区別されます。

複数ドメインのサポート

アプリでサポートされる各ドメインは、独自のApple-app-site-associationファイルを利用可能にする必要があります。各ドメインによって提供されるコンテンツが異なる場合、ファイルのコンテンツもそれぞれのパスをサポートするように変更されます。それ以外の場合は、同じファイルを使用できますが、サポートされているすべてのドメインでアクセスできる必要があります。

Appleアプリ検索検証ツールでサーバーを検証する
iOS 9 Search APIのWebページをテストします。 URLを入力すると、ApplebotはWebページをクロールし、最適な結果を得るための最適化方法を示します https://search.developer.Apple.com/appsearch-validation-tool/

ウェブサイトのコード

Webサイトのコードは https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages のgh-pagesブランチにあります。


App-Site-Associationファイルの署名(HTTPSサーバーではない場合)

サーバーがHTTPSを使用してコンテンツを提供し、アプリケーション設定にジャンプする場合、この部分をスキップできますガイド。

アプリがiOS 9をターゲットにしており、サーバーがHTTPSを使用してコンテンツを提供している場合、ファイルに署名する必要はありません。そうでない場合(たとえば、iOS 8でHandoffをサポートする場合)、承認された認証局からのSSL証明書を使用して署名する必要があります。

:これは、AppleがApp Storeにアプリを送信するために提供する証明書です。提供する必要があります。サードパーティによって、HTTPSサーバーに使用するのと同じ証明書を使用することをお勧めします(必須ではありません)。

ファイルに署名するには、まず単純な.txtバージョンのファイルを作成して保存します。次に、ターミナルで次のコマンドを実行します。

cat <unsigned_file>.txt | openssl smime -sign -inkey example.com.key -signer example.com.pem -certfile intermediate.pem -noattr -nodetach -outform DER > Apple-app-site-association

これにより、現在のディレクトリに署名されたファイルが出力されます。 example.com.keyexample.com.pem、およびintermediate.pemは、認証機関によって利用可能になるファイルです。

:ファイルが署名されていない場合、Content-Type of application/json。それ以外の場合は、application/pkcs7-mime


ここで私の完全な詳細な答えをチェックしてください

iOSアプリでユニバーサルリンクをサポートし、サーバーをセットアップする方法

29