Swift UI 2.0:如何设置此通知?
Posted
技术标签:
【中文标题】Swift UI 2.0:如何设置此通知?【英文标题】:Swift UI 2.0: How can to set up this Notification? 【发布时间】:2020-12-12 14:38:28 【问题描述】:首先,我从未在应用程序中使用过通知。我已经完成了教程,但整个过程让我感到困惑。
我创建了一个名为 Notify.swift 的 SwiftUI 文件。我希望用户能够设置通知时间,以提醒他们在指定时间执行任务,如下图所示:
您在图像中看到时间的地方,我创建了一个 DatePicker 来选择通知时间:
VStack
Button(action: )
HStack
DatePicker(" Select a time ....",
selection: $wakeup, displayedComponents: .hourAndMinute)
.font(.title2)
.accentColor(Color(.white))
.background(Color(.black))
.frame(width: .infinity, height: 40, alignment: .center)
.padding()
当用户点击创建按钮设置通知时,它应该在特定时间设置通知(一直,除非更改)。这是我需要做的,但不知道该怎么做:
如果通知时间设置为上午 8:30,如图所示,并且用户选择 CREATE,则设置通知并应发送给用户以执行任何任务,其中可能包含指定的声音和消息时间。
我了解有不同类型的通知:本地、用户、Apple 推送等,但我不知道这属于哪种类型或如何进行。
这是通知还是警报?
【问题讨论】:
您可以使用本地通知,本地通知允许您设置触发通知的时间。 @Cod3rMax 您是否建议我可以查看任何教程来执行此特定通知以设置触发通知的时间? 请注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,聊天材料和缩写 txtspk,恳求,你多久了被卡住、投票建议、元评论等。只需解释您的问题,并展示您尝试过的内容、预期的内容以及实际发生的情况。 【参考方案1】:您可以为此使用本地通知。在这里,我为您制作了一个触发通知的功能。首先,检查该时间是否早于当前时间。然后通知将在明天,我们将一天添加到我们的日期。您可以随意更改标题、正文。
确保将您的 DatePicker 包裹在按钮之外,否则当您单击 DatePicker 时它总是会触发通知。
func scheduleNotification() -> Void
let content = UNMutableNotificationContent()
content.title = "Your title"
content.body = "Your body"
var reminderDate = wakeup
if reminderDate < Date()
if let addedValue = Calendar.current.date(byAdding: .day, value: 1, to: reminderDate)
reminderDate = addedValue
let comps = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute], from: reminderDate)
let trigger = UNCalendarNotificationTrigger(dateMatching: comps, repeats: false)
let request = UNNotificationRequest(identifier: "alertNotificationUnique", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) (error) in
if let error = error
print("Uh oh! We had an error: \(error)")
您还需要为这样的通知请求权限:
func requestPush() -> Void
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) success, error in
if success
print("All set!")
else if let error = error
print(error.localizedDescription)
这里是你的按钮:
VStack
Button(action:
scheduleNotification()
)
Text("Save notification")
DatePicker("Select a time ....",
selection: $wakeup, displayedComponents: .hourAndMinute)
.font(.title2)
.accentColor(Color(.white))
【讨论】:
感谢@daviddev。当您说将 DatePicker 包裹在按钮之外时,我是否将其更改为您在上面显示的方式?而不是我拥有的那个?我的 DatePicker 在按钮内的 HStack() 中 - 我不再需要 HStack() 吗? 是的。目前在您的示例中,DatePicker 是 Button 内容的一部分。如果单击 DatePicker,按钮将触发操作。 您首先必须请求通知并且用户允许它。我添加了上面的代码 在调用 scheduleNotification() 之前.. 您可以在 onAppear() 或按钮内 让我们continue this discussion in chat。以上是关于Swift UI 2.0:如何设置此通知?的主要内容,如果未能解决你的问题,请参考以下文章
UILocalNotifcation 未在 swift 2.0 中触发
FacebookSDK(4.7) 自定义登录 UI 按钮 - Swift 2.0