Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Notifications Swift UI 2.0:如何设置此通知?_Notifications_Swiftui_Ios14 - Fatal编程技术网

Notifications Swift UI 2.0:如何设置此通知?

Notifications Swift UI 2.0:如何设置此通知?,notifications,swiftui,ios14,Notifications,Swiftui,Ios14,首先,我从未在应用程序中使用过通知。我做过辅导,但整件事让我困惑 我创建了一个名为Notify.swift的SwiftUI文件。我希望用户能够设置通知的时间,以提醒他们在指定时间执行任务,如下图所示: 在图像中看到时间的地方,我创建了一个日期选择器来选择通知的时间: VStack { Button(action: {}) { HStack { DatePicker(" Select a time ....",

首先,我从未在应用程序中使用过通知。我做过辅导,但整件事让我困惑

我创建了一个名为Notify.swift的SwiftUI文件。我希望用户能够设置通知的时间,以提醒他们在指定时间执行任务,如下图所示:

在图像中看到时间的地方,我创建了一个日期选择器来选择通知的时间:

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,如图所示,并且用户选择创建,则会设置通知,并应发送给用户,以便在指定时间执行任何任务,可能会发出声音和消息

我知道有不同类型的通知:本地、用户、苹果推送等,但我不知道这属于哪种类型,也不知道如何做


这是通知还是警报?

您可以使用本地通知。在这里,我为您创建了一个触发通知的函数。首先,检查该时间是否早于当前时间。然后通知将在明天发出,我们在日期上再加一天。你可以随意更改标题、正文

请确保将日期选择器包装在按钮外,否则当您单击日期选择器时,它将始终触发通知

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)")
         }
     }
}
这是您的按钮:

VStack {
    Button(action: {
        scheduleNotification()
    }) {
        Text("Save notification")
    }
     DatePicker("Select a time ....",
         selection: $wakeup, displayedComponents: .hourAndMinute)
         .font(.title2)
         .accentColor(Color(.white))
}

您可以使用本地通知,本地通知允许您设置触发通知的时间。@Cod3rMax您是否建议我可以查看任何教程来执行此特定通知以设置触发通知的时间?请注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,闲聊的材料和缩写的txtspk,恳求,你被困多久了,投票建议,元评论等。只需解释你的问题,并展示你已经尝试了什么,你期望什么,实际上发生了什么。谢谢@davidev。当你说把你的日期选择器包装在按钮外面时,我会把它改成上面的显示方式吗?而不是我的那个?我的日期选择器在按钮内的HStack()中-我是否不再需要HStack()?是的。当前在您的示例中,日期选择器是按钮内容的一部分。如果您单击日期选择器,该按钮将触发该操作。您首先必须请求通知,并且用户允许。在调用scheduleNotification()之前,我添加了上面的代码。。你可以在表上()或钮扣内找到我们。
VStack {
    Button(action: {
        scheduleNotification()
    }) {
        Text("Save notification")
    }
     DatePicker("Select a time ....",
         selection: $wakeup, displayedComponents: .hourAndMinute)
         .font(.title2)
         .accentColor(Color(.white))
}