2017-04-01 2 views
1

Ich habe eine Reihe von Wörterbüchern. Die Wörterbücher enthalten Namen/Länge/Breite für verschiedene Balken.Mass lokale Benachrichtigungen swift 3

Ich möchte standortbasierte Benachrichtigungen für jede Leiste in meiner App erstellen.

Hier ist die Funktion, die ich verwende, aber aus irgendeinem Grund erstellt es nur eine Benachrichtigung für den ersten Balken in der Liste. Der Rest funktioniert nicht.

Irgendeine Idee, was ist daran falsch? Ich bin mir nicht sicher, wofür content.badge ist.

// Register location based notifications for all bars 
func setupNotifications(){ 
    if(CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedAlways || CLLocationManager.authorizationStatus() == CLAuthorizationStatus.authorizedWhenInUse){ 


     for i in 0...(allBars.count - 1){ 
      let lat = (allBars[i])["Latitude"] as? Double 
      let long = (allBars[i])["Longitude"] as? Double 
      let name = (allBars[i])["Name"] as! String 

      let region = CLCircularRegion(center: CLLocationCoordinate2D(latitude: lat!, longitude: long!), radius: 60, identifier: "\(name)") 

      region.notifyOnEntry = true 
      region.notifyOnExit = false 

      let trigger = UNLocationNotificationTrigger(region: region, repeats: true) 
      let content = UNMutableNotificationContent() 
      content.title = "Rate \(name) in the app!" 
      content.badge = 1 
      content.sound = UNNotificationSound.default() 

      let request = UNNotificationRequest(identifier: "LN\(name)", content: content, trigger: trigger) 
      UNUserNotificationCenter.current().add(request) {(error) in 
       if let error = error{ 
        print("Need notification permissions... \(error)") 
       } 
       else{ 
        //success 
       } 
      } 
     } 
    } 
} 

Antwort

1
import UserNotifications 

class ViewController: UIViewController,UNUserNotificationCenterDelegate { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    print("UNUserNotificationCenter") 

    UNUserNotificationCenter.current().requestAuthorization(options: [.sound,.alert,.badge], completionHandler: { didallow, error in 

    }) 
} 

@IBAction func btn(_ sender: UIButton) { 
    let content = UNMutableNotificationContent() 

    content.title = "the 5 sec are up" 
    content.subtitle = "they are up now" 
    content.body = "the 5 sec are realy up now" 
    content.badge = 1 

    let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5.0, repeats: false) 

    let request = UNNotificationRequest(identifier: "time done", content: content, trigger: trigger) 

    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil) 
} 

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { 
    print("Handle push for foreground") 

    print("\(notification.request.content.userInfo)") 
} 


func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) { 
    print("Handle push for background or close") 

    print("\(response.notification.request.content.userInfo)") 

    completionHandler() 
} 
Verwandte Themen