Запускается ли он при закрытии веб-приложения iOS?

#php #ios

#php #iOS

Вопрос:

Итак, пока я скучал, продолжая работать над своим PHP-проектом FastTalk, я застрял в функции offline и online. В основном, что я до сих пор делал, так это то, что всякий раз, когда клиент использует веб-приложение (сохраненное на рабочем столе), оно обновляет свою онлайн-строку в базе данных MySQL. Но дело в том, что я застрял в той части, когда клиент выходит из веб-приложения с помощью кнопки «Рабочий стол» или кнопки блокировки. В принципе, мне нужно знать, есть ли какой-либо способ запустить функцию PHP, когда клиент покидает веб-приложение. Даже если оно все еще работает в фоновом режиме. Вот несколько скриншотов, которые я попытался сделать в качестве примеров: введите описание изображения здесь


Редактировать: теперь я создал рабочую проверку JavaScript на 1 минуту, которая будет обновлять строку MySQL на true каждые 1 минуту, потому что JavaScript всегда будет запускаться, если клиент находится на веб-сайте. Но как я могу установить для строки значение false, когда клиент больше не использует интервал?

Ответ №1:

В файле AppDelegate.m

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

Надеюсь, это решит

Ответ №2:

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

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

Комментарии:

1. Другими словами, создайте цикл, а затем, когда он больше не запускается, переведите пользователя в автономный режим?

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

Ответ №3:

Наконец-то мне это удалось, используя JavaScript для проверки при выходе клиента.. Вот каким был бы код, если бы у кого-нибудь еще возникла такая же проблема:

 window.onbeforeunload = logout;
function logout() {
    $.get("index.php?offline");
}