Как загрузить файл apple-app-site-association для универсального соединения на сервере для приложения iOS?

Какова процедура загрузки файла apple-app-site-association на сервере. stg1.example.com - это сайт, на котором нужно универсальное связывание, и файл должен быть загружен в корневом пути. Как сделать службу для загрузки для универсальной привязки в iOS. Как загрузить файл json на сервере?

Ответ 1

Файл apple-app-site-association должен быть доступен через HTTPS без каких-либо переадресаций на странице https://stg1.example.com/apple-app-site-association.

Файл выглядит следующим образом:

{
"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/*"]
            }
        ]
    }
}

ПРИМЕЧАНИЕ. Не добавляйте .json к имени файла apple-app-site-association.

Ключи следующие:
apps: должен иметь пустой массив как его значение, и он должен присутствовать. Вот как это хочет Apple.
details: Является массивом словарей, по одному для каждого приложения iOS, поддерживаемого веб-сайтом. Каждый словарь содержит информацию о приложении, команде и идентификаторах пакетов.

Существует три способа определения путей:
Static: весь поддерживаемый путь жестко запрограммирован для идентификации конкретной ссылки, например./статические/термины
Wildcards: A * может использоваться для соответствия динамическим путям, например. /books/ * может соответствовать пути к любой странице авторов.? внутри конкретных компонентов пути, например. книги /1? может использоваться для соответствия любым книгам, чей идентификатор начинается с 1.
Exclusions: Предоставление пути с NOT исключает, что этот путь не сопоставлен.

Порядок, в котором пути упоминаются в массиве, важен. Более ранние индексы имеют более высокий приоритет. Когда путь совпадает, оценка останавливается, а другие пути игнорируются. Каждый путь чувствителен к регистру.

Поддержка нескольких доменов

Каждому домену, поддерживаемому в приложении, необходимо предоставить свой собственный файл ассоциации apple-app-site-association. Если контент, обслуживаемый каждым доменом, отличается, содержимое файла также будет изменяться для поддержки соответствующих путей. В противном случае можно использовать один и тот же файл, но он должен быть доступен в каждом поддерживаемом домене.

Подтвердите свой сервер с помощью инструмента проверки приложений Apple App
Проверьте свою веб-страницу для API поиска IOS 9. Введите URL-адрес, и Applebot сканирует вашу веб-страницу и покажет, как вы можете оптимизировать для достижения наилучших результатов https://search.developer.apple.com/appsearch-validation-tool/

Код сайта

Код веб-сайта можно найти в разделе gh-pages branch https://github.com/vineetchoudhary/iOS-Universal-Links/tree/gh-pages


Подписание файла ассоциации приложений (для сервера HTTPS)

Примечание. Вы можете пропустить эту часть, если ваш сервер использует HTTPS для обслуживания контента и перехода к руководству по установке приложений.

Если ваше приложение предназначено для iOS 9, а ваш сервер использует HTTPS для обслуживания контента, вам не нужно подписывать файл. Если нет (например, при поддержке Handoff на iOS 8), он должен быть подписан с использованием сертификата 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.key, example.com.pem и intermediate.pem - это файлы, которые предоставили вам ваш сертифицирующий орган.

Примечание. Если файл неподписан, он должен иметь Content-Type application/json. В противном случае это должно быть application/pkcs7-mime.


Посмотрите мой полный подробный ответ здесь

Как поддерживать Universal Links в приложении iOS для сервера приложений и настройки?