0

我在将 Timberjack 日志记录与我的自定义 Alamofire 管理器集成时遇到问题。我目前这样构建管理器:

private let manager = Alamofire.Manager(serverTrustPolicyManager: ServerTrustPolicyManager(policies: [
    "api.example.com": .PerformDefaultEvaluation(validateHost: true),
    "dev.api.example.com": .PerformDefaultEvaluation(validateHost: false),
    "staging.api.example.com": .PerformDefaultEvaluation(validateHost: false)
]))

并且我的通配符 SSL 证书主机名验证在 dev.api 和 staging.api 子域上被忽略,正如预期的那样。

一旦我将支持 Timberjack 日志记录的配置添加到 Manager.init,如下所示:

private let manager = Alamofire.Manager(configuration: Timberjack.defaultSessionConfiguration(), serverTrustPolicyManager: ServerTrustPolicyManager(policies: [
    "api.example.com": .PerformDefaultEvaluation(validateHost: true),
    "dev.api.example.com": .PerformDefaultEvaluation(validateHost: false),
    "staging.api.example.com": .PerformDefaultEvaluation(validateHost: false)
]))

似乎使用了默认的 serverTrustPolicyManager,并且与 dev.api 和 staging.api 的 SSL 握手失败,因为它们与 *.example.com SSL 证书主机名不匹配。就像某些东西正在覆盖我的 ServerTrustPolicyManager。

我的经理是在我的 API 类中声明的,它是一个单例,所以我确定这不是弱引用问题。此外,如果是这样,我的第一个代码块将无法工作。

@objc class API : NSObject {
    static let api = API()
    private let manager = ... // as above
}

有任何想法吗?

4

0 回答 0