У меня есть программа в SWIFT, которая обнаруживает, что маяк или несколько маяков находятся за пределами допустимого диапазона и на основе , что он будет выполнять что-то вроде сохранения некоторых данных в базе данных и т. Д. Все работает хорошо , однако я получаю много ложным положительным способом, который срабатывает «didExitRegion», и несколько секунд спустя «didEnterRegion» срабатывает, пока я не был перемещен и т. д.
Я знаю, что это имеет много общего с настройкой маяков и их качеств, но в это время я придумал альтернативное решение.
Итак, я решил использовать NSTimer, чтобы узнать, действительно ли я вне диапазона, или это просто ложный позитив, который я получаю? поэтому, когда у вас срабатывает ExitRegion, я начинаю NSTimer в течение 60 секунд. Если 60 секунд вверх и didEnterRegion не загорелся, тогда я знаю . Я действительно вне диапазона и выполняю любую экономию данных, которую мне нужно делать. В противном случае, если didEnterRegion вызывается в течение 60 секунд, я предполагаю, что он был ложным и недействителен для nstimer и ничего не делает.Используйте NSTimer для лучшей проверки маяка
Все работает хорошо, пока я работаю с одним маяком. Проблема с таймером заключается в том, что несколько маяков выходят за пределы допустимого диапазона. позволяет сказать, что первый маяк выходит за пределы диапазона, поэтому didExitRegion загорается и запускает NSTimer . Пусть говорят, что спустя 20 секунд второй маяк выключен, и снова didExitRegion запускается, и снова запускается NSTimer. Теперь мой NSTimer это все рассинхронизировалась и в то время, вещи не работают правильно и NSTimer непрерывно начинают себя, когда 60 секунд вверх и т.д.
Так что мой вопрос, что работа вокруг этого решения? Как я могу сохранить синхронизацию моего nstimer, когда он вызывается снова, прежде чем он будет аннулирован? Есть ли лучший способ для этого решения? Опять же, я знаю, что маяки лучшего качества могут помочь, но это не вариант для меня в это время.