Универсальные ссылки iOS не открываются в приложении


109

Поэтому я точно следовал этому руководству и использовал те же значения, что и предоставленные: https://blog.branch.io/how-to-setup-universal-links-to-deep-link-on-apple-ios-9

Файл ассоциации Apple также готов в каталоге ссылок:
WEB_PAGE:PORT_NUMBER/apple-app-site-association

Вроде бы все на этой стороне настроено.

Я добавил права, обновил профиль обеспечения и все настроено.

Когда я запускаю приложение на своем устройстве и открываю ссылку http://WEB_PAGE:PORT_NUMBER, всегда открывается Safari.

У меня даже есть точки останова в следующем методе:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler

Но пшик.

Кто-нибудь усовершенствовал это? Что-то мне не хватает?


2
оформить заказ здесь, чтобы убедиться, что вы не пропустите ни одного шага stackoverflow.com/questions/35609667/…
Vineet Choudhary

Ответы:


189

Есть несколько возможных проблем.

  1. Попробуйте вставить свой домен в этот валидатор ссылок и убедитесь, что нет проблем: https://limitless-sierra-4673.herokuapp.com/ (кредит ShortStuffSushi - см. Репо )

  2. iOS регистрирует сообщение об ошибке в системных журналах, если у вас неправильно настроен TLS в домене, указанном в ваших правах. Он хранится в журналах ОС, а не в журналах приложений. Сообщение об ошибке будет выглядеть так Sep 21 14:27:01 Derricks-iPhone swcd[2044] <Notice>: 2015-09-21 02:27:01.878907 PM [SWC] ### Rejecting URL 'https://examplecustomdomain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr. Сообщение об ошибке получено отсюда , краткие (неполные) инструкции по использованию CloudFlare для TLS здесь .

  3. В моем личном тестировании щелчок / ввод ссылки в Safari ни разу не открывал приложение напрямую. Щелкнув из других приложений (IMessage, электронная почта, расслабленные и т.д.) уже работал. Другие сообщили, что нажатие на ссылки в результатах поиска Google открывало приложение напрямую.

  4. Обратите внимание, что если универсальная ссылка успешно открывает ваше приложение, а затем вы переходите к Safari (нажав свой сайт в правом верхнем углу панели навигации в приложении), iOS перестает открывать приложение, когда вы посещаете этот URL . Затем в Safari вы можете потянуть вниз, чтобы в верхней части страницы появился баннер с надписью «Открыть». Я потратил на это много времени. Обратите внимание, что переход к сайту => отключение UL кажется специфичным для пути , основанного на путях, которые вы указываете в файле привязки яблочного приложения-сайта. Так что, если у вас есть отдельные маршруты, yoursite.com/a/*и yoursite.com/b/*если вы щелкнете, yoursite.com/a/*и оно откроет ваше приложение напрямую, у вас будет возможность в правом верхнем углу приложения щелкнуть yoursite.com/a/*. Если вы это сделаете, последующие посещенияyoursite.com/a/*откроется в браузере, а не в приложении. Тем не менее, yoursite.com/b/*это не должно повлиять на это и по-прежнему открывать ваше приложение напрямую.

Дайте мне знать, если вы обнаружите, в чем проблема. Мне лично очень любопытно, как работают универсальные ссылки и какие существуют крайние случаи. Удачи.


1
То же самое. Так странно. Иногда он открывает приложение напрямую, иногда открывает webView. Я бы хотел, чтобы документация была ясна. Работа этой функции неустойчива
Леголас

4
Что касается 1), вам больше не требуется подписывать файл ассоциации яблочного приложения-сайта, если вы обслуживаете его через https.
Джереми Хикс

11
Также может помочь перезагрузка устройства iOS. Я трижды проверил все настройки и конфигурацию и был абсолютно уверен, что все правильно, но все равно не работает. Затем я попытался использовать другое устройство, и оно отлично сработало. Затем я удалил приложение с исходного устройства, перезапустил устройство и переустановил приложение, после чего оно просто сработало ...
mathz

4
Как вернуться в приложение вместо сафари, если кто-то случайно нажал ссылку на сайт в правом углу приложения?
iEngineer

3
Я нигде не получал баннер Open in App. После долгого поиска вот решение: введите любую ссылку для своего сайта в приложении Notes (это универсальная ссылка). Теперь нажмите "Готово". Как только она станет ссылкой, нажмите и удерживайте ее и выберите «Открыть в AppNAME-HERE»!
kishorer747

64

Это может пойти не так, как надо. Два момента вызвали у меня проблемы:

  • В Xcode, когда вы добавляете право на связанные домены, каждая запись должна начинаться с applinks:вашего доменного имени. Напр applinks:www.apple.com.

  • Хотя Xcode создал для меня файл прав, он не был включен в мою сборку: мне пришлось щелкнуть это поле вручную.

И да, после этого не нужно было подписывать apple-app-site-associationфайл: это простой текст, и он работает, пока обслуживается по HTTPS. (Однако вам все равно нужно будет подписать его, если вы поддерживаете iOS 8.)


4
Мне также пришлось полностью удалить приложение с тестового устройства, а затем снова собрать и запустить его, прежде чем оно наконец заработало.
Фил Эндрюс

14
вы спасаете меня, это была моя проблема, хотя XCode создал для меня файл прав, он не был включен в мою сборку: мне пришлось щелкнуть это поле вручную.
cham

12
Включение файла прав в сборку также устранило проблему для меня. Стоит отметить, что в Xcode 8 флажки целевого членства в File Inspector фактически отключены. Мне пришлось перейти к настройкам сборки и добавить файл прав на этапе копирования ресурсов.
Чарльз А.

5
@cham: не могли бы вы уточнить, «хотя XCode создал для меня файл с правами, он не вошел в мою сборку: мне пришлось щелкнуть это поле вручную».
Thang Pham

6
@AwaisFayyaz. Перейдите на этапы сборки> Копировать ресурсы пакета. Щелкните значок плюса и добавьте файл прав.
s.zainulabideen 01

36

Очевидно, есть ошибка в документации по созданию файла ассоциации для универсальных ссылок .

Где сказано:

Значение ключа appID - это идентификатор группы приложения и идентификатор пакета.

он должен сказать

Значение ключа appID - это префикс приложения и идентификатор пакета.

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

Чтобы найти это значение, откройте Центр участников на https://developer.apple.com и посмотрите «Сертификаты, идентификаторы и профили», нажмите «Идентификаторы», затем «Идентификаторы приложений» в таблице под «Идентификаторами». Найдите свое приложение и используйте там значение префикса и идентификатор пакета, чтобы создать свой AppID для файла ассоциации.


2
+1, это мне очень помогло. Потратьте полдня, выясняя, почему это не сработало, и мне показалось, что это именно так,
Иво Бекерс

вы спасли мне день, на самом деле мое приложение было давным-давно, а префикс приложения отличается от идентификатора команды.
Ti3t

это единственное, что у меня работает. Спасибо!
dhin

Это было для меня решением. Отличный совет.
Винсент

33

Чтобы помочь в устранении этой проблемы, при установке приложения найдите «swcd» в выводе консоли вашего устройства, чтобы узнать, сработала ли регистрация универсальной ссылки.

  1. Используйте реальное устройство, а не симулятор.
  2. Удалите приложение со своего устройства.
  3. Подключите устройство к компьютеру и просмотрите вывод консоли устройства в xcode. (окно -> устройства -> [ваше устройство] -> открыть консоль). Держите это окно открытым.
  4. Установите приложение и дайте ему запуститься.
  5. Отфильтруйте вывод консоли на "swcd". Если все прошло успешно, вы увидите что-то вроде следующего скриншота. Если не получится, вы увидите что-нибудь еще. Если вы ничего не видите, значит, вы испортили что-то фундаментальное, например, добавив право на связанные домены.

Ссылка на приложение успешно добавлена


2
Отличный совет! Я добавлял https: // к приложению: право, а также указывал полный путь, который я хотел прослушать, что было обеими ошибками. Я указывал example.com/path *, где мне нужно было указать только мой домен.com, а файл AASA на example.com затем указывает путь к идентификатору пакета моего приложения
Нуман Тарик

3
Могу я перевести вам денежный бонус? Я потратил 2 дня на прохождение каждого этапа этой долбанной настройки универсальной ссылки, ничего не помогало, пока я не попробовал ваш подход. Мне очень не повезло разместить свой файл ассоциации в корневой папке firebase для моего домена, и оказалось, что Apple сначала запрашивает подкаталог .well-known /, и firebase, похоже, отвечает на него своим собственным (!) Правильным файлом ассоциации, который не имеет связанного приложения. Гошшш, как мне это узнать, Apple?
nalexn

Аааа отличная подсказка! Я не знал об этой консоли устройства, просто смотрел на вывод консоли Xcode. Моя проблема заключалась в том, что 2 из 3 доменов deeplink работали, но не последний. И там, в консоли, я увидел, что для моего последнего домена я неправильно написал "appllinks: <domain>" (2 L) Ой ... в любом случае, еще раз спасибо за отличный способ проверить, действительно ли зарегистрированы универсальные ссылки! (Я также нашел журналы консоли. Удаление ссылок при удалении приложения: +1)
Арно Тейгсет

1
он должен быть таким подробным по умолчанию? Потому что я не получаю такой подробный журнал .. Означает ли это, что операция не удалась?
Николас Аллио

26

Ответ Сентдеррика информативен.

Но чтобы снова включить универсальные ссылки для открытия в приложении вместо сафари, нам нужно сделать следующее.

  • Нажмите и удерживайте универсальную ссылку в почте или iMessage, после чего вы увидите варианты открытия в сафари или в приложении.

2
Нет возможности appтолько копировать, открывать, добавлять в список для чтения и т. Д.
iEngineer

1
Почти сошел с ума, отлаживая эту проблему, но ЭТО было решением или мной. Может быть, если он настроен неправильно и приложение Mail открывает ссылку в сафари, оно всегда открывается в сафари? Понятия не имею, но однажды я сделал долгое нажатие -> открыть в "myapp" ... и теперь ссылки открываются правильно!
herbert 09

1
Большое спасибо за это решение. Я застрял в этом почти сутки. Ты спас мне день.
Эндрю


18

Я понял, что проблема для меня заключалась в том, что ссылки на корневой каталог (например http://example.com/) не открывали мое приложение, но если я добавил путь (например http://example.com/mypath), он работал. Добавление "/"в список путей сравняло его:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "*", "/" ]
            }
        ]
    }
}

Как ответил slutsker в этой ветке форумов разработчиков Apple.


17

Быстрые шаги, чтобы проверить, правильно ли вы внедрили Universal Link.

  • Нажмите и удерживайте ссылку, по которой вы ожидаете запустить приложение. Вы должны увидеть «Открыть в [название вашего приложения]» в контекстном меню.

  • Откройте приложение Notes, введите ссылку, по которой вы хотите открыть приложение. Коснитесь Готово. Ссылка станет желтой, и нажатие на нее должно открывать ваше приложение, а не Safari.

  • Если ссылка http://yourDomain.com не запускает приложение, попробуйте http://yourDomain.com/yourFolder/

  • В Safari, если в контекстном меню в сафари отображается «Открыть в [название вашего приложения]», но нажатие на ссылку открывает ссылку в самом сафари вместо запуска приложения,

    а. Попробуйте потянуть вниз страницу сафари, которая открывалась при нажатии на ссылку, как при нажатии кнопки «обновить». Должен появиться баннер, который может открыть ваше приложение. Коснитесь баннера, чтобы открыть приложение, закройте приложение, нажав кнопку «Домой», вернитесь в сафари и попробуйте запустить приложение, снова нажав ссылку. На этот раз приложение должно запуститься, потому что нажатие на баннер должно было сохранить настройку открытия ссылки в приложении.

    б. Если приложение по-прежнему не запускается после шага а., Попробуйте отправить ссылку на веб-почту, такую ​​как gmail, откройте сайт веб-почты в Safari и попробуйте щелкнуть ссылку. Если это сработает, возможно, вы пытались запустить приложение из того же домена, что и ссылка. Из того, что я видел, запуск приложения из того же домена в основном не выполняется . Вероятно, safari не будет проверять, является ли целевой URL универсальной ссылкой, когда ссылка находится в том же домене, в котором находится пользователь. Поэтому попробуйте запустить приложение из другого домена.


3
Вот и все, мы занимаемся этой проблемой несколько часов, ЗАПУСК ПРИЛОЖЕНИЯ ИЗ ОДНОГО ДОМЕНА В большинстве случаев дает сбой. Спасибо :)
maledr53

12

Также очень важно увеличивать версию проекта или номер сборки после интеграции универсальных ссылок. Даже если вы удалите / переустановите, iOS не получит ссылки, пока вы не обновите версию.


1
Это! Версия пакета была именно тем, что привело к сбою моего тестирования, потому что я бы повторил все приведенные выше советы, и мои ссылки все равно запускали бы Safari, поскольку iOS использует кешированный результат из предыдущей версии, у apple-app-site-associationкоторой был неправильный префикс appId
zai chang

Кайл, я думаю, что люблю тебя! Этот ответ спасет день, спасибо!
neiker 04

Это был секретный соус для меня! Спасибо Спасибо спасибо!
nurider

11

Для тех, кому нужно легко протестировать открытие (универсальных) ссылок, вы также можете открыть ссылку в своем симуляторе из терминала с помощью этой команды:

xcrun simctl openurl booted yourapp_or_http://yourlink

например:

xcrun simctl openurl booted https://www.google.com


1
У меня это не работает, он всегда просто открывает Safari. Однако они работают, когда я работаю на реальном устройстве. Любые идеи будут оценены, так как отладка / разработка без симулятора немного болезненнее.
chib

10
  • Универсальные ссылки не будут работать, если вы вставите ссылку в поле URL-адреса браузера.

  • Универсальные ссылки работают с пользовательским <a href="...">щелчком элемента в разных доменах . Пример: если на сайте google.com есть универсальная ссылка, указывающая на bnc.lt, приложение откроется.

  • Универсальные ссылки не будут работать, если <a href="...">элемент, управляемый пользователем, щелкнет в том же домене . Пример: если на google.com есть универсальная ссылка, указывающая на другую универсальную ссылку на google.com, приложение не откроется.

  • Универсальные ссылки не могут быть запущены через Javascript (в window.onload или через вызов .click () <a>элемента), если это не является частью действия пользователя.

источник: https://dev.branch.io/getting-started/universal-app-links/support/ios/#appsbrowsers-that-support-universal-links

На то, чтобы разобраться с третьей пулей, у меня ушло около дня.


1
3-я пуля, здесь такая же: потрачено много времени на выяснение этого. У Apple есть даже красивое, очень глупое объяснение: «iOS уважает наиболее вероятные намерения пользователя и открывает ссылку в Safari», посмотрите сами здесь .
jox

3-я пуля ТОП!
Байтерос,

7

Если люди здесь ищут другие решения, мы составили целую пошаговую инструкцию по отладке универсальных ссылок, так как мы видели множество всплывающих проблем, вызывающих МНОГО головных болей.

Проверить это:

Руководство по отладке универсальных ссылок

Предварительный просмотр руководства по отладке

Если вы просто хотите настроить Universal Links в свежем виде, это руководство действительно поможет:

Руководство по настройке iOS Deep Linking

Надеюсь, они будут полезны!


Очень полезно, спасибо! У меня сработало при работе на реальном устройстве, но не на iOS Simulator.
Джош Склар

6

Просто подумал, что добавлю кое-что, что обнаружил, на случай, если больше людей столкнутся с теми же проблемами, что и я, в будущем. В основном это связано с ошибками аутентификации.

Хотя в Apple это прямо не указано, apple-app-site-association файл должен обслуживаться по https, даже если он подписан. Сертификат, используемый для https, также должен быть доверенным для Apple. Таким образом, хотя сертификат, добавленный к устройству в разделе «Настройки» -> «Общие» -> «Профили», разрешит использование https в сафари, он не позволит универсальным ссылкам работать.

В журналах устройства при ошибке аутентификации между устройством и сервером будет напечатано значение типа "TrustResultValue" : 4 . Значение TrustResultValue5 означает, что сертификат предназначен для неправильного домена (например, test.com обслуживается с www.test.com). АTrustResultValue 4 означает, что сертификат не является доверенным для этого использования.

Там могут быть некоторые полезные шаги для отладки здесь . Раздел «Тестирование доступа к ассоциации приложения-приложения-сайта-приложения» представляет собой пошаговое руководство, как убедиться, что устройство получает apple-app-site-associationфайл. Шаги сводятся к следующему:

  1. Удалите приложение. Это необходимо, поскольку файл загружается при установке.

  2. Остановите сервер от правильного обслуживания apple-app-site-association .

  3. В xcode откройте Window -> Devices и затем выберите свое устройство.

  4. Откройте журналы устройства, щелкнув треугольник в нижней части окна.

  5. Очистите журналы, щелкнув корзину, чтобы очистить все предыдущие журналы, которые могут быть связаны.

  6. Переустановите приложение с помощью xcode, нажав кнопку воспроизведения.

  7. После запуска приложения, если устройство правильно запрашивает файл, журналы устройства должны содержать ошибку, которую можно найти, выполнив поиск по запросу «apple-app-site-association».

Если apple-app-site-associationфайл обслуживается правильно (шаг 2 пропущен), ошибки быть не должно. Вместо этого может отображаться ошибка аутентификации, если это проблема.


1
Я выполнял подмену SSL с помощью Charles Proxy, и это привело к значению доверия 4. Когда я отключил прокси, это удалось.
Бен Флинн

6

Наиболее частая причина - это когда пользователь нажимает в правом верхнем углу, тем самым говоря iOS НЕ открывать приложение (в данном случае Uber) в будущем.

Чтобы исправить это, потяните вниз, чтобы открыть смарт-баннер, и нажмите ОТКРЫТЬ:

Потяните вниз в Safari и снова ОТКРОЙТЕ

Впоследствии он будет «помнить» об открытии приложения.


5

Мы добавили файл ассоциации яблочного приложения-сайта в это место:

https://example.com/apple-app-site-association

На iOS 9 он работал нормально, но на iOS 10 не работал.

Оказалось, что проблема связана с известным путем.

https://example.com/.well-known/apple-app-site-association

Из-за https://example.com/.well-known/apple-app-site-association путь перенаправлен на https://example.com

<Notice>: Allowing redirect 'https://example.com/.well-known/apple-app-site-association' -> 'https://example.com/'
<Notice>: ### Rejecting AASA file size 154466 for URL https://example.com/.well-known/apple-app-site-association

На мой взгляд, если по какой-то причине. Хорошо известный путь работает некорректно, он разрывает универсальные ссылки.


В руководстве четко сказано, что «файл должен быть доступен через HTTPS - без каких-либо перенаправлений».
eonil

В руководстве также четко сказано, что «для приложений, работающих в iOS 9.3.1 и более поздних версиях, размер несжатого файла ассоциации« приложение-приложение-сайт-яблоко »не должен превышать 128 КБ, независимо от того, подписан ли файл». Размер этого файла 154 КБ.
Роберто

В iOS11 ваш сервер должен явно возвращать статус 404 для: example.com/.well-known/apple-app-site-association, тогда swcd использует откат к root: example.com/apple-app-site-association . Вы можете быстро проверить возвращенный статус HTTP с помощью таких инструментов, как Postman
Max Odnovolyk

4

Мне удалось заставить это работать, но это заняло довольно много времени и усилий. Обратите внимание, что если вы не подписываете apple-app-site-association файл (подпись необязательно!), Нажатие на ссылку в Safari не откроет ваше приложение (это вызвало у меня много головной боли).


1
Это любопытно. Apple заявляет в документации, что для использования в чистом виде универсальных ссылок и использования в iOS9 подпись не требуется. Только если вы хотите поддерживать iOS 8 Handoff / Shared Web Credentials, вам нужно будет подписать. Интересный! У меня такая же проблема, поэтому я попробую подписать.
wrtsprt

Подписание действительно необязательно. Нажатие на ссылку в Mobile Safari для запуска открытия собственного приложения iOS называется «Передача от веб-браузера к собственному приложению», и в этом случае вам нужно будет добавить activitycontinuationсвойство в apple-app-site-associationфайл json. developer.apple.com/library/ios/documentation/UserExperience/…
Деви,

3

У меня ушло около дня, чтобы понять это. Проблема, с которой я столкнулся, заключалась в том, что не загружались обновленные профили обеспечения в XCode (после этого я также перезапустил XCode).

(Настройки> Учетные записи> Просмотреть подробности> Загрузить все)


3

Вы можете проверить универсальные ссылки в симуляторе

Из Руководства по программированию поиска приложений: Поддержка универсальных ссылок


6
Есть у кого-нибудь универсальные ссылки для работы в симуляторе? Я пробовал бесчисленное количество раз, но ничего не получалось. Однако он работает на реальном устройстве с теми же потоками.
Тони

Я тоже не смог это проверить. Попытки заставить Safari активировать универсальные ссылки в симуляторе оказались тщетными, несмотря на то, что он правильно работает на физическом устройстве.
Albert Bori

Мне тоже не удалось заставить их работать в симуляторе. @AlbertBori, у тебя это сработало?
chib

Я почти уверен, что они не работают в симуляторе . Я знаком со всеми остальными ловушками, и я никогда не смогу заставить их работать в симуляторе ..
Fattie

3

Через два дня у меня выяснилось, что эти ссылки (из ветки)

приложения: xxxx.app.link

работать только после Архивации (тоже Ad-hoc) приложения и установки на телефон.


3

Если вы размещаете свой серверapple-app-site-association на Firebase , обязательно поместите его в /.well-known/подкаталог! Похоже, что Xcode сначала запрашивает этот URL-адрес, и в случае успеха не пытается запросить apple-app-site-associationв корневом каталоге. По какой-то причине инженеры firebase заставили размещенные веб-сайты автоматически отвечать /.well-known/apple-app-site-associationпустым (но правильно сформированным) файлом ассоциации, который переопределяет ваш собственный, и вы не понимаете, почему ничего не работает!


2
В заключение! Большое спасибо. Это где-то написано? Firebase должна где-то документироваться.
Berkay Turancı

2

Перейдите на developer.apple.com и отредактируйте один из ваших профилей распространения. На странице редактирования вы можете открыть всплывающее окно для идентификаторов приложений, в котором будет отображаться список имен ваших приложений, а в круглых скобках () после имени приложения будут показаны все ваши настоящие идентификаторы приложений . В некоторых приложениях в качестве префикса может быть указан идентификатор вашей команды, а в некоторых нет . Убедитесь, что вы используете именно то, что вы видите во всплывающем меню внутри (), и поместите его в поле appID с данными о привязке яблочного приложения-сайта. У меня была именно такая проблема с приложением и его универсальными ссылками.


2

Проблема для меня оказалась в apple-app-site-associationфайле. Согласно документации Apple, требуется только параметрappinks. Я добавил activitycontinuationпараметр, и он сработал.

{
  "activitycontinuation": {
    "apps": [
      "9JA89QQLNQ.com.apple.wwdc"
    ]
  },
  "applinks": {
    "apps": [],
    "details": [{
        "appID": "9JA89QQLNQ.com.apple.wwdc",
        "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*" ]
      }]
  }
}

3 года спустя мы нашли именно эту проблему. Добавление activitycontinuation- вот что исправило это для нас.
readyornot 04

2

На самом деле я не видел ту же самую комбинацию проблема / решение, которая заставила его работать для меня, так что можно добавить мое, если у кого-то такая же проблема!

Для своего приложения я использую настраиваемую схему URL-адресов (установленную в APP_TARGET > Info > URL Types ) и устанавливаю схему URL-адресов отсюда в консоли Firebase для соответствия, но все еще не работает.

Моя проблема заключалась в двух проблемах:

Следите за тем, чтобы установить флажок "Автоматически управлять подписью"

Если вы проверяете параметр Xcode «Автоматически управлять подписью», как и я, поскольку я просто пытался создать быстрое демонстрационное приложение, вам нужно убедиться, что используемый TeamID совпадает с идентификатором в вашей консоли Firebase. Первоначально я зашел в свою учетную запись разработчика Apple и скопировал идентификатор команды со страницы членства, но позже увидел, что фактический идентификатор, используемый Xcode, был другим. (Вы можете найти это в APP_TARGET > General > Signing > Signing Certificate.Для меня это выглядело так iPhone Developer: My Name (TEAM_ID)).

Приставьте свой TeamID к идентификатору пакета в типах URL

После того, как я убедился, что они совпадают в моей консоли Firebase и Xcode, моей следующей проблемой стал идентификатор для моей схемы URL. Обычно здесь используется идентификатор вашего пакета, но Firebase фактически добавляет ему идентификатор группы, который вы указали в консоли Firebase, поэтому мне также пришлось добавить его к идентификатору в разделе типов URL-адресов в Xcode.

После этих двух исправлений и повторной загрузки GoogleService-Info.plistфайла у меня не было проблем с открытием моих динамических ссылок.


2

После двух дней полного отчаяния, думаю, я наконец исправил это. Вот мое решение:

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

{
    "activitycontinuation": {
        "apps": [
            "YOUR_APP_PREFIX.de.company.app"
        ]
   },
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "YOUR_APP_PREFIX.de.company.app",
        "paths": ["/*"]
      }
    ]
  }
} 

Еще одна вещь, которую я испытал во время своей адской поездки, заключалась в том, что удаление приложения и перезапуск устройства, кажется, единственный способ принудительно обновить этот файл.


1

Для меня моя ошибка заключалась в том, что наш сайт перенаправляет www.domain.com на domain.com, поэтому из-за этого все www.domain.com/* не сработают. Надеюсь, это поможет.


1

Мне удалось протестировать универсальные ссылки в симуляторе iOS с помощью приложения «Календарь».

Я только что создал событие и добавил URL-адрес, который хотел протестировать, в поле события URL. Затем при просмотре созданного события вы можете просто нажать на URL-ссылку, и ваше приложение должно открыться.


Похоже, у меня это не работает, я все перепробовал, чтобы заставить их работать в симуляторе, но безрезультатно. Они нормально работают на реальном устройстве, но не идеальны для разработки / отладки. Я пробовал долго нажимать ссылку, а опции «Открыть в приложении» нет.
chib

1

Потратив день на попытки заставить это работать, перезагрузка телефона решила проблему.

Удаление / повторная установка приложения тоже не сработало.


1

Для ios13 появился новый формат - посмотрите здесь https://developer.apple.com/documentation/safariservices/supporting_associated_domains_in_your_app?language=objc

Я обновил свой файл, чтобы он выглядел так:

{
  "applinks": {
      "details": [
           {
             "appIDs": [ "ABCDE12345.com.example.app" ],
             "components": [
               {
                  "/": "/my-link/*",
                  "exclude": true,
                  "comment": "Matches any URL whose path starts with /my-link/ and instructs the system not to open it as a universal link"
               }
             ]
           }
       ]
   },
   "webcredentials": {
      "apps": [ "ABCDE12345.com.example.app" ]
   }
}

вам нужно добавить "exclude": trueк componentsобъекту, чтобы оно commentбыло правдой
скорнос

@skornos хорошее замечание. я исправлю свой ответ.
Анита

0

Для будущих читателей, которые найдут эту страницу ...

У меня была похожая ситуация. Однако в моей ситуации iOS10 работала в режиме AOK, и что бы я ни делал (увеличивать номера сборок, удалять / переустанавливать и т. Д.), IOS9, казалось, отказывался работать.

Я пришел к этому с iOS10, и мне нужно было поддерживать iOS9. В то время в документации здесь - https://developer.apple.com/library/content/documentation/General/Conceptual/AppSearch/UniversalLinks.html - четко указано, что файл может быть размещен в корне веб-сервера. (например /apple-app-site-association) или в хорошо известной папке (например /.well-known/apple-app-site-association). Поскольку я также поддерживаю Android, который также использует хорошо известную папку для аналогичного файла, я решил поместить туда обе.

При новой установке на iOS10 он явно запрашивает корневой файл, терпит неудачу, затем запрашивает хорошо известный файл и завершается успешно.

Для iOS9 он явно запросил корневой файл, не работает и больше ничего не делает.

Решение: если вы поддерживаете iOS9, поместите файл по адресу /apple-app-site-association.


0

В моем случае моя ошибка заключалась в том, чтобы поместить параметры запроса в пути:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAM_ID.BundleIdentifier",
                "paths": [ "/auth-ui/hub?target=confirm&*" ]
            }
        ]
    }
}

когда я удаляю '? target = confirm & *' из путей, он начинает работать

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.