Firebase динамическая ссылка не открывается приложение iOS

Я разработал и установил приложение iOS локально на своем устройстве.

И установили пользовательскую схему в info.plist как mydlink

Установите связанные домены как weel: applinks:<myapp>.app.goo.gl

Создана динамическая ссылка на firebase как:

https://<myapp>.app.goo.gl/?link=http://<mysite.com>/&ibi=<app bundle id>&ius=mydlink&ifl=https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id%3D<app store id>%26mt%3D8&pt=<app store id>

Когда я открываю или нажимаю на динамическую ссылку, он открывает страницу приложения в приложении "App Store" и не открывает само приложение, хотя оно установлено.

Что мне здесь не хватает?

22 ответа

Иногда мы допускаем ошибку в правах ассоциированных доменов. Там не должно быть пробелов

applinks:mydomain.page.link

У меня возникла проблема с использованием iOS 14, запущенной на устройстве в режиме отладки. Ссылка всегда перенаправляла меня в приложение AppStore, а не в мое приложение. Решением было включить «Разработка связанных доменов» в настройках iPhone> Разработчик> Разработка связанных доменов (нашел его здесь: /questions/54471442/universallink-perestaet-rabotat-na-ustrojstvah-ios-14/56544059#56544059 ).

Если вы используете iOS 9, будут использованы универсальные ссылки. Универсальные ссылки не работают во многих случаях, например:

  • Если вы используете симулятор
  • Если вы попытаетесь открыть ссылку непосредственно в Safari на устройстве (набрав ее в поле адреса в браузере)

Я потратил много времени, пытаясь это сделать, и никогда не мог заставить его работать на симуляторе надежным способом. В итоге я отправляю ссылку по электронной почте и открываю ее из папки "Входящие". Тогда это работает каждый раз!

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

На самом деле здесь может быть одна или несколько проблем для iOS 9+; Dynamic Links полагается на Apple Universal Links, чтобы открыть приложение на iOS 9+, и эти предложения направлены на решение проблем с Universal Links и Firebase и не имеют никакого отношения к SDK напрямую.

  1. Убедитесь, что файл ассоциации правильный на https: //app_id.app.goo.gl / apple-app-site-association - он должен выглядеть примерно так: https://maps.app.goo.gl/apple-app-site-association, но только с одним элементом в "деталях".
  2. Как указано в другом ответе, убедитесь, что идентификатор вашей команды правильно установлен в консоли Firebase.
  3. Если вы долго нажимали на ссылку, а затем нажали "Открыть в Safari" или вы нажали кнопку "goo.gl>" в строке состояния вашего приложения после того, как приложение открывается по универсальной ссылке, тогда iOS по умолчанию открывается Универсальные ссылки в Safari. Это можно исправить, потянув вниз открытую страницу в Safari и нажав "Открыть в приложении" (или аналогичный) на смарт-баннере.

Параметр "ibi" не участвует в открытии приложения после щелчка после установки на iOS 9+, но используется в предыдущих версиях, когда параметр "ius" не установлен.

Что касается iOS 8, можете ли вы попробовать запустить приложение и затем щелкнуть ссылку после установки приложения? В версиях до iOS 9 вы можете выполнить тестирование, скопировав / вставив ссылку в Safari.

https://firebase.google.com/docs/dynamic-links/ios

На всякий случай, если у кого-то еще есть эта проблема, обратите внимание на следующее

  1. Динамические ссылки теперь открываются в симуляторе, пожалуйста, скопируйте ссылку и вставьте ее на сафари в свой эмулятор.
  2. Chrome и safari открываются динамически по-разному, safari использует только универсальную привязку, в то время как Chrome использует как схему URL, так и универсальную привязку для открытия динамической ссылки. В конечном итоге вы должны попытаться получить динамическое открытие ссылок через универсальную ссылку в вашем приложении.

  3. Если ваша динамическая ссылка направляется в App Store вместо того, чтобы открывать приложение. проблема с универсальной ссылкой. Вы можете временно протестировать с помощью Chrome.

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

    • Убедитесь, что ваш идентификатор команды установлен правильно. В консоли firebase получите идентификатор своей команды из сведений о членстве на https://developer.apple.com/

    • Убедитесь, что ваш домен указан в вашем связанном домене, как показано ниже, без пробелов между доменами

    • Убедитесь, что связанный домен включен в вашей учетной записи разработчика Apple

    • если вы используете собственный домен, убедитесь, что вы добавили его в info.plist, как показано ниже.

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

Я испытал ту же проблему. Интересно, что если вы откроете динамическую ссылку в Chrome, приложение запустится напрямую и успешно. Но в Safari он всегда пытается открыть AppStore, хотя приложение установлено. Я понятия не имею, почему Safari не работает в этом случае.

Если ни один из описанных выше обходных путей не работает для вас, проверьте, добавили ли вы продолжение деятельности в связанных доменах или нет.

Динамические ссылки Firebase у нас не работали (на iOS9, где они используют универсальные ссылки) из-за проблемы в предположениях Firebase во время установки. Вот как мы исправили проблему в нашем приложении:

Firebase запрашивает ваш "Team ID" при добавлении приложения iOS в "Настройки проекта консоли Firebase" и предполагает, что ваш уникальный идентификатор приложения будет в формате TeamID.com.foo.bar

Однако в нашем случае это был НЕ наш уникальный идентификатор приложения. Когда я посмотрел наш профиль обеспечения (на developer.apple.com я нашел наш профиль обеспечения и нажал "изменить"), я увидел, что наш уникальный идентификатор приложения на самом деле был SomethingElse.com.foo.bar

Мне пришлось зайти в консоль Firebase и ввести это "SomethingElse" в том месте, где оно запрашивало идентификатор команды, даже если это НЕ ID нашей команды. После того, как я сделал это изменение, динамические ссылки Firebase начали работать правильно.

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

Обратите внимание, что для изменения идентификатора вашей команды может потребоваться значительное время. Вы можете увидеть, что изменение произошло, проверив соответствующую ссылку для вашего app_id ( https://app_id.app.goo.gl/apple-app-site-association).

У меня была такая же проблема с последними плагинами flutter sdk и firebase для динамических ссылок.

Пробовал все решения, единственное исправление - вручную вставить ключ com.apple.developer.associated-domains в файл ios/Runner/Running.entitlements

<key>com.apple.developer.associated-domains</key>
<array>
  <string>applinks:abc.page.link</string>
</array>

Привет, ребята, у меня есть отличный новый.

Я всегда слушаю, что это НЕВОЗМОЖНО проверить динамическую ссылку на симуляторе.

Но мы обнаружили это, и теперь МЫ МОЖЕМ проверить динамическую связь Firebase на симуляторе

/questions/1153113/dinamicheskaya-ssyilka-firebase-ne-rabotaet-na-ios/49382664#49382664

После интеграции динамических ссылок Firebase образец ссылки сразу начал работать на устройстве с iOS 8. Для устройств iOS 9 используется механизм универсальных ссылок, о чем упоминалось в других ответах. Это означает, что Apple необходимо обновить данные о правах, используемые для проверки двойной аутентификации с глубоким каналом. Согласно инструменту Apple App Search API Validation это может занять 48 часов.

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

Испытал ту же проблему.

Решение для меня было использовать

Идентификаторы -> Идентификаторы приложений -> 'my.app.ID' -> Префикс

Вы можете найти его по адресу: https://developer.apple.com/account/ios/identifier/bundle

Вместо 'DevelopmentTeam' номер из .pbxproj который я использовал и добавить его в Team ID для моего приложения iOS в консоли Firebase.

И не забудьте скачать и добавить новый.plist в проект.

Когда ссылка открыта в Safari, отображается кнопка "Открыть (название проекта)". Если эта кнопка нажата в течение 2-3 секунд, она попросит открыть ее в разных приложениях в первый раз. Она также показывает название вашего приложения. Если вы выбираете приложение, оно открывает ваше приложение. После этого, если вы снова откроете эту ссылку и нажмете кнопку в Safari, она всегда будет работать нормально.

Это решило проблему для меня.

Установите в своем проекте Xcode правильную форму для объявления связанного домена, вы должны включить ссылки на приложения:

После завершения настройки в Firebase и в проекте Xcode.

Добавьте ниже код внутри SceneDelegate вместо AppDelegate.

      func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
if let incomingURL = userActivity.webpageURL {
    print("Incoming URL is \(incomingURL)")
    let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in
        guard error == nil else{
            print("Found an error! \(error!.localizedDescription)")
            return
        }
        if let dynamicLink = dynamicLink {
            self.handleIncomingDynamicLink(dynamicLink)
        }
    }

}

У нас была похожая проблема. В нашем случае проблема заключалась в том, что программное обеспечение, которое генерировало электронные письма со ссылками, генерировало новую ссылку с перенаправлением 304 на нашу глубокую ссылку. Это не работало в Safari (но в Chrome).

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

Просто перепроверьте связанные домены, так как weel: applinks:.app.goo.gl является правильным, а динамическая ссылка легко работает в iOS Simulater, у меня нет никаких проблем.

У меня был такой же случай, и он исправлен с помощью определенного приложения ios на url-адресе deeplink;

Dynamic Links -> choose your link -> Edit

убедитесь, что вы определили приложение для ios;

Если вы уверены, что вся ваша конфигурация динамических ссылок в xcode верна, ссылка хороша, но она все равно открывает Appstore, вы можете попробовать этот трюк:

  1. Скопируйте ссылку и вставьте ее в приложение для заметок.
  2. Нажмите и удерживайте ссылку в заметках, чтобы увидеть контекстное меню.
  3. Если вы видите кнопку «Открыть в YourAppName » - попробуйте ее нажать.

У меня была проблема, что файл AASA был другим в местах

      [domain]/.well-known/apple-app-site-association
[domain]/apple-app-site-association

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

Для Firebase проверьте свой хостинг и найдите в общедоступном каталоге известную папку. В моем случае я мог бы просто удалить его, запустить firebase deploy --only hosting и пусть Firebase сгенерирует для меня все файлы AASA.

https://branch.io/resources/aasa-validator/

Убедитесь, что в консоли Firebase для вашего приложения установлен Team Id. (Затем вам нужно скачать и импортировать файл.plist).

Это решило проблему для меня.

Другие вопросы по тегам