Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Ios 在Swift 4中,当标签中的值低于阈值时,如何使用本地通知提醒用户?_Ios_Swift4.2 - Fatal编程技术网

Ios 在Swift 4中,当标签中的值低于阈值时,如何使用本地通知提醒用户?

Ios 在Swift 4中,当标签中的值低于阈值时,如何使用本地通知提醒用户?,ios,swift4.2,Ios,Swift4.2,当随机生成的整数值大于Swift 4中标签的文本值时,我试图用本地通知提醒用户。我一直在谷歌上寻找答案,尽管我按照要求实现了我的问题,但我无法解决它。这是我的密码: 导入UIKit 进口发货 进口石英砂 导入用户通知 类ViewController:UIViewController{ var alertButton:UIButton{ let button=UIButton(帧:CGRect(x:100,y:150,宽度:UIScreen.main.bounds.width/2,高度:100))

当随机生成的整数值大于Swift 4中标签的文本值时,我试图用本地通知提醒用户。我一直在谷歌上寻找答案,尽管我按照要求实现了我的问题,但我无法解决它。这是我的密码:

导入UIKit
进口发货
进口石英砂
导入用户通知
类ViewController:UIViewController{
var alertButton:UIButton{
let button=UIButton(帧:CGRect(x:100,y:150,宽度:UIScreen.main.bounds.width/2,高度:100))
setTitle(“显示警报”,用于:。正常)
button.setTitleColor(.blue,表示:。正常)
button.addTarget(self,action:#选择器(showAlert),for:.touchUpInside)
返回按钮
}
var valueLabel:UILabel{
let label=UILabel(帧:CGRect(x:250,y:300,宽度:150,高度:150))
label.text=“值”
label.textColor=UIColor.black
退货标签
}
变量值:Int=0
重写func viewDidLoad(){
super.viewDidLoad()
self.view.addSubview(alertButton)
self.view.addSubview(valueLabel)
UnuseNotificationCenter.current().delegate=self
请求设置()
//let link=CADisplayLink(目标:self,选择器:#选择器(updateLabels))
//link.add(到:.main,forMode:.default)
Timer.scheduledTimer(时间间隔:4,目标:self,选择器:#选择器(self.updateLabels),userInfo:nil,repeats:true)
}
private func requestAuthorization(completionHandler:@escaping(u成功:Bool)->()){
UNUserNotificationCenter.current().requestAuthorization(选项:[.alert.badge]){(成功,错误)位于
如果let error=error{
打印(“身份验证请求失败。\(错误)\(错误。localizedDescription)”)
}
completionHandler(成功)
}
}
私有函数请求设置(){
UnuseNotificationCenter.current().getNotificationSettings{(notificationSettings)位于
开关notificationSettings.authorizationStatus{
案例。未确定:
中的self.requestAuthorization{(成功)
保护成功其他{return}
self.scheduleNotification()
}
案件.驳回:
打印(“应用程序不允许显示通知”)
案例.授权:
self.scheduleNotification()
案件.暂定:
self.scheduleNotification()
}
}
}
@objc func updateLabels(){
self.value=Int.random(in:1…50)
打印(“\(self.value)”)
DispatchQueue.main.async{
self.valueLabel.text=“\(self.value)”
}
}
@objc func showAlert(){
var-val:String=“”
let alert=UIAlertController(标题:“阈值”,消息:nil,首选样式:。警报)
alert.addTextField(configurationHandler:{(textField)位于
textField.placeholder=“输入整数值:”
})
addAction(UIAlertAction)(标题:“确定”,样式:。默认,处理程序:{(操作)在
val=(alert.textFields?.first!.text)!
如果self.value>Int(val){
self.scheduleNotification()
}
警报。解除(动画:真,完成:零)
}))
self.present(警报、动画:true、完成:nil)
}
专用功能计划通知(){
let content=UNMutableNotificationContent()
content.title=“应用程序”
content.subtitle=“警告!”
content.body=“阈值已通过”
let trigger=UNTimeIntervalNotificationTrigger(时间间隔:1,重复:false)
let request=UNNotificationRequest(标识符:“notification_id”,内容:content,触发器:trigger)
UNUserNotificationCenter.current()。在中添加(请求){(错误)
如果let error=error{
打印(“\(错误)\(错误.本地化描述)”)
}
}
}
}
扩展视图控制器:UNUserNotificationCenterDelegate{
func userNotificationCenter(center:UNUserNotificationCenter,
将提交通知:未通知,
withCompletionHandler completionHandler:@escaping(UNNotificationPresentationOptions)->Void)
{
completionHandler([.alert])
}
}
感谢您的帮助


更新:我尝试实现本地推送通知。但我的问题是,根据我提到的条件,我无法将它推给用户

您的本地通知代码在哪里?到底是什么不起作用?这是我无法实现的部分。起初,我试图向控制台打印一条警告,看看它是否工作正常。是的,但之后我无法实现本地推送通知。这意味着什么你不能?到底是什么问题?你试过了吗?是的,我试过好几次,但都不起作用,我不想在我的项目中保留一个不起作用的代码,所以我删除了它。这就是为什么本地通知部分不存在的原因。所以,如果您不想显示什么不起作用,我如何帮助您呢?