概要
- Alamofireを使用していてUser-Agentを編集したいとき、Managerのイニシャライザに
NSURLSessionConfiguration
のインスタンスを渡して対応しました。
- NSURLSessionConfigurationの設定については、後から動的に変えることができないので、注意が必要です。
- 変更したい場合は、Managerインスタンスを初期化するしかありません。
2パターンあります
- User-Agentの末尾に任意の値を挿入
- User-Agentをすべて入れ替え
User-Agentの末尾に任意の値を挿入
let customUserAgent = "Some-User-Agent-Value"
guard let defaultUserAgent = Manager.defaultHTTPHeaders["User-Agent"] else {
fatalError("Header User-Agent value is nil")
}
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = Manager.defaultHTTPHeaders
configuration.HTTPAdditionalHeaders?["User-Agent"] = defaultUserAgent + " " + customUserAgent
let manager: Manager = Manager(configuration: configuration)
User-Agentをすべて入れ替え
let customUserAgent = "Some-User-Agent-Value"
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = Manager.defaultHTTPHeaders
configuration.HTTPAdditionalHeaders?["User-Agent"] = customUserAgent
let manager: Manager = Manager(configuration: configuration)
補足
- 上記コードの
manager
変数は、APIと通信するWebAPIClietのようなクライアントクラスのインスタンスで使用しています。
- コード例だと省略してますが、上記WebAPIClientのインスタンス変数として使っています。