gpt4 book ai didi

ios - 如何在 ios 应用程序中有条件地推送本地通知?

转载 作者:搜寻专家 更新时间:2023-11-01 06:19:17 25 4
gpt4 key购买 nike

我正在开发一个 ios 应用程序,该应用程序将在应用程序发送到后台后发送通知。当用户在 MainviewController.swift 中将值设置为 true 时,我只希望通知有效。所以我有这样的东西:

 func setDelegateToTrue () {
Appdelegate().setToStart()
}

func setDelegateToFalse () {
Appdelegate().setToEnd()
}

在我的 Appdelegate.swift 中,我有这样的东西:

 var started = false

func applicationDidEnterBackground(application: UIApplication) {
if(started) {
let notification: UILocalNotification = UILocalNotification()
notification.category = "FIRST_CATEGORY"
notification.alertBody = "do not forget your app"
notification.repeatInterval = NSCalendarUnit.Day
notification.timeZone = NSTimeZone.defaultTimeZone()
UIApplication.sharedApplication().scheduleLocalNotification(notification)
started = false
}
}

func setToStart() {
started = true
}

func setToEnd() {
started = false
}

通知在没有 if 语句时工作正常,但是,当我有 if 语句并在 viewdidload 中调用 setDelegateToTrue() 时,它停止工作。似乎开始的 bool 值在调用 setToStart() 后发生了变化,但实际上我可以从 setToStart() 中打印出一些东西。谁能帮帮我?

最佳答案

您的问题是您在运行 AppDelegate().setToStart() 时正在创建 AppDelegate 的新实例。因此,当它稍后调用应用程序委托(delegate)时,它的标志仍设置为 false,因为您在不同的实例上设置了标志(该实例立即被销毁)。

要执行您当前正在尝试的操作,您需要从 UIApplication(sharedApplication)获取 delegate 并将标志设置为那个。

在使用 OO 语言与 View Controller 等进行通信时请记住这一点,因为您始终需要获取要与之交谈的实例,而不是创建一个新实例。

关于ios - 如何在 ios 应用程序中有条件地推送本地通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37366827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com