AlamofireでUser-Agentを編集する

概要

  • 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のインスタンス変数として使っています。