Быстрые места: огонь каждые X метров уведомление

Я надеюсь, что вы, ребята, можете помочь мне, потому что мой мозг горит от мысли: D.
Я хочу уведомить пользователя, например, каждые 100 метров. Но я не хочу менять обновление службы определения местоположения. Есть простой способ, но я не в порядке с ним. Я думаю, что есть лучшее решение.
То, что я делаю до сих пор (это псевдо-код!) Это называется в didUpdateLocation

 //We want notify User but only 5 times during the movement
        if distanceToReport < settedDistance {
            //Store that first Notification is fired
            if !firstNotificationFired {
                self.notifyUser(report: report)

            }
            if firstNotificationFired && distanceToReport <= 400 {
                //Store that second Notification is fired
                self.notifyUser(report: report)
            } else if secondNotificationFired && distanceToReport <= 300 {
                //Store that third Notification is fired
            } else if thirdNotificationFired && distanceToReport <= 200 {
                //Store that fourth Notification is fired
            } else if fourthNotifiationFired && distanceToReport <= 100 {
                //Store that fifth Notification is fired
            }


        }

Есть ли гораздо лучший и эффективный способ, чем этот? Или есть какие-то математические или алгоритм, который может помочь?

Пока спасибо.

1 ответ

  1. Одним из способов очистки кода было бы поместить расстояние в переменную и увеличить при каждом уведомлении, должно сократить операторы if.

    if notificationShouldFire && distanceToReport <= targetDistance {
       self.notifyUser(report: report)
       targetDistance += targetDistance + 100
       notificationShouldFire = true
       // could also use count variable rather than a variable for each notif.
       firedNotifications += firedNotifications + 1
    }
    
    // your if statement would change slightly
    if firedNotifications <= 5 && distanceToReport <= targetDistance {
       // increment and notify here
    }
    

    Я думаю, что вы можете сделать его немного более эффективным, если хотите, но то, что у вас есть, это не конец света.