UNLocationNotificationTrigger не запускается

Я пытаюсь создать уведомление, которое срабатывает при входе в регион с помощью UNNotificationLocationTrigger, Я реализовал это так:

let destination = //destination is added by user through interface//

let notification = UNMutableNotificationContent()
notification.title = "You've reached your destination"
notification.body = "Some"
notification.sound = UNNotificationSound.default()

let destRegion = CLCircularRegion(center: destination, radius: 1000.0, identifier: "DistanceToDestination")
destRegion.notifyOnEntry = true
let trigger = UNLocationNotificationTrigger(region: destRegion, repeats: false)

let request = UNNotificationRequest(identifier: "destAlarm", content: notification, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: { error in
     if error == nil {
           print("Successful notification")
     } else {
           print(error ?? "Error")
     }
})

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

РЕДАКТИРОВАТЬ: Для тех, кто читает комментарии. Это не работает снова. Так что это кажется довольно противоречивым. Если кто-то знает, если это ошибка или знает, как ее исправить, я был бы очень признателен.

1 ответ

Во-первых, вы должны вызвать locationmanager.startupdatinglocation Во-вторых, вы должны изменить триггер так, чтобы Repeats = true

Другие вопросы по тегам