Попытка настроить перенаправление на приложение с помощью Universal Links, но ничего не происходит

Таким образом, у меня есть следующая ассоциация apple-app-site-association на моем сайте, расположенная на stage.domain.com/apple-app-site-association:

{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "TEAMID.application.id.goes.here",
        "paths": ["*"]
      }
    ]
  }
}

Я установил свои ассоциированные домены как applinks:stage.domain.com

Но когда я пытаюсь перейти на stage.domain.com в Safari, он не регистрируется и я остаюсь в браузере. Есть что-то еще, что мне нужно сделать? Я знаю, что мне нужно в конечном итоге настроить маршрутизацию в приложении для разных страниц, но это не является необходимым требованием? Он должен просто подтянуть приложение без каких-либо других? Или я чего-то не хватает?

Кроме того, мой обработчик восстановления:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {

    print("DEBUG GETS TO NSURL?")

    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
        let url = userActivity.webpageURL

        else
    {return false}

    print("DEBUG GETS TO URL")

    return true
}

Это не зависит от условий отладки.

Ответы

Ответ 1

Вы уже прошли здесь шаги отладки: https://developer.apple.com/library/content/qa/qa1916/_index.html

Я нашел инструмент проверки, связанный на шаге 1 раздела диагностики вышеупомянутой ссылки, весьма полезен. Он проверит правильность настройки файла ассоциации приложений и часто дает некоторые рекомендации, если вы этого не сделали.

Обновить:

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

В частности:

  • Если пользователь открывает универсальную ссылку и переносится в приложение, есть ярлык в правом верхнем углу строки состояния, который, если отображается, переводит пользователя в веб-версию ссылки, а также отключает универсальную ссылку, открывающую приложение, Чтобы снова включить универсальную ссылку для вашего приложения, вы можете вставить ссылку в приложение, например "Заметки" или "Сообщения", долго нажимать на него и выбрать "Открыть в... [ваше приложение]".

  • Другая возможность заключается в том, что ваша веб-страница в Safari пытается открыть универсальную ссылку через Javascript или завернуть в перенаправление. Ни один из них не будет работать.

В этом сообщении в блоге есть более подробные сведения, а также некоторые другие проблемы с универсальной связью: https://medium.com/mobile-growth/the-things-i-hate-and-you-should-know-about-apple-universal -links-5beb15f88a29

Дополнительное обновление:

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

Вы можете проверить это сами:

  1. Установите приложение Twitter
  2. Вставьте URL-адрес в твиттер в адресной строке Safari. Обратите внимание, что он открывает страницу твита в браузере. Нажмите баннер с помощью ссылки "Открыть" в верхней части страницы, чтобы открыть его в приложении Twitter.
  3. Откройте Safari снова. Теперь Google слово "твит" или иначе найдет страницу, на которой есть ссылка на твит (вместо ввода или вставки URL-адреса в адресной строке Safari)
  4. Обратите внимание, что при нажатии ссылки открывается приложение Twitter вместо страницы в Safari.

Ответ 2

Если при доступе к вашему сайту на нем отображается баннер универсальных ссылок, например: https://i.stack.imgur.com/ZSQGK.jpg, вы делаете это правильно.

Если вы нажмете "Открыть", он должен открыть приложение. Затем, если вы попытаетесь щелкнуть ссылку на свой сайт ПОСЛЕ того, как вы открыли приложение через баннер, iOS должен сохранить ваши настройки и открыть приложение напрямую, вместо того, чтобы перейти в Safari с помощью баннера сверху.

Как работает Universal Linking, он не позволяет открывать приложение по ссылкам без какого-либо согласия пользователя. Таким образом, пользователь должен дать разрешение, по крайней мере, один раз, прежде чем приложение откроется автоматически.

Ответ 3

Обычно универсальные ссылки заканчиваются на ://, поэтому попробуйте использовать этот URL для вашего примера: applinks://stage.domain.com.

Ответ 4

Вы пробовали под кодом в своем приложении: info.plist

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>stage</string>
        </array>
    </dict>
</array>

Затем откройте сафари типа " stage:// " и нажмите Go. Он перенаправит вас в ваше приложение.

Ответ 5

Иногда это случалось. Просто перезагрузите устройство.