Я создаю менеджер сеанса, используя общий экземпляр, как показано ниже:AlamoFire: открытый ключ пиннинга не работает
class Session {
static let sharedInstance = Session()
private var manager : SessionManager?
func ApiManager()->SessionManager{
if let m = self.manager{
return m
}else{
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"https:api-cat.example.com": .pinPublicKeys(
publicKeys:savePublicKeys(),
validateCertificateChain:true,
validateHost:true
)]
self.manager = SessionManager(
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies))
return self.manager!
}
}}
где savePublicKeys
возвращается [SecKey]
.
Даже после установки нового ServerTrustPolicy с пустым массивом открытых ключей, я все еще могу совершать успешные вызовы и получать данные. Любые идеи, если я ошибаюсь здесь?
Это решило мою проблему. Спасибо ChaosCoder. Просто хотелось добавить это, но проблема была в том, что «//» отсутствует после «https:». Вы можете изменить свой ответ, чтобы отразить то же самое. – SagarU