0

timeoutIntervalForRequest現在、iOS アプリのすべての Alamofire リモート呼び出しのデフォルト値とtimeoutIntervalForResourceのデフォルト値をNSURLSessionConfigurationそれぞれ 60 秒と 7 日間待機させたくないため、減少させようとしています。

これは私のコードです:

Alamofire.Manager.sharedInstance.session.configuration.timeoutIntervalForRequest = 30
Alamofire.Manager.sharedInstance.session.configuration.timeoutIntervalForResource = 30

let parameters = [
    "foo": [1,2,3],
    "bar": [
        "baz": "qux"
    ]
]

Alamofire.Manager.sharedInstance.request(.POST, "someURL", parameters: parameters, encoding: .JSON) {
    (response) in

    print(response.timeline)
}

これは私のログです:

Timeline: { "Latency": 60.977 secs, "Request Duration": 60.977 secs, "Serialization Duration": 0.000 secs, "Total Duration": 60.977 secs }

ご覧のとおり、Request Duration値は 30 秒を超えています。

Alamofire.Manager.sharedInstance.requestこれは、代わりに使用するという事実に依存しますAlamofire.requestか?

4

2 に答える 2

1

デフォルトのマネージャーの構成を変更できないためだと確信しています(または、少なくともできるとは思いませんが、バグかもしれません)。

新しいものをインスタンス化し、カスタマイズされた NSURLSessionConfiguration を追加してみてください。

元:

var manager:Alamofire.Manager?

func initManager(timeoutInterval:Double) {
    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()

    configuration.timeoutIntervalForRequest = timeoutInterval
    configuration.timeoutIntervalForResource = timeoutInterval

    manager = Alamofire.Manager(configuration: configuration)
}

// then use manager!.request to do your request
于 2016-07-05T14:51:41.587 に答える
0

Alamofire GitHub の公式ページでイシューをオープンしましたが、これはそれに関する彼らの意見です

すでにアクティブなセッションで構成の値を変更しても効果はありません。に関するAppleのドキュメントによるとNSURLSessionChanging mutable values within the configuration object has no effect on the current session, but you can create a new session with the modified configuration object.

ドキュメントに従って、マネージャー インスタンスを作成し、その構成をカスタマイズすることをお勧めします。

于 2016-07-21T09:46:53.070 に答える