好的,这个解释起来相当复杂,它解释了详细的标题:在我的 Objective C 应用程序中,我生成一个 JSON 字符串来保存我需要在 wikitude SDK 的 ARchitect 浏览器中绘制的对象的所有属性(到目前为止据我所知,Wikitude SDK 仅通过以下方式处理 JSON):
NSString *javaScript = [self convertPoiModelToJson:self.poiData.pois];
NSString *javaScriptToCall = [NSString stringWithFormat:@"newData('%@')", javaScript];
我感兴趣的一个特定对象作为字符串存储在该 JSON 字符串中,它是图像的 URL。但是,此图像位于我们的网络服务器上的密码保护区域后面,应用程序会处理身份验证。
当我在 ARchitect 浏览器中时,问题就开始了,它基本上是一个 .html 文件,其中调用了特定的 wikitude javascript 函数来构建增强现实世界并将其显示在应用程序的 UIWebView 中。我想在作为基本 html div 容器的页脚弹出窗口中单击增强视图中的 POI 时显示该图像。所以现在我有一个指向网络服务器上图像资源的 URL,我无法直接访问它
document.getElementById("thumb").src = jsonObject.thumbUrl;
由于需要身份验证,并且我成功加载该图像的唯一方法是通过该var poiImage = new AR.ImageResource(jsonObject[i].iconURL, {onError: errorLoadingImage});
方法,但随后我只能在增强视图中显示它,而不能在页脚中显示它。
我尝试从网络中的其他图像或本地资源向视图的页脚部分中的 img 元素提供静态字符串,没有出现类似问题:document.getElementById("thumb").src="marker.png";
它工作正常,图像也正确加载到增强视图中.
我已经阅读了关于在 base64 中编码图像(我可以在应用程序的目标 c 部分中访问和下载)并将该字符串存储在一个额外的 JSON 属性中以将其加载到 html img 元素的 src 属性中,<img src="data:image/png;base64,BASE&$_ENCODED_DATA"></img>
但是这个对于我试图完成的工作来说,这似乎是一个非常肮脏且过于不切实际的解决方法/hack。另外,我不知道开始阅读有关如何实现身份验证以访问网络服务器受保护区域中的图像的更好主意,或者开始实现丑陋的 base64 编码或继续搜索替代方案是否是一个更好的主意。
我不是要寻求解决方案,而是要建议我还剩下哪些可能性来访问该图像。由于我没有想法,因此感谢您提供任何帮助。
谢谢!
简短的摘要:
- 在目标 c 部分可访问和下载的图像
- 可以使用 wikiitude SDK 的 AR.ImageResource 方法访问图像(但不需要)
- 无法通过 javascript 的 url 直接访问图像,因为需要身份验证
(我希望我的问题是可以理解的,如果有什么不清楚的地方,请随时提问,特别是因为英语不是我的第一语言,用德语解释会更复杂..)