問題タブ [nsurlprotocol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
527 参照

ios - NSUrlProtocol Xamarin.Forms を使用した UIWebView の読み込みが遅い

Xamarin.Forms を使用して iOS アプリケーションに取り組んでいます。

このアプリケーションは、サーバーでホストされている Web アプリケーションを表示する UIWebView コントローラーを使用しています。リクエストを行うたびに、このリクエストがブラウザからではなくモバイル アプリケーションに送信されたことを識別するためにカスタム ヘッダーを送信する必要があります。これを行うには、メソッドRequestをオーバーライドするNSUrlProtocolオブジェクトを使用して、各リクエストのカスタムヘッダー。これは私のコードです:

私が今抱えている問題は、NSUrlProtocolを使い始めてから、ページの読み込み時間が大幅に増加していることに気付きました。現在、読み込みに 10 秒かかっていますが、この実装前は、ページに約 3 秒かかっていました。

誰かがこれを克服するための役立つ方向性を指摘できますか??

0 投票する
1 に答える
286 参照

ios - iOS 8 での NSURLSession および NSURLProtocol の問題

NSURLProtocolで実装されたカスタムを使用して、iOS 9で問題なく動作するアプリがありNSURLSessionます。クライアントによって実行されるすべてのリクエストNSURLSessionも同様に実行され、それぞれsessionConfigurationがリクエストを実行する前にプロトコルに登録されます。

iOS 9 にはない iOS 8 の問題があります。iOS8 では、カスタムNSURLProtocolはそのリクエストをノンストップで実行しています。基本的に、同じリクエストの無限ループです。canInitWithRequest:カスタムプロトコルでは、iOS 9 よりも iOS 8 の方がはるかに多く呼び出されます。これは、基本的にメソッドstartLoadingを駆動して、私のプロトコルが実行するはずのいくつかのヘッダー変更の後に呼び出されてリクエストを起動します。

NSURLProtocolsNSURLSessionが期待どおりに動作しないというiOS8 の既知の問題はありますか?

0 投票する
1 に答える
114 参照

ios - NSURLProtocol が UIWebviews に応答しない

アプリにあるUIWebviewsといくつかのカスタムNSURLProtocolsに問題があります。

Web ビュー以外のすべてのリクエストは NSURLSession で呼び出されるため、これらのリクエストがプロトコルを通過するためにはsetProtocolClasses、sessionconfig で配列を設定する必要があります。この時点で、すべてが期待どおりに機能します。私の Web ビューではdidFinishLaunchingWithOptions:、AppDelegate のメソッドに[NSURLProtocol register class[MyProtocol Class]]. Web ビュー リクエストの実行前に再登録しないと、その Web ビュー リクエストはプロトコルを通過しません。

Web ビュー要求を読み込もうとするたびにカスタム プロトコルに再登録しなければならない理由がわかりましたか?

0 投票する
1 に答える
89 参照

ios - iOS UIWebViewのリクエストを区別する方法は?

NSURLProtocol または NSURLCache で UIWebView と NSURLConnection の間で NSURLRequest を区別する方法は?

NSURLConnection なしで UIWebView のリクエストを監視したいのですが、どうすればよいですか?

UIWebView のコンテンツにはリソースがあります: jsimagehref

このリソースと共通の NSURLConnection から NSURLRequest を区別する方法は?

ありがとう。

0 投票する
1 に答える
1253 参照

objective-c - +[NSURLProtocol setProperty:forKey:inRequest:] が正確に行うこと

NSURLProtocol次のメソッドを定義します。

NSURLAuthenticationChallengeしかし、次のコードを使用して、リクエストに関連付けようとすると

ログに次のエラーが表示されます。

NSURLRequestこのメッセージから、プロパティ リストをサポートするオブジェクトのみがこの API の使用に関連付けられている可能性があると思われます。しかし、私はその理由を完全には理解していません。

また、私の質問は、この API をどのような目的で使用する必要があるかです。正しい使い方は?setProperty:forKey:inRequest:オブジェクトをリクエストに関連付けるだけでなく、より多くの作業を行うように見えるため、正確に何をするのか知りたいです。

UPDしたがって、検証可能な最小限の例です。非常に単純なNSURLProtocolサブクラス:

UPD2今のところ、キャッシングが原因だと思います。を使用してもNSURLCacheStorageNotAllowed、このコードは引き続きキャッシュ ディクショナリを作成し、[UIApplication sharedApplication]それに関連付けて書き込みを試みます。

2016-03-20 20:52:19.630 WebViewDemo[7102:663895] 追加: path=/Users/xxx/Library/Developer/CoreSimulator/Devices/89D7C50F-939B-4360-A19F-4547AE4F7515/data でキャッシュ ディクショナリを作成できませんでした/コンテナ/データ/アプリケーション/6F05411C-0261-4A33-9531-9E4E900C4910/ライブラリ/キャッシュ/Test.WebViewDemo. キー=0x7fe76af45f90

次の質問は、独自の関連辞書を実装せずにこのキャッシュを無効にするにはどうすればよいかということです。そうするべきか、それとも避けるべきかsetProperty:forKey:inRequest:

そして、最も重要なことは、Apple のサンプルが示唆するように、それを store に使用するのは正しいですsetProperty:forKey:inRequest:? このメソッドをいつ使用できるか、いつ使用できないかをまだ理解しようとしています。kOurRecursiveRequestFlagProperty