gpt4 book ai didi

ios - UIWebView loadHtmlString 无法在设备上运行

转载 作者:行者123 更新时间:2023-11-29 04:17:09 26 4
gpt4 key购买 nike

我有一个 webview,我想使用 loadHtmlString 方法加载它。问题是我希望能够使用我之前下载的图像更改 img src。我还在 html 中使用 google analitics,所以我需要将 baseUrl 设置为实际的 url,这样它才能工作。问题来了。如果我输入 baseUrl,图像将不会加载。如果我不设置baseUrl,它就可以工作。我怎样才能解决这个问题,这样我就能够使用 google analitycs 并将图像本地存储在我的应用程序中?我不想在我的项目中实现 google analitics sdk。

奇怪的是,如果我在模拟器中运行它,并且不在我的 baseUrl 前面添加“http://”前缀,它就可以正常工作。但是,当我在设备上运行它时,我收到以下错误并且它不起作用:

Domain=WebKitErrorDomain Code=101 "The URL can’t be shown"

谢谢

编辑

如果我这样做,它会起作用:

[appsWebView loadHTMLString:htmlString baseURL:nil];

但是,我必须提供基本 URL 才能让 Google Analitics 正常工作,我还有另外两种情况:

  1. 这个出现了上述错误:(在模拟器中运行正常,但在设备上运行时出现错误)

    [appsWebView loadHTMLString:htmlString baseURL:[NSURL urlWithString:@"test.com"]];

  2. 这个根本不显示任何内容:(既不加载 html 字符串也不加载 url)

    [appsWebView loadHTMLString:htmlString baseURL:[NSURL urlWithString:@"http://test.com"]];

最佳答案

我错误地认为问题是本地镜像未完全指定完整路径,但这似乎不是这里的问题。但是,您说得很对,您似乎无法指定某些基于 Web 的 baseURL 并在 HTML 字符串中引用本地镜像(有点令人惊讶)。我没有想到简单的解决方案,但至少,您可能有几个(不是很好)选择:

首先,您可以使用一些 Base64 库(例如 Mike Gallagher's NSData+Base64 category)对本地镜像进行 Base64 编码。 ,例如:

NSData *imageData = [NSData dataWithContentsOfFile:imagePath];
NSString *imageDataBase64 = [imageData base64EncodedString];
NSString *imageHtml = [NSString stringWithFormat:@"<img src='data:image/png;base64,%@'>", imageDataBase64];

这会减慢初始渲染速度,但也许总比没有好。

第二,您始终可以尝试将 baseURL 保留为 nil,从 HTML 字符串中删除执行 Google Analytics(分析)的 JavaScript,然后然后尝试通过 stringByEvaluatingJavaScriptFromString 注入(inject) JavaScript。这种方法可能有效,也可能无效,具体取决于 Google Analytics JavaScript 的复杂性(例如,它可能有哪些进一步的基于网络的引用),但您有可能以这种方式执行某些操作。

我很抱歉假设问题是一个微不足道的 img URL。显然您已经发现了一个更根本的问题。


原始答案:

在 HTML 字符串中创建图像 URL,使其成为本地文件系统中的完全限定文件 URL:

图像位于文档中:

NSString *documentsPath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
NSString *imagePath = [documentsPath stringByAppendingPathComponent:imageName];

或者在 bundle 中:

NSString *imagePath = [[NSBundle mainBundle] pathForResource:imageName 
ofType:nil];

但是,一旦您拥有完全限定的路径,您应该能够使用它:

NSURL *imageUrl = [NSURL fileURLWithPath:imagePath];
NSString *imageHtml = [NSString stringWithFormat:@"<img src='%@'>", imageUrl];

关于ios - UIWebView loadHtmlString 无法在设备上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13533088/

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