每日通知Swift 3

时间:2017-01-22 04:28:58

标签: ios swift notifications ios10

我正在尝试弄清楚如何在没有用户输入的情况下每天在特定时间(比如早上8点)发送一次通知,并使用新的UNMutableNotificationContent而不是弃用UILocalNotification而不使用用户输入触发它而不是时间。所有解释如果发现是旧的,不包括ios 10和swift 3。

到目前为止我有什么。

ViewController.swift中的授权通知:

override func viewDidLoad() {

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

Notification.swift

let localNotification = UNMutableNotificationContent()
//    localNotification.fireDate = dateFire
    localNotification.title = "title"
    localNotification.body = "body"
    localNotification.badge = 1
    localNotification.sound = UNNotificationSound.default()

我知道我必须设置一个触发器和请求,但我不确定如何让它工作。

2 个答案:

答案 0 :(得分:0)

请查看本教程 - Hacking with swift Notification center

您需要的是日期组件部分。

{{1}}

查看教程了解更多信息。它是用swift 3 iOS 10编写的。Here's github repo同样的。

答案 1 :(得分:0)

第一步:

import UserNotifications

判断用户是否允许通知

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) {
granted, error in
    if granted {
        // determine whether the user allows notification
    }
}

第二步:

创建通知

// 1. create notification's content
let content = UNMutableNotificationContent()
content.title = "Time Interval Notification"
content.body = "My first notification"

// 2. create trigger
//custom your time in here
var components = DateComponents.init()
components.hour = 8
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: false)

// 3. send request identifier
let requestIdentifier = "com.xxx.usernotification.myFirstNotification"

// 4. create send request
let request = UNNotificationRequest(identifier: requestIdentifier, content: content, trigger: trigger)

// add request to send center
UNUserNotificationCenter.current().add(request) { error in
    if error == nil {
        print("Time Interval Notification scheduled: \(requestIdentifier)")
    }
}

您可以在Apple Documentation

找到更多信息