Apple-приложение-сайт-ассоциация не работает
Я реализовал apple-app-site-association
для глубокой связи с моим приложением iOS.
Я создал файл.JSON без расширения и поместил его в корневой каталог моего сайта.
Теперь я могу видеть файл как https://example.com/apple-app-site-association в любом браузере.
Ниже приведено тело json внутри файла apple-app-site-association -
{
"applinks": {
"apps": [],
"details": [
{
"appID": "AppID.bundleIdentifier",
"paths": [ "*"]
}
]
}
}
К вашему сведению я добавил следующие внутри моего сайта (angular.js) .htaccess -
<FilesMatch "^apple-app-site-association$"> ForceType application/json </FilesMatch>
Я уже включил "Связанный домен" как в Xcode, так и на developer.apple.com.
Но когда я пытаюсь установить новую сборку, она не работает.
Копаясь в журнал устройства, я получаю следующую ошибку.
Пожалуйста, посмотрите и помогите мне в том, что я делаю неправильно.
[SWC] ### Плохая связь apple-app-site-site JSON: Ошибка Domain=NSCocoaErrorDomain Code=3840 "Текст JSON не начинался с массива или объекта и параметра, позволяющего не задавать фрагменты". UserInfo={NSDebugDescription= Текст JSON не начинался с массива или объекта и опции, позволяющей не устанавливать фрагменты.}
5 ответов
Лучший способ проверить, правильно ли настроен ваш файл, — это использовать
curl -v https://app-site-association.cdn-apple.com/a/v1/yourdomain.com
или же
curl -v https://app-site-association.cdn-apple.com/a/v1/sub.domain.com
Если вы получите JSON-файл ассоциации Apple-App-Site-Association в качестве ответа, ваша конфигурация верна, вы можете проверить конфигурацию связанных доменов. Помогает удаление и переустановка или попробуйте перезагрузить iPhone.
Но если вы не получили ответ JSON от приведенного выше завитка, проблема должна быть связана с конфигурацией сервера.
Добавить .well-known/
на свой путь:
https://<fully qualified domain>/.well-known/apple-app-site-association
Из https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app
Файл надлежащим образом размещен, что подтверждается с помощью:
curl -I https://pravin-dev.slicepay.in/apple-app-site-association
Вы также можете использовать Apple Applebot для сканирования вашего сайта для проверки ассоциации apple-app-site-site. Тем не менее, это только полная проверка, если ваше приложение работает.
Возможно, проблема не в вашем файле ассоциации. Вы должны убедиться, что ваше приложение действительно проверяет https://pravin-dev.slicepay.in/apple-app-site-association а не https://slicepay.in/apple-app-site-association. Дважды проверьте ссылки на приложения в разделе "Связанные домены" ваших возможностей, и файл.entitlements был создан правильно. Вы используете поддомен pravin-dev - если это не было указано, ваше приложение может не найти правильное местоположение.
Как вы, возможно, знаете, вам нужно удалить приложение, чтобы повторно проверить его на предмет наличия ассоциации.
У меня также было это; файл был правильно структурирован, он был доступен как с .well-known, так и без него, права были правильными...
... оказывается, выключение и включение моего устройства решило проблему. Я думаю, что iOS обновит универсальные ссылки приложений при перезапуске или что-то в этом роде.
Если ничего не помогло, попробуйте выключить и снова включить.
Похоже, что файл каким-то образом обслуживается сервером неправильного типа. Если вы попытаетесь загрузить рабочий файл AASA в веб-браузер ( https://branchmaps.app.link/apple-app-site-association), вы увидите, что он загружается немедленно, а полученный файл не имеет типа. Ваш файл отображается в браузере и при загрузке выходит с типом файла JSON.
Если вы сохраняете файл как apple-app-site-association.json
а затем удалив расширение, попробуйте вместо этого сохранить его непосредственно из Atom/Sublime/what без имени файла, чтобы убедиться, что ОС не встраивает метаданные.
Вы также можете использовать бесплатную платформу глубоких ссылок, такую как https://branch.io/ (полное раскрытие: я в команде Branch), и вам не нужно обрабатывать эту конфигурацию сервера:)