gpt4 book ai didi

ios - 仅当应用程序处于事件状态时,如何在 performFetchWithCompletionHandler 中执行代码?

转载 作者:行者123 更新时间:2023-11-28 15:24:19 26 4
gpt4 key购买 nike

我想在某个时间间隔内执行一些操作。但是当应用程序处于后台或非事件状态时,这不应该发生。我已经按如下方式实现了这一点

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {


UIApplication.shared.setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum)
return true
}

并在 performFetchWithCompletionHandler 中

 func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

print("Background fetch called")



// foreground

if (application.applicationState == .active)
{

//lines of code to perform



}
}

但是当我尝试在模拟器中模拟后台获取时,它显示以下消息

警告:应用程序委托(delegate)收到对 -application:performFetchWithCompletionHandler: 的调用,但从未调用完成处理程序。

我尝试删除应用程序状态条件并且它工作正常。但我只想在应用程序处于事件状态而不是处于后台或非事件状态时执行这些行。我该如何实现这一点?

最佳答案

您忘记将完成处理程序 添加到函数中。它应该在数据获取完成时调用。

如果您有新数据要显示,请将此插入到您的代码中:

completionHandler(.newData)

...如果您没有数据:

completionHandler(.noData)

...如果获取失败,则为:

completionHandler(.failed)

关于ios - 仅当应用程序处于事件状态时,如何在 performFetchWithCompletionHandler 中执行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45487703/

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