問題タブ [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.
ios - NSUrlProtocol Xamarin.Forms を使用した UIWebView の読み込みが遅い
Xamarin.Forms を使用して iOS アプリケーションに取り組んでいます。
このアプリケーションは、サーバーでホストされている Web アプリケーションを表示する UIWebView コントローラーを使用しています。リクエストを行うたびに、このリクエストがブラウザからではなくモバイル アプリケーションに送信されたことを識別するためにカスタム ヘッダーを送信する必要があります。これを行うには、メソッドRequestをオーバーライドするNSUrlProtocolオブジェクトを使用して、各リクエストのカスタムヘッダー。これは私のコードです:
私が今抱えている問題は、NSUrlProtocolを使い始めてから、ページの読み込み時間が大幅に増加していることに気付きました。現在、読み込みに 10 秒かかっていますが、この実装前は、ページに約 3 秒かかっていました。
誰かがこれを克服するための役立つ方向性を指摘できますか??
ios - iOS 8 での NSURLSession および NSURLProtocol の問題
NSURLProtocol
で実装されたカスタムを使用して、iOS 9で問題なく動作するアプリがありNSURLSession
ます。クライアントによって実行されるすべてのリクエストNSURLSession
も同様に実行され、それぞれsessionConfiguration
がリクエストを実行する前にプロトコルに登録されます。
iOS 9 にはない iOS 8 の問題があります。iOS8 では、カスタムNSURLProtocol
はそのリクエストをノンストップで実行しています。基本的に、同じリクエストの無限ループです。canInitWithRequest:
カスタムプロトコルでは、iOS 9 よりも iOS 8 の方がはるかに多く呼び出されます。これは、基本的にメソッドstartLoading
を駆動して、私のプロトコルが実行するはずのいくつかのヘッダー変更の後に呼び出されてリクエストを起動します。
NSURLProtocol
sNSURLSession
が期待どおりに動作しないというiOS8 の既知の問題はありますか?
ios - NSURLProtocol が UIWebviews に応答しない
アプリにあるUIWebviewsといくつかのカスタムNSURLProtocolsに問題があります。
Web ビュー以外のすべてのリクエストは NSURLSession で呼び出されるため、これらのリクエストがプロトコルを通過するためにはsetProtocolClasses
、sessionconfig で配列を設定する必要があります。この時点で、すべてが期待どおりに機能します。私の Web ビューではdidFinishLaunchingWithOptions:
、AppDelegate のメソッドに[NSURLProtocol register class[MyProtocol Class]]
. Web ビュー リクエストの実行前に再登録しないと、その Web ビュー リクエストはプロトコルを通過しません。
Web ビュー要求を読み込もうとするたびにカスタム プロトコルに再登録しなければならない理由がわかりましたか?
ios - iOS UIWebViewのリクエストを区別する方法は?
NSURLProtocol または NSURLCache で UIWebView と NSURLConnection の間で NSURLRequest を区別する方法は?
NSURLConnection なしで UIWebView のリクエストを監視したいのですが、どうすればよいですか?
UIWebView のコンテンツにはリソースがあります: js
、image
、href
。
このリソースと共通の NSURLConnection から NSURLRequest を区別する方法は?
ありがとう。
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