Можете ли вы применить ограничения по времени для уведомлений ibeacon при выходе из региона? - PullRequest
0 голосов
/ 09 марта 2020

Я внедрил iBeacon в приложение, чтобы оно на короткое время выводило его из приостановленного или отключенного состояния. Отправляется уведомление pu sh, в котором пользователю предлагается открыть приложение, если он sh.

Проблема в том, что когда пользователь выходит, затем снова входит в регион, отправляется другое уведомление. Например, в торговом центре пользователь может пройти мимо множества маяков (входить и выходить из регионов). Чего они, вероятно, не захотят, так это большого количества раздражающих уведомлений.

Есть ли способ, которым вы можете контролировать или ограничивать количество уведомлений, которые получает пользователь? Например временные ограничения? После получения уведомления пользователь не получит другое в течение 15 минут или 30 минут и т. Д. c?

Должно быть решение, так как я уверен, что Apple не хочет, чтобы пользователи получали много уведомлений что пользователи не хотят.

1 Ответ

0 голосов
/ 09 марта 2020

В iOS SDK нет встроенных инструментов, которые бы предотвращали отправку нескольких уведомлений за указанный c период времени. Но вы правы, что это очень распространенная проблема. Решение состоит в том, чтобы просто добавить немного логики программирования c.

. Вот типичный подход:

  1. Каждый раз, когда вы отправляете уведомление, запишите метку времени о том, когда вы отправили это. Сохраните это в постоянном хранилище телефона, поэтому даже если пользователь перезапустит приложение или перезагрузит телефон, у вас будет запись о том, когда было отправлено последнее уведомление.

    UserDefaults.standard.set(Date().timeIntervalSince1970, 
                              forKey: "lastNotificationSentTime")
    
  2. Перед вами отправить уведомление, проверьте, когда последний раз вы отправили уведомление. Если это было слишком недавно, не отправляйте новое уведомление.

    let lastNotificationTime = UserDefaults.standard.value(forKey: "last") as? Double ?? 0.0
    if Date().timeIntervalSince1970 - lastNotificationTime < 60.0 {
      print("Not sending notification because I just sent one in the last 60 seconds.")
    }
    else {
      // TODO: Send notification here
    }
    
...