#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");
}