OK、これは説明がかなり複雑で、冗長なタイトルを説明しています: 私の Objective C アプリケーションでは、wikitude SDK の ARchitect ブラウザーで描画する必要があるオブジェクトのすべてのプロパティを保持する JSON 文字列を生成します (これまでのところ、私が知っているように、ウィキチュード SDK は JSON のみを処理します)。
NSString *javaScript = [self convertPoiModelToJson:self.poiData.pois];
NSString *javaScriptToCall = [NSString stringWithFormat:@"newData('%@')", javaScript];
私が興味を持っている 1 つの特定のオブジェクトは、その JSON 文字列に文字列として格納されています。これは、画像への URL です。ただし、この画像は Web サーバーのパスワードで保護された領域の背後にあり、アプリが認証を処理します。
問題は ARchitect Browser にいるときに始まります。これは基本的に、特定の wikitude JavaScript 関数を呼び出して拡張現実の世界を構築し、それをアプリの UIWebView に表示する .html ファイルです。基本的なhtml divコンテナであるフッターポップアップで拡張ビューのPOIがクリックされたときに、その画像を表示したいと思います。これで、Web サーバー上の画像リソースへの URL を取得できましたが、直接アクセスすることはできません。
document.getElementById("thumb").src = jsonObject.thumbUrl;
認証が必要であり、その画像を正常にロードする唯一の方法はvar poiImage = new AR.ImageResource(jsonObject[i].iconURL, {onError: errorLoadingImage});
メソッドを使用することでしたが、拡張ビューにしか表示できず、フッターには表示できません。
Web の他の画像またはローカル リソースの静的文字列を、ビューのフッター セクションの img 要素に問題なく提供してみました。問題なくdocument.getElementById("thumb").src="marker.png";
動作し、画像は拡張ビューに正しく読み込まれます.
画像(アプリの目的のc部分でアクセスしてダウンロードできる)をbase64でエンコードし、その文字列を追加のJSONプロパティに保存して、html img要素のsrcプロパティにロードすることについて読みました<img src="data:image/png;base64,BASE&$_ENCODED_DATA"></img>
が、これ私が達成しようとしていることに対する、本当に汚い、あまりにも非現実的な回避策/ハックのようです。また、ウェブサーバーの保護された領域にあるその画像にアクセスするための認証を実装する方法について読み始めるのが良い考えなのか、醜い base64 エンコーディングの実装を開始するのか、代替手段を探し続けるのが良いのかわかりません。
私は解決策を求めているのではなく、その画像にアクセスするために私が残した可能性について提案を求めています. アイデアが足りなくなったので、どんな助けでも大歓迎です。
ありがとうございました!
簡単な要約:
- 目的の c 部分でアクセス可能でダウンロードされた画像
- wikitude SDK の AR.ImageResource メソッドを使用して画像にアクセスできます (必須ではありません)
- 認証が必要なため、JavaScript から URL 経由で画像に直接アクセスすることはできません
(私の質問が理解できることを願っています。特に英語は私の母国語ではなく、ドイツ語で説明するのはさらに複雑になるため、何か不明な点があればお気軽にお尋ねください..)