2016-12-01 9 views
0

Я создал простое приложение на основе геосферы, чтобы отслеживать перемещение людей, входящих и выходящих из геообъекта, и я пытаюсь отправить уведомление об этих событиях, но, похоже, не может его правильно реализовать.Как реализовать локальные уведомления с использованием геозонности?

Я бы очень признателен за объясненный пример кода, который будет отображаться в контроллере представления и делегировании приложения.

P.s Мои знания о быстром несколько ограничены, но я понимаю большинство аспектов, необходимых для этого приложения. Спасибо за любую помощь!

Edit:

Это моя функция для создания уведомлению, которое я считаю правильным.

func scheduleNotification() { 
    let centre = CLLocationCoordinate2DMake(51.364730, -0.189986) 
    let region = CLCircularRegion(center: centre, radius: 150, identifier: "SGS") 
    region.notifyOnEntry = true 

    let trigger = UNLocationNotificationTrigger(region: region, repeats: true) 

    let enterContent = UNMutableNotificationContent() 
    enterContent.title = "Enter" 
    enterContent.body = "Entered premesis" 
    enterContent.sound = UNNotificationSound.default() 

    let enterRequest = UNNotificationRequest(identifier: "enterNotification", content: enterContent, trigger: trigger) 

    UNUserNotificationCenter.current().removeAllPendingNotificationRequests() 

    UNUserNotificationCenter.current().add(enterRequest) {(error) in 
     if let error = error { 
      print("Error: \(error)") 
     } 
    }  
} 

Я добавил это к didFinishLaunchingWithOptions:

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) {(accepted, error) in 
     if !accepted { 
      print("Notification access denied.") 
     } 
    } 

Я знаю, что нужно вызвать функцию, но я не знаю, где сделать это так, что она вызывается, когда геозоны осталось. Также я не уверен, как вызвать его из контроллера представления, как в AppDelegate.

Извините, если я глуп, но спасибо за помощь!

+1

Пожалуйста, напишите, что вы пробовали и что не работает. – shallowThought

ответ

2

Вам необходимо реализовать функции делегата didEnterRegion и didExitRegion. В рамках реализации этих методов вы сможете публиковать локальные уведомления.

Если вы уже это сделали, убедитесь, что приложение имеет надлежащую возможность для отправки уведомлений и что вы зарегистрировали правильные параметры уведомлений для приложения в делегате приложения.

У Ray Wenderlich есть хорошие tutorial on Geofencing и here's Apple's guide на локальные и удаленные push-уведомления.

+0

поэтому вместо использования дополнительной функции я должен просто поместить этот код в файл didEnterRegion/didExitRegion? – Haris

+0

Справа. didEnterRegion и didExitRegion автоматически вызывается диспетчером местоположений, когда он замечает, что устройство входит или выходит из одной из заданных областей. Поскольку вы хотите отправить локальное уведомление, было бы разумно создавать и отправлять их оттуда. – tww0003