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

Просмотров: 1596

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

Обновить страницу 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С-Битрикс:

Индивидуальная разработка магазина

от 350 000 руб. от 5-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 150 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 400 000 руб. от 5-ти недель

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 300 000 руб. от 2-х недель

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

Инфоресурс

от 300 000 руб. от 4-х недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

3D‑моделирование, визуализация

от 25 000 руб. от 3-х дней

По вашим фото, чертежам или описанию создадим 3D‑модели и отрендерим набор изображений для каталога товаров: общий вид, крупные планы и технические ракурсы или 360°‑обзор товара.