gpt4 book ai didi

ios - 在后台获取中加载 UIWebView

转载 作者:可可西里 更新时间:2023-11-01 03:31:45 25 4
gpt4 key购买 nike

简短版本:在我的应用程序后台获取就像一个魅力,除了当我尝试在 webview 中加载内容时它什么都不做!

长版本:我在项目中设置了正确的功能,设置了获取间隔并实现了

- (void) application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

示例中的方法并且有效。但是,为了完成我的后台获取,我需要在 UIWebView 中加载一些内容。这是行不通的。当我打电话时,这个过程只是以某种方式“迷路”:

[myWebview loadRequest:request];

(当然它在前台工作,但在后台什么都不做)。

我还尝试强制在主线程中加载 webview,但随后系统只是暂停它,直到应用程序返回前台模式(这是有道理的,我们在后台!)

那么,有一种方法可以在后台加载 UIWebView 吗?请注意,我不能简单地使用 NSURLSession 下载内容,因为网页包含加载某些框架的 javascript(而且我不能要求重新设计网页)。

编辑:可能我在写问题时不够清楚,但我试图在 后台执行 main_queue 中的任务(使用 dispatch_async o likewise 方法)提取 不起作用。我在问之前试过了...

最佳答案

当您想要从用户界面更新元素时​​,您必须在应用程序的主队列(或线程)中访问它们。我建议您继续在后台获取所需的数据,但是当需要更新您的 UIWebView 时,请在主线程中进行。你可以这样做:

    dispatch_async(dispatch_get_main_queue(), ^{

// Load fetched data in the Web View

});

或者您可以创建一个方法来更新 UIWebView 上的数据并使用以下方法从后台线程调用它:

[self performSelectorOnMainThread:@selector(method:) withObject:fetchedData waitUntilDone:YES];

这将确保您从正确的线程访问 UIWebView。

希望这对您有所帮助。

关于ios - 在后台获取中加载 UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688965/

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