Обновление Alamofire до 5.0.4. Как видно из названия, taskWillPerformHTTPRedirection
никогда не вызывается.
В Alamofire 4.x мы могли бы сделать что-то вроде:
let sessionDelegate = request.session.delegate as! Alamofire.SessionDelegate
sessionDelegate.taskWillPerformHTTPRedirection = { session, task, response, request in
if let url = task.currentRequest?.url {
// look at redirected url & act accordingly
}
}
}
Сессия / делегат запроса была пересмотрена в Alamofire 5 и является больше не доступен напрямую из запроса. В частности, taskWillPerformHTTPRedirection
является обратным вызовом закрытия на ClosureEventMonitor
. В качестве проверки работоспособности я протестировал с использованием некоторых других обратных вызовов замыкания ... и они сработали.
// ClosureEventMonitor
let monitor = ClosureEventMonitor()
monitor.requestDidCreateTask = { request, task in
// Event fires
}
let monitor2 = ClosureEventMonitor()
monitor2.taskWillPerformHTTPRedirection = { sess, task, resp, req in
// Event Never fires
}
monitor2.requestDidFinish = { request in
// Event Fires
}
// Set up Session
var session: Session? = Session(startRequestsImmediately: false, eventMonitors: [monitor, monitor2])
let url = URL(string: "https://google.com")!
let urlRequest = URLRequest(url: url)
let trequest = session?.request(urlRequest)
Для справки этот код запускается из моего AppDelegate
func application(_ application: UIApplication, continue userActivity: NSUserActivity
для обработки глубоких / универсальных ссылок .
Я не совсем уверен, чего мне здесь не хватает. Любая помощь очень ценится. Спасибо за ваше время.