swift 我显示了一个警报,然后我不想再显示另一个警报

v09wglhw  于 2023-03-22  发布在  Swift
关注(0)|答案(1)|浏览(131)

我有一个建议更新警报当我打开我的应用程序. T写在applicationDidBecomeActive然后我隐藏我的应用程序并重新打开.我不想显示另一个警报堆栈了

for item in GlobalData.sharedInstance.linkContact?.socialLink?.forceUpdate ?? []{
            if item == currentVersionDouble {
                let alert = UIAlertController(title: "Thông báo", message: "Chúng tôi đã phát hành một phiên bản mới hơn cho ứng dụng này. Bạn có muốn cập nhật không?", preferredStyle: .alert)
                let actionUpgrade = UIAlertAction(title: "Cập nhật", style: .default) { (_: UIAlertAction) in
                    if let requestUrlStore = URL(string: urlLink.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "") {
                        if #available(iOS 10.0, *) {
                            UIApplication.shared.open(requestUrlStore, options: [:], completionHandler: nil)
                        } else {
                        }
                    }
                }
                alert.addAction(actionUpgrade)
                UIApplication.getTopViewController()?.present(alert, animated: true, completion: nil)
                CFRunLoopWakeUp(CFRunLoopGetCurrent())
                break
            }
        }

然后我将func添加到applicationDidBecomeActive

func applicationDidBecomeActive(_ application: UIApplication) {
    DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
        ConfigApp.checkUpdate()
    }
}

我不知道我该怎么弥补

wmomyfyw

wmomyfyw1#

向类中添加一个boolean属性,以跟踪是否已显示警报:

var alertShownBool = false

然后修改checkUpdate()方法以检查之前是否显示过警报,如果没有显示,则只显示警报

func checkUpdate() {
    guard !alertShownBool else { return }
    alertShownBool = true
}

从applicationDidBecomeActive调用checkUpdate(),就像你做的一样。
从这个变化,警报将只显示一次,用户打开应用程序后,更新变得可用.否则,警报将不会再次显示.

相关问题