1

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 経由で画像に直接アクセスすることはできません

(私の質問が理解できることを願っています。特に英語は私の母国語ではなく、ドイツ語で説明するのはさらに複雑になるため、何か不明な点があればお気軽にお尋ねください..)

4

3 に答える 3

1

Objective-C / Cocoaで画像をダウンロードし、iOSデバイスにローカルに保存して、JSON経由で画像のローカルパスをアーキテクトワールドに渡してみましたか?

次に、ローカルイメージを自分AR.ImageResouceとdivコンテナでロードできます。

于 2012-10-08T07:40:39.737 に答える
1

わかりました、これについて少し考えてみましょう。

私があなたの問題をよく理解している場合、すべてはあなたのJavaScriptコードが画像のあるURLに到達する必要があり、その場所にアクセスするには何らかの検証が必要なため、そうすることができません.

このシナリオでは、制限されたサイト以外の場所に移動する画像を探します。たぶん、Objective-C の部分から、 javascript でアクセスできる 1 つの公共の場所に保存しようとしているのかもしれません。I/O操作によってコードの実行が遅くなる可能性があるため、これは難しいかもしれません...もちろん、これらの画像を制限された領域のすぐ外側に移動するオプションは常にありますが、あなた自身。

他の方法...環境構成で許可されている場合(質問に十分な情報がないのではないかと心配しています)、javascript部分を実行しようとすることです(Webサーバーから実行されるWebページに含まれているのではないかと思います)制限された領域へのアクセス許可を持つユーザー。もちろん、これは、javascript の部分が何をするか、および制限された領域が検証によって保護されている理由によっては、完全にノーノーになる可能性があります。

ファイルを移動したくない場合は、それらを一時的にコピーするとパフォーマンスの問題とエラーが発生し、javascript を実行しているユーザーによるユーザーの偽装はオプションではありません。 JSON文字列を介した画像...汚い...

于 2012-10-04T16:23:12.317 に答える
1

wikitude は 2 つのブラウザー コンテキストを維持しているようです。HTML をロードしたホスト ブラウザーと、UIWebView インスタンスによって表される組み込みのブラウザーのようなオブジェクト (または iframe またはプロキシ サーバー) です。

あなたのイメージにアクセスするためのユーザー/パスを持っているのは、そのうちの1つだけです(あなたの議論から明確ではありません)。認証手順を繰り返すか、資格情報を他のコンテキストに転送するには、何かを呼び出す必要があります。

于 2012-10-04T16:35:35.650 に答える