是否允许HTTPDNS打印Log
本地日志调试日志开关,可以开启调试日志排查解析相关问题。上线时建议关闭。
接口定义
- (void)setLogEnabled:(BOOL)enable;
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
enable | BOOL | 是 | 日志开关 |
设置接收SDK日志的回调类
开启HTTPDNS日志开关后,若希望日志打印到自定义目标处,可以通过此回调配置实现。如希望通过日志文件收集相关解析日志,则可以通过此回调把日志写入相关文件中。
接口定义
- (void)setLogHandler:(id<HttpdnsLoggerProtocol>)logHandler;
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
logHandler | id<HttpdnsLoggerProtocol> | 是 | 设置日志输出回调。 |
校正App签名时间
进行该操作后,如果有偏差,每次网络请求都会对设备进行时间校正;不进行该操作的话将以设备时间为准。
该功能仅适用于SDK v3.0.0及以上版本。
使用场景:有可能手机上的时间不太准确。
校正操作在App的一个生命周期内生效,App重启后需要重新设置才能重新生效,可以重复设置。
您需要一个时间服务,可以自建,简单的时间戳接口就可以。APP启动后,请求这个时间服务返回正确的时间,再将时间设置到本接口,SDK就能知道设备时间和正确时间的偏离值,随后在请求时自动校正时间。
在2.x.x版本及以前,本接口定义为
- (void)setAuthCurrentTime:(NSTimeInterval)currentTime;
接口定义
- (void)setInternalAuthTimeBaseBySpecifyingCurrentTime:(NSTimeInterval)currentTime;
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
currentTime | NSTimeInterval | 是 | 用于校正的准确时间戳,单位为秒。 |
设置region节点
如果APP需要在海外环境使用HTTPDNS,为了提升解析效率,可以主动设置本SDK的启动服务节点。设置节点后,SDK会使用该节点进行域名解析和进行随后的调度节点列表更新。
该功能仅适用于SDK v3.1.0及以上版本。
接口定义
- (void)setRegion:(NSString *)region;
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
region | NSString | 是 | 节点名,当前可用节点为 中国内地节点、中国香港节点、新加坡节点、德国节点,美国节点,分别对应以下宏:
|
预解析接口
可以通过此接口,预先注册您后续可能会使用到的域名,以便SDK提前解析,减少后续域名解析时请求的时延。
接口定义
- (void)setPreResolveHosts:(NSArray *)hosts;
所属类
HttpDnsService
参数说明
参数 | 类型 | 是否必填 | 说明 |
hosts | NSArray | 是 | 预解析域名列表 |
自定义解析结果TTL
若需要在APP本地指定某个域名的TTL,覆盖真实的域名配置,则可以通过此代理接口实现。
接口定义
@protocol HttpdnsTTLDelegate <NSObject>
/// 自定义HOST的TTL时长
/// @return 返回需要自定义的TTL时长
/// @param host 域名
/// @param ipType 当前查询的IP类型
/// @param ttl 当次域名解析返回的TTL
- (int64_t)httpdnsHost:(NSString *)host ipType:(AlicloudHttpDNS_IPType)ipType ttl:(int64_t)ttl;
@end
所属类
HttpdnsTTLDelegate
回调参数说明
参数 | 类型 | 说明 |
host | NSString | 需要自定义ttl的域名 |
ipType | AlicloudHttpDNS_IPType | 什么查询类型下需要自定义ttl |
ttl | int64_t | 该域名从服务端返回的原始ttl |
代码示例
@interface AppDelegate () <HttpdnsTTLDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 传入对应的accountID
HttpDnsService *httpdns = [[HttpDnsService alloc] initWithAccountID:xxxxx];
httpdns.ttlDelegate = self;
return YES;
}
- (int64_t)httpdnsHost:(NSString *)host ipType:(AlicloudHttpDNS_IPType)ipType ttl:(int64_t)ttl {
if ([host isEqualToString:@"www.aliyun.com"]) {
// 假设业务考虑www.aliyun.com这个域名的解析记录非常稳定,可以在本地缓存更长时间
// 则判断host为www.aliyun.com时,将ttl设置为600秒
return 600;
}
// 若无需特殊配置,返回原始ttl
return ttl;
}
@end