2017-03-10 5 views
0

Ich habe eine Benachrichtigung, die gut mit nur einem Zeitelement funktioniert. Ich muss meine Benachrichtigung zeigen: 22:00 Uhr und 22:30 Uhr. Wie kann ich das machen? Bitte sagen Sie mirWiederholen von Benachrichtigungen Swift 3

Mein Code:

NotificationManager.swift:

import UIKit 
import UserNotifications 

class NotificationManager 
{ 
static let shared = NotificationManager() 
let center = UNUserNotificationCenter.current() 

func registerNotifications() 
{ 
    center.requestAuthorization(options: [.sound,.alert], completionHandler: {(granted, error) in }) 
} 

func addNotificationWithCalendarTrigger(hour: Int, minute: Int) 
{ 
    let content = UNMutableNotificationContent() 
    content.title = "Hi" 
    content.body = "It,s new notification!" 
    content.sound = UNNotificationSound.default() 

    var components = DateComponents() 

    components.hour = hour 
    components.minute = minute 

    let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: true) 
    let request = UNNotificationRequest(identifier: "calendar", content: content, trigger: trigger) 

    center.add(request) { (error) in 
     //handle error 
    } 
} 
} 

ViewController.swift

import UIKit 

class ViewController: UIViewController 
{ 
override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    timeForNotifications() 
} 

override func didReceiveMemoryWarning() 
{ 
    super.didReceiveMemoryWarning() 
} 

func timeForNotifications() 
{   
    NotificationManager.shared.addNotificationWithCalendarTrigger(hour: 22, minute: 00) 
} 

} 
+0

Sie nie den Delegaten setzen center.delegate = self auch nicht vergessen, UNUserNotificationCenterDelegate für die Klasse zu setzen – t1ser

Antwort

0

vielleicht ein bisschen spät, aber ich denke, das ist, was Sie suchen zum. Sie können die Meldung eingestellt um 10:00 Uhr mit dem folgenden Code zu zeigen:

var components = DateComponents() 

components.hour = 22 
components.minute = 00 

let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: true) 
let request = UNNotificationRequest(identifier: "calendar", content: content, trigger: trigger) 

Was ich immer tun ersetzen Komponenten mit Datum, aber ich glaube, Ihre Wahl als gut funktioniert.

var date = DateComponents() 
date.hour = 22 
date.minute = 00 
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true) 

Hoffe das hat dir geholfen!