iOS 9 Универсальные ссылки Кнопка «Вперед» навсегда прерывает глубокие ссылки, пока я не удалю настройки телефона

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

Я использую универсальные ссылки для глубинных ссылок. Два примера использования:

1.) Браузер Safari / Chrome на iPhone с установленным моим приложением: когда я нажимаю ссылку на моем веб-сайте на своем iPhone, я привязываю их к моему приложению, если оно установлено на их телефоне.
2.) С моим приложением установлено, мое приложение запущено, но с использованием встроенного UIWebView. В моем приложении также есть встроенный UIWebView, когда вы нажимаете кнопку, он связывает их где-нибудь в приложении.

После глубокой ссылки на приложение на панели навигации появятся две кнопки. Кнопка «Назад» (вверху слева) и кнопка «Вперед» (вверху справа).

Моя проблема

Если пользователь нажимает кнопку «Вперед» (вверху справа), он перенаправляет их на мою веб-страницу, а затем навсегда нарушает мою глубокую ссылку, так что в любое время в будущем, когда пользователь нажимает на эту ссылку на глубокую ссылку, он всегда переходит на мою веб-страницу вместо прямых ссылок на приложение (что было изначальным намерением). Как я могу предотвратить это? Меня беспокоит то, что в моем приложении есть кнопки закрытия в правом верхнем углу, и если пользователь пытается нажать кнопку закрытия, он может случайно нажать кнопку «Вперед» и навсегда прервать глубокую привязку. Я пробовал очищать кеши браузеров, пытался удалить и переустановить приложение. Но ничто не «исправит» глубокие ссылки после того, как они были навсегда отключены кнопкой «Вперед». Единственный способ заставить его снова работать - это выполнить полный сброс устройства и стереть все содержимое и настройки.

Вот изображение кнопок "Назад" и "Вперед" после глубокой ссылки на приложение.

Разница между моим вопросом и похожими вопросами по SO:

Аналогичный вопрос SO Но здесь они говорят, что Пользователь может долго нажимать на «универсальную ссылку», и всплывает список действий с просьбой «открыть». Я пробовал это для вышеупомянутого случая 1.), и мое приложение не отображается в параметрах. См. Прикрепленный снимок экрана ниже. И это вообще не работает для случая 2 выше). Как получить универсальную ссылку для работы с iOS WebViewController? Обязательно ли использовать SafariViewController? Я не хочу использовать SafariViewController в своем приложении в этом случае, потому что я не хочу иметь ту верхнюю панель навигации, которая есть у SafariViewController.

введите здесь описание изображения


person LampShade    schedule 11.05.2016    source источник
comment
Я думаю, вы можете вытащить содержимое веб-сайта, чтобы открыть баннер с надписью «открыть в ... приложении», а затем нажать кнопку «Открыть», чтобы вернуться в приложение. ОС запомнит этот выбор, как и в случае с навигационной ссылкой строки состояния. РЕДАКТИРОВАТЬ: Я не уверен, что вы можете предотвратить это, универсальные ссылки должны работать как в браузерах, так и в собственных приложениях, и выбор пользователя будет соблюден. Хотя я могу ошибаться в этом.   -  person Zoltán Lippai    schedule 11.05.2016
comment
Я понимаю, что уважаю выбор пользователя. Но UI / UX для кнопки «Вперед» ужасен. Поместите его так близко к кнопке «Закрыть» для большинства приложений (вверху справа). То есть вы говорите, что универсальные ссылки должны работать в собственном приложении UIWebView? Мои почему-то не пытаются понять, почему ... Я не хочу использовать SafariViewController, потому что не хочу, чтобы отображались верхняя и нижняя панели навигации.   -  person LampShade    schedule 11.05.2016


Ответы (2)


Вы абсолютно правы: кнопка "Вперед" - это ужасный UI / UX. Это один из серьезных недостатков универсальных ссылок, выявленных в этом блоге. опубликовать. Невозможно отключить кнопку «Вперед», и как только она срабатывает, вы облажались.

Самый простой способ снова включить универсальное связывание после его отключения - это долгое нажатие на ссылку. Но это не сработает, если ваша ссылка отключена системой на основании других критериев (подробнее ниже). Лучший способ получить чистый снимок - вставить URL-адрес универсальной ссылки в приложение Stock Notes и попробовать удерживать его оттуда.

Чтобы ответить на несколько других ваших вопросов:

  • Универсальные ссылки действительно работают в UIWebView (согласно документации Apple). SafariViewController не нужен.
  • Универсальные ссылки в определенных ситуациях отключаются на системном уровне. Здесь есть список , но это главный из них, который приходит на ум как потенциально применимый в данной ситуации:

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

  • Второй пример изображения взят из Chrome. Универсальные ссылки должны работать (условно) в Chrome, но указывает ли ссылка на тот же домен, что и страница, которую вы уже загрузили? Если да, то поэтому вы не видите параметр Open in [app].
person Alex Bauer    schedule 12.05.2016

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

person hagi    schedule 13.05.2016