0

私は高度な非同期環境と、特定のネットワークリソース(アクセストークンなど)を要求する可能性のある多くのモジュールを持っています。iOS - 特定のリソースへのネットワーク要求の一括処理(合体)。 NSURLSession、NSURLRequestなどの協力

例えば、コードの多くの場所は、「同時に」分析を送信するための呼び出しを行うことができます:

// module 1 
[Analytics sendAnalytics:module1Analytics]; 


// module 2 
[Analytics sendAnalytics:module2Analytics]; 

... 

解析要求は、トークンの有効なアクセス権を必要とし、送信コードがあるべき期限切れのアクセストークンのために特別な注意が含まれていてもよいです更新済み

私は同じリソースを同時に要求したくありません。すでに実行中の場合、同じリソースの呼び出しをバッチしたいと思います。

// batch this call to only happen once if already running 
    NSURLRequest *accesstoken = ... 
    .... 

はまた、アクセストークンは、(「NSURLCache」et.alメカニズムを使用。)キャッシュしてはいけません

など(のために一緒にバッチ処理されなければならない「アクセストークン」要求などの他のリクエストがあります。インスタンスは画像の要求です)。私は冗長な要求をしないようにネットワークアクセスを最適化する必要があります。

自分でリクエストを収集することなくNSURLローディングシステムによって提供される組み込みメカニズムがありますか?

答えて

0

いいえこれを行うには、NSURLSessionの周りに独自のラッパーコードを追加する必要があります。

必要に応じて複数のリクエストをマージして再試行するなどのアナリティクスシングルトンクラスを用意して、すべての発信者が行う必要があるのは、おそらく[MyAnalyticsClass updateAnalyticsWithParameters: @{...}]などです。

次に、その呼び出しで、進行中のリクエストがあるかどうかを確認する必要があります。そうでない場合は、すぐにリクエストを開始してください。その場合は、新しい要求をエンキューします。現在のリクエストが完了したら、キューを調べて、送信するもの、マージするものなどを決定し、次のものを開始します。

関連する問題