偏好设置接口

HTTPDNS本地日志接口

本地日志Log开关,上线时建议关闭。

接口定义

- (void)setLogEnabled:(BOOL)enable;

参数说明

参数

类型

是否必填

说明

enable

BOOL

日志开关

设置日志输出回调

注意

该功能仅适用于SDK V1.6.20及以上版本。

接口定义

- (void)setLogHandler:(id<HttpdnsLoggerProtocol>)logHandler;

参数说明

参数

类型

是否必填

说明

logHandler

id<HttpdnsLoggerProtocol>

设置日志输出回调。

设置域名解析请求类型

设置HTTPDNS域名解析请求的类型,若不调用该接口,默认为HTTP请求。

说明

HTTP请求基于底层CFNetwork实现,不受ATS限制。

接口定义

- (void)setHTTPSRequestEnabled:(BOOL)enable;

参数说明

参数

类型

是否必填

说明

enable

BOOL

取值如下:

YES:HTTPS请求

NO:HTTP请求

设置持久化缓存功能

持久化缓存功能旨在提升首屏加载速度,但持久化缓存会将上一次解析到的结果保存到本地持久层,App重启后,如果启动持久化缓存功能会优先从持久层解析结果,所以存在第一次使用的IP为过期IP的可能性,即TTL过期,但大多数情况下该IP依然可以正常使用。

说明

  • 如果业务服务器IP变化比较频繁,建议谨慎接入该功能,以免对业务造成影响。

  • 持久化缓存仅影响第一次域名解析结果,后续解析仍会请求HTTPDNS服务器,并更新本地缓存。

  • 开启此功能后,每次网络解析记录,会更新到本地缓存;App重启后,首先加载本地缓存到内存中。

接口定义

- (void)setCachedIPEnabled:(BOOL)enable;

参数说明

参数

类型

是否必填

说明

enable

BOOL

取值如下:

True:开启

False:关闭

预解析接口

预先向HTTPDNS SDK中选择性的注册您后续可能会使用到的域名,以便SDK提前解析,减少后续域名解析时请求的时延。

接口定义

- (void)setPreResolveHosts:(NSArray *)hosts;

参数说明

参数

类型

是否必填

说明

hosts

NSArray

预解析域名列表

高级预解析

支持IPv4、IPv6组合的预解析方法。

说明

如果需要开启IPv6预解析,则需提前打开IPv6开关。

接口定义

 - (void)setPreResolveHosts:(NSArray *)hosts queryIPType:(AlicloudHttpDNS_IPType)ipType;

参数说明

参数

类型

是否必填

说明

hosts

NSArray

预解析域名列表

ipType

AlicloudHttpDNS_IPType

取值如下:

  • AlicloudHttpDNS_IPTypeV4 (IPv4)

  • AlicloudHttpDNS_IPTypeV6 (IPv6)

  • AlicloudHttpDNS_IPTypeV64 (IPv4 + IPv6)

是否允许HTTPDNS返回TTL过期域名的IP

设置是否允许HTTPDNS返回TTL过期的域名,建议设置为YES(允许)(默认为NO)。

说明

  • 当设置为YES时,SDK在实时返回过期IP的同时,依然会进行异步更新以获取最新的IP信息。

  • 当设置为NO时,假设已有某个域名的缓存,IP的TTL时间为60s,60s内调用getIpByHostAsync等异步解析接口可以拿到缓存结果;但是在60s之后,首次调用getIpByHostAsync等异步解析接口会直接返回null,并且进行异步域名解析更新缓存。

接口定义

- (void)setExpiredIPEnabled:(BOOL)enable;

参数说明

参数

类型

是否必填

说明

enable

BOOL

是否返回TTL过期域名。

YES:允许

NO:不允许

网络切换自动刷新

设置网络切换时是否自动刷新所有域名解析结果,如果打开此开关,在网络切换时,会自动刷新所有域名的解析结果,但会产生一定流量消耗。

注意

  • WiFi、蜂窝、无网这三个状态的切换算网络切换。

  • 4G与3G切换不算网络切换。

  • SIM卡切换也不会单独处理。

接口定义

- (void)setPreResolveAfterNetworkChanged:(BOOL)enable;

参数说明

参数

类型

是否必填

说明

enable

BOOL

取值如下:

  • YES 网络切换时就会刷新缓存中的所有域名。

  • NO 网络切换时,SDK仅会删除所有域名的缓存,只有当下次访问域名时,才会去重新解析。

设置网络请求的超时时间

设置网络请求的超时时间,默认为15s。

接口定义

- (void)setTimeoutInterval:(NSTimeInterval)timeoutInterval;

参数说明

参数

类型

是否必填

说明

timeoutInterval

NSTimeInterval

单位是毫秒(ms)

代码示例

设置region节点

调用此接口后,会按照region更新服务IP。

注意

  • 该功能仅适用于SDK V1.18及以上版本。

  • 如果调用此接口时,与上次设置的region相同或者5分钟内重复设置不同的region时,不会进行服务IP的更新。

接口定义

- (void)setRegion:(NSString *)region;

参数说明

参数

类型

是否必填

说明

region

NSString

region为节点,设置海外region。

清空指定域名缓存

使用阿里云域名解析服务的用户,调用该接口主动清除本地缓存,可实现秒级域名配置生效。 例如:假设域名xxx.com,解析IP地址为ip1, 当ip1遭受攻击,需要将流量迁移至ip2,实现流程如下:

  1. 首先,用户在云解析控制台将域名对应IP修改为ip2,此时在HTTPDNS服务端会立即获取到此变更信息,并清除服务端该域名的ip1缓存。

  2. 用户手动调用此接口,清空xxx.com域名的本地缓存。

  3. App端清空缓存后的下一次请求,会使得服务端重新请求权威服务器,获取最新解析IP地址ip2,从而使前端解析结果立即生效为ip2。

注意

  • 该功能仅适用于SDK V2.0.4及以上版本。

  • 清除操作会同步清除内存缓存和沙箱缓存(异步)。

接口定义

- (void)cleanHostCache:(NSArray <NSString *>*)hostArray;

参数说明

参数

类型

是否必填

说明

hostArray

NSArray <NSString *>*

需要清除的host域名数组。如果需要清空全部数据,传nil或者空数组即可。