【问题标题】:Mass local notifications swift 3大规模本地通知 swift 3
【发布时间】:2025-12-14 20:40:02
【问题描述】:

我有一个字典数组。字典包含不同条形的名称/经度/和纬度。

我想为我的应用中的每个栏创建基于位置的通知。

这是我正在使用的函数,但由于某种原因,它只为列表中的第一个栏创建通知。其余的都不起作用。

知道这有什么问题吗?我不确定 content.badge 的用途。

// 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
                }
            }
        }
    }
}

【问题讨论】:

    标签: ios swift notifications local


    【解决方案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()
    }
    

    【讨论】: