【发布时间】:2012-09-25 17:33:25
【问题描述】:
好的,这个解释起来比较复杂,它解释了冗长的标题: 在我的 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 部分中访问和下载
- 图像可通过 wikitude SDK 的 AR.ImageResource 方法访问(但不是必需的)
- 无法通过 javascript 中的 url 直接访问图片,因为需要身份验证
(我希望我的问题是可以理解的,如果有什么不清楚的地方,请随时提出,特别是因为英语不是我的第一语言,用德语解释会更复杂..)
【问题讨论】:
标签: javascript html objective-c json wikitude