Вопрос больше именно про js, нежели про конкретно про задачу определения телеграма.
В обычном случае на веб странице размещается код, который в случае установленного приложения (в нашем случае Телеграм) отправляет пользователя сразу в приложение.
<script type="text/javascript">
var url = "tg://resolve?domain=";
setTimeout(function() {
window.location = url;
}, 100);
</script>
Есть также код, который например откроет еще и страницу в браузере по истечению некоторого времени.
var now = new Date().valueOf();
setTimeout(function () {
if (new Date().valueOf() - now > 200) return;
window.location = "https://itunes.apple.com/";
}, 25);
window.location = "tg://resolve?domain=";
При этом, хотелось бы, чтобы работало строго что-то одно. То есть, либо открывается приложение, либо открывается страница (если приложение не установлено).
В связи с этим вопрос, можем ли мы как-то на js отслеживать следующие события:
- пользователь ушел со страницы, но не закрыл ее (какие-то ивенты, которые могут подсказать, что пользователь со страницей не взаимодействует никак). подразумеваем, что в этом случае пользователь открыл телеграм и он у него установлен
- есть это возможно, то замерять время, в течение которого пользователь не взаимодействовал со страницей (для случая, когда пользователь перешел в телеграм, и спустя какое то время, например несколько минут, вернулся снова в браузер на нашу страницу)
Ну то есть алгоритм, к примеру следующий:
если у пользователя телеграм установлен, то мы предполагаем, что вкладка с нашей страницей будет открыта, при этом действий никаких на странице совершаться не будет. причем какое то относительно длительное время, минимум секунд 20.
если телеграм не установлен, то пользователь либо закроет сразу страницу, либо будет с ней как то взаимодейтсвовать (скроллить, нажимать и т.п.)