Разработка на 1С-Битрикс Михаил Базаров
Блог-note

Обновить страницу Inapbrowser в приложении Apache Cordova, при выходе из фона

Просмотров: 1880
Задача: Мобильное приложение, созданное на Apache Cordova должно перезагрузить текущую страницу, открытую с помощью плагина inappbrowser.
Обновить страницу Inapbrowser в приложении Apache Cordova, при выходе из фона
Обновить страницу Inapbrowser в приложении Apache Cordova, при выходе из фона

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

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

Реализация события onResume в Cordova

В Apache Cordova есть встроенное событие resume, которое срабатывает, когда приложение возвращается из фонового режима. Мы будем использовать его.

На сайте, который загружается в приложение, необходимо добавить скрипт, который просто обновит текущую страницу по событию resume. Скрипт подключается глобально на всем сайте, чтобы он был доступен на всех страницах.

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
	document.addEventListener("resume", onResume, false);
	function onResume() {
	     setTimeout(function() {
		location.reload;
	    }, 2);
        }
}

Здесь мы отслеживаем готовность устройства с помощью onDeviceReady, который существует только в мобильном приложении и не сработает, если сайт будет открыт в обычном браузере. С использованием таймаута в две миллисекунды мы обновляем страницу.

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

Проброс API Cordova в InAppBrowser

Обратите внимание: все API Apache Cordova не будут работать внутри InAppBrowser просто так. Для того чтобы "пробросить" работу всех плагинов и событий Cordova в InAppBrowser, не забудьте установить соответствующий плагин.

cordova plugin add cordova-plugin-remote-injection

Также открытие сайта внутри приложения должно быть выполнено в режиме _self. Пример открытия сайта из одного из реальных проектов, код в index.html:

document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {
    ref = cordova.InAppBrowser.open(
        'https://ВАШ_САЙТ_ПРИЛОЖЕНИЕ.ru/',
        '_self',
        'location=no, zoom=no, toolbar=no'
    );
}
Услуги

Стоимость разработки на 1С-Битрикс

Стоимость разработки сайта зависит от объёма и сложности проекта. Ниже приведены ориентировочные цены, как правило не выходят за обозначенные рамки. Срок разработки зависит от сложности проекта: как правило называю сроки с запасом.

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

Включено в стоимость разработки

В цену уже заложено всё, что нужно для легального и быстрого запуска. Доплачивать за базовые вещи не придётся.

  • Лицензия и модули

    Лицензия на «1С-Битрикс» нужной редакции, дополнительные модули и видео-инструкции по работе с готовым проектом.

  • Скорость и SEO

    Оптимизация кода и сервера под быструю загрузку, базовая SEO-оптимизация и добавление сайта в поисковые системы.

Блог-note

Заметки по 1С-Битрикс