Универсальные ссылки работают локально, но не из приложений AppStore

После установки приложения вручную из xCode (с подключенным к MacBook устройством) я могу щелкнуть по почте со ссылкой на веб-приложение и открыть его в приложении cordova вместо веб-приложения (как и ожидалось).

Но когда я загружаю и устанавливаю приложение из AppStore или testFlight (с той же базой кода), Universal Links игнорируются и открывается веб-приложение.

Когда я отслеживаю журналы 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 для моего производственного приложения?

[EDIT] из ответа john316

Я расстегнул вскрытие IPA, открыл встроенный.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?

Ответ 1

По моему опыту наблюдения различий, как то, что вы описали, в большинстве случаев это было связано с различием в правах на приложения для профилей dev & distribution. Несмотря на то, что вы можете четко указать в своих настройках проекта приложения, что вам нужна определенная возможность (в данном случае флажок "Связанные домены"), Xcode может не выдавать никаких ошибок во время процесса подписания (при экспорте приложения для распространения), если отсутствуют определенные права в профиле подготовки.

Они могут отсутствовать по двум причинам: они, возможно, не были добавлены на портале developer.apple.com для этого профиля, или Xcode не обновил файл профиля с этого портала. В последнем случае это помогает стереть старый профиль с вашего локального диска, чтобы заставить Xcode перезагрузить его.

Чтобы убедиться, что у вас действительно есть право com.apple.developer.associated-domains в вашем файле рассылки, вы можете разархивировать файл IPA и проверить ключ com.apple.developer.associated-domains в <key>Entitlements</key> как указано здесь.

Другим способом отладки этого является просмотр журналов устройств в консоли (Xcode-> Window-> Devices & Simulators-> Open Console) при запуске версии приложения AppStore/TestFlight. Вы можете найти строку журнала, которая выводится iOS, когда ссылка правильно выполняется в приложении для dev-версии приложения и сравнивается с случаем, когда он терпит неудачу. Обычно iOS жалуется на этот момент о недостатках в журналах.

Ответ 2

Наконец я смог решить эту проблему:

Убедитесь, что Entitlements-Release.plist содержит правильные права. В моем случае только Entitlements-Debug.plist имел правильные права. Кроме того, когда вы экспортируете свое приложение на последнем шаге, вы обычно должны видеть сводку относительно включенных прав, убедитесь, что com.apple.developer.associated-domains перечислен с соответствующей applinks.

Это должно выглядеть примерно так:

enter image description here

источник: https://forums.developer.apple.com/message/334862

Ответ 3

Если вы используете Cordova/Ionic v3

Есть ошибка...

Проверьте эти шаги:

Есть четыре процесса

Консоль 1.app

Идентификаторы приложений → выберите идентификатор приложения → включены связанные домены → Готово Профиль обеспечения → Изменить снова

  1. В Xcode

AppName → общие <-> возможности → связанные домены → + ->

applinks: example.com

  1. На свой сервер Загрузите файл apple-app-site-association в корневой каталог для http и .well-известную папку для https

Например - https://www.skyscanner.com/apple-app-site-association

Например: https://www.skyscanner.com/.well-known/apple-app-site-association.

Не добавляйте этот файл как json, оставьте как текст Ex - apple-app-site-association

4. (Важно)

В папке проекта (cordova) есть два файла: 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

....... Спасибо позже сначала создайте свой проект

Ответ 4

Пожалуйста, обратитесь к приведенной ниже ссылке.

Пожалуйста, следуйте приведенным выше инструкциям. Вы должны изменить идентификатор команды для производства

https://medium.com/@abhimuralidharan/universal-links-in-ios-79c4ee038272