iOS 12.1.2 branch.io Универсальные ссылки открывают приложение, но данных нет - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь реализовать глубокие ссылки через branch.io для приложения iOS (Swift 4.2). Я интегрировал iOS SDK точно так, как указано в документации по филиалам. Чтобы проверить интеграцию, я запустил скрипт проверки универсальной ссылки branch.io, и он успешно прошел.

Что не работает для универсальных ссылок: Нажатие на ссылку в «Заметках» или «Сообщения» открывает приложение, но данные не передаются. Branch просматривает полностью пустой URL (example.app.link?%24identity_id=611647344982868361) вместо (example.app.link/hj86HlvvMk2?%24identity_id=611647344982868361) при просмотре журналов отладки. Это то же самое, что просто открыть приложение вручную без ссылки. Данные недоступны с помощью отложенной функции Deeplink.

Использование схем URI вместо универсальных ссылок: Если я отключу Universal Links через панель настроек ссылки branch.io, то все URL-адреса будут открыты в браузере, без запроса на открытие приложения. Однако, когда я открываю приложение вручную, данные Deeplink доступны при запуске (с помощью функции отложенной ссылки).

Другие попытки: Добавление $uri_redirect_mode: 2 к данным ссылки для принудительного открытия приложения на самом деле ничего не изменило. Единственное отличие состоит в том, что для схем URI в Safari отображается ошибка перед перенаправлением на $fallback_url. Я также попытался переустановить приложение заново, очистив кеш Safari и куки, но безуспешно.

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

Ни один из методов не может открыть приложение с доступными немедленно данными диплинка. Есть ли другие варианты сделать эту работу?

ОБНОВЛЕНИЕ : URI и универсальные ссылки были отдельными проблемами. Мы получили URI для работы, дважды проверив нашу схему URI (это было неверно). Для универсальных ссылок может быть небольшая ошибка в документации Branch для Swift 4.2. Смотрите мой ответ для решения.

ОБНОВЛЕНИЕ 2019-02-05 : обновлена ​​документация по филиалам для Swift 4.2. Все работает хорошо.

Ответы [ 2 ]

0 голосов
/ 18 января 2019

ОБНОВЛЕНИЕ 2019-02-05: Документация филиала теперь актуальна для Swift 4.2.


ОРИГИНАЛЬНЫЙ ОТВЕТ:

Хорошо, мы нашли решение, что универсальные ссылки не работают. Я считаю, что документация Филиала не обновлена ​​для Swift 4.2. При обработке универсальных ссылок протокол func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) должен использовать [UIUserActivityRestoring] вместо [Any] для параметра restorationHandler. Смотрите ниже:

Текущая ветвь документации (не работает):

func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}

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

Коррекция (рабочая):

func application(_ application: UIApplication, 
                 continue userActivity: NSUserActivity, 
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
  // handler for Universal Links
  Branch.getInstance().continue(userActivity)
  return true
}
0 голосов
/ 10 января 2019

Джеки из филиала здесь.

Можете ли вы пройти через следующие контрольные точки?

Если вы по-прежнему видите, что данные ссылок не передаются, вы можете отправить свой идентификатор приложения, ссылки (ссылки), которые вы используете в Branch, по электронной почте на Integration@branch.io, чтобы наша команда могла совершить глубокое погружение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...