2016-10-05 4 views
0

Когда я запускаю глубокую ссылку (которая направляется в действие приложения) внутри пользовательских вкладок хрома, приложение закрывается. Пока не удалось выяснить причину. Я использую Branch.io для deeplinking.Хранение пользовательских вкладок при открытии deeplink через него

Ожидаемое поведение - это открыть активность, которая перенаправляется из ссылки.

Для больше детали:

  • Внутри моего приложения, есть активность А, я нажал на ссылку внутри Activity A
  • Чем эта ссылка открываются в Chrome CustomTabs по телефону launchUrl() от деятельности
  • Теперь, когда ссылка, которая была нажата от активности А на самом деле глубокого Link, из которых поведение браузера было, это открыть мою активность приложений B из браузера
  • Но когда эта ссылка открывает CustomChromeTab Мое приложение Закрывает, не заходя активность B по желанию
  • Наконец я не вижу никакой ошибки в LogCat
+0

Возможно, вы представите более подробную информацию в своем вопросе? Кажется, что вы нажимаете на ссылку при навигации внутри пользовательской вкладки, и ожидаемое поведение для активности приложения должно быть запущено, но что-то не так. Является ли ссылка на другое приложение, отличное от того, на котором размещена пользовательская вкладка? Является ли активность пользовательской вкладки закрывающейся при нажатии ссылки, хост-приложение или приложение, которое является глубоко связанным? Можете ли вы увидеть какие-либо ошибки в logcat, когда приложение закрыто? – andreban

+0

@andreban Yup спасибо за комментарий, следующие детали помогут вам разобраться в моей ситуации: > Внутри моего приложения есть активность A, я нажал на ссылку внутри Activity A > Чем эта ссылка открывается в Chrome CustomTabs, вызвав launchUrl() из Activity A > Теперь эта ссылка, которая была нажата из Activity A, на самом деле является Deep Link, в отношении которой было поведение браузера, она открывает мою активность приложения B из моего браузера > Но когда эта ссылка открывается CustomChromeTab Мое приложение Закрывается, без перейдя в Activity B по желанию.> Наконец, я не вижу ошибки в logcat –

+0

Спасибо за подробности. Я бы рекомендовал обновить исходный вопрос с помощью этих деталей, чтобы помочь другим людям, читающим вопрос, не пропуская комментариев. Что касается deeplink, использует ли она схему http/https или использует пользовательскую схему? – andreban

ответ

1

EDIT: это на самом деле может быть из-за ошибки мы имели в последней версии SDK отделения на Android. Не могли бы вы подтвердить, что используете v2.4.4 или выше?

Alex from Branch.io здесь: рад слышать, что вы находите полезные ссылки в Отделе! Филиал фактически не поддерживает глубокую привязку внутри приложения, которая звучит как то, что вы пытаетесь реализовать. Вам будет лучше использовать стандартные механизмы для перемещения между действиями в приложении и полагаться на Branch для обработки пользователей, выходящих извне.

+0

Рад за ваш ответ, я использую ** Branch SDK Android v2.3.0 **. И я согласен, что ветка будет обрабатывать пользователей, поступающих извне приложения, поэтому я использую ChromeTabs (работаю в качестве браузера), чтобы открыть все ссылки, в которых связные ссылки являются подмножеством.Таким образом, для ссылок, отличных от ветви, работают нормально внутри пользовательских вкладок chrome, но закрытие приложения происходит только с помощью ветки, вместо предыдущего поведения в браузере Chrome или в любом другом браузере открывалась желаемая активность приложения. –

+0

Ahhh. Посмотрите, помогает ли обновление до последней версии SDK. Если нет, мы можем пойти оттуда –

+1

Я обновил библиотеку от версии 2.3.3 до 2.4.4, но проблема продолжается. По-видимому, я решил свою проблему путем глубокого копания в потоке кода Branch.java и получил, что ранее инициализированный сеанс каждый раз использовался вместо нового сеанса. Я решил свою проблему двумя шагами. Итак, во-первых, путем активации операции B (как было сказано выше) из обращения к ссылке нажмите и обработайте ее самостоятельно, не разрешая ее запускать в браузере или chromeTabs и, во-вторых, используя ** branch.resetUserSession(); ** до того, как метод initSession() решил мою проблему и все теперь работает нормально. –