校正App签名时间
进行该操作后,如果有偏差,每次网络请求都会对设备进行时间校正;不进行该操作的话将以设备时间为准。
使用场景:有可能手机上的时间不太准确。
校正操作在App的一个生命周期内生效,App重启后需要重新设置才能重新生效,可以重复设置。
您需要一个时间服务,可以自建,简单的时间戳接口就可以,请求这个时间服务返回正确的时间,然后将时间填入本接口,SDK就能知道和正确时间差了多少。
接口定义
void setAuthCurrentTime(long time);
参数说明
参数 | 类型 | 是否必填 | 说明 |
time | long | 是 | 用于校正的时间戳。 |
代码示例
// httpdns为初始化获取的服务实例
httpdns.setAuthCurrentTime(System.currentTimeMillis());
是否允许HTTPDNS打印Log
接口定义
public static void enable(boolean enable)
参数说明
参数 | 类型 | 是否必填 | 说明 |
enable | boolean | 是 | 是否打印Log到logcat。 |
代码示例
HttpDnsLog.enable(shouldPrintLog);
设置接收SDK日志的回调类
该功能仅适用于SDK V1.2.3及以上版本。
SDK V2.0.0及以上版本进行改版,需使用HttpDnsLog进行设置。
接口定义
/**
* 设置日志接口
* 不受{@link #printToLogcat} 控制
*
* @param logger
*/
public static void setLogger(ILogger logger) {
if (logger != null) {
loggers.add(logger);
}
}
/**
* 移除日志接口
*
* @param logger
*/
public static void removeLogger(ILogger logger) {
if (logger != null) {
loggers.remove(logger);
}
}
ILogger接口如下:
public interface ILogger {
void log(String msg);
}
参数说明
参数 | 类型 | 是否必填 | 说明 |
logger | ILogger | 是 | 设置该接口后,SDK本身的日志将不会打印,都会通过ILogger接口进行回调,便于控制日志的打印和存储日志。 |
代码示例
// SDK V2.0.0以下版本,httpdns为初始化获取的服务实例
httpdns.setLogger(new ILogger() {
@Override
public void log(String s) {
Log.d("HttpDnsSDK", "resultILogger:" + s);
}
});
// SDK V2.0.0及以上版本
HttpDnsLog.setLogger(new ILogger() {
@Override
public void log(String s) {
Log.d("HttpDnsSDK", "resultILogger:" + s);
}
});
设置是否使用HTTPS协议解析域名
设置是否通过HTTPS协议解析域名,默认设置为false,即通过HTTP协议解析。
接口定义
void setHTTPSRequestEnabled(boolean enabled);
参数说明
参数 | 类型 | 是否必填 | 说明 |
enable | boolean | 是 | 设置是否通过HTTPS协议解析域名,取值如下:
默认设置为false,即通过HTTP协议解析。 |
代码示例
// httpdns为初始化获取的服务实例
httpdns.setHTTPSRequestEnabled(true);
是否允许启用持久化缓存
该功能旨在提升首屏加载速度,但持久化缓存会将上一次解析到的结果保存在本地持久层,App重启后,如果启动持久化缓存会优先从持久层加载解析结果。所以存在第一次使用的IP为过期IP(TTL过期,大多数情况下该IP依然可以正常使用)的可能性。如果业务服务器IP变化较频繁,建议谨慎接入该功能,以免对业务造成影响。另外,持久化缓存影响首次启动/网络切换后域名解析结果,后续解析仍会请求HTTPDNS服务器,并更新本地缓存。
接口定义
void setCachedIPEnabled(boolean enable);
参数说明
参数 | 类型 | 是否必填 | 说明 |
enable | boolean | 是 | 取值如下:
|
代码示例
// httpdns为初始化获取的服务实例
httpdns.setCachedIPEnabled(true);
是否允许启用持久化缓存-是否清除本地缓存
该功能旨在提升首屏加载速度,但持久化缓存会将上一次解析到的结果保存在本地持久层,App重启后,如果启动持久化缓存会优先从持久层加载解析结果。所以存在第一次使用的IP为过期IP(TTL过期,大多数情况下该IP依然可以正常使用)的可能性。如果业务服务器IP变化较频繁,建议谨慎接入该功能,以免对业务造成影响。另外,持久化缓存影响首次启动/网络切换后域名解析结果,后续解析仍会请求HTTPDNS服务器,并更新本地缓存。
接口定义
void setCachedIPEnabled(boolean enable, boolean enable2);
参数说明
参数 | 类型 | 是否必填 | 说明 |
enable | boolean | 是 | 取值如下:
|
enable2 | boolean | 是 | 启用持久化缓存时生效:
|
代码示例
// httpdns为初始化获取的服务实例
httpdns.setCachedIPEnabled(true);
设置是否允许返回TTL过期域名的IP
设置是否允许HTTPDNS返回TTL过期的域名,建议设置为YES(默认为NO)。
当设置为YES时,SDK在实时返回过期IP的同时依然会进行异步更新以获取最新的IP信息。
当设置为NO时,假设已有某个域名的缓存,IP的TTL时间为60s,60s内调用getIpByHostAsync等异步解析接口可以拿到缓存结果;但是在60s之后,首次调用getIpByHostAsync等异步解析接口会直接返回null并且进行异步域名解析更新缓存。
接口定义
void setExpiredIPEnabled(boolean enable);
参数说明
参数 | 类型 | 是否必填 | 说明 |
enable | boolean | 是 | 是否返回TTL过期域名。
|
代码示例
// httpdns为初始化获取的服务实例
httpdns.setExpiredIPEnabled(true);
网络切换自动刷新
设置网络切换时是否自动刷新所有域名解析结果,如果打开此开关,在网络切换时,会自动刷新所有域名的解析结果,但会产生一些流量消耗。
WiFi、蜂窝、无网这三个状态的切换算网络切换。
4G与3G切换不算网络切换。
SIM卡切换也不会单独处理。
接口定义
void setPreResolveAfterNetworkChanged(boolean enable);
参数说明
参数 | 类型 | 是否必填 | 说明 |
enable | boolean | 是 |
|
代码示例
// httpdns为初始化获取的服务实例
httpdns.setPreResolveAfterNetworkChanged(true);
设置网络请求超时时间
设置自定义请求超时时间,默认为15s。
接口定义
void setTimeoutInterval(int timeoutInterval);
参数说明
参数 | 类型 | 是否必填 | 说明 |
timeoutInterval | int | 是 | 单位是毫秒(ms) |
代码示例
// httpdns为初始化获取的服务实例
httpdns.setTimeoutInterval(15 * 1000);
设置region节点
设置region节点,调用后,会按照region更新服务IP。
该功能仅适用于SDK V1.3.2及以上版本。
接口定义
void setRegion(String region);
参数说明
参数 | 类型 | 是否必填 | 说明 |
region | String | 是 | region为节点,设置海外region,用于海外服务区域选择,当前仅支持hk(中国香港节点)和sg(新加坡节点),填写后返回当地的服务节点。 缺省时,使用新加坡节点。 |
代码示例
// httpdns为初始化获取的服务实例
httpdns.setRegion("hk");
清空指定域名缓存
使用阿里云域名解析服务的用户,调用该接口主动清除本地缓存,可实现秒级域名配置生效。 例如:假设域名xxx.com,解析IP地址为ip1, 当ip1遭受攻击,需要将流量迁移至ip2,实现流程如下:
首先,用户在云解析控制台将域名对应IP修改为ip2,此时在HTTPDNS服务端会立即获取到此变更信息,并清除服务端该域名的ip1缓存。
用户手动调用此接口,清空xxx.com域名的本地缓存。
App端清空缓存后的下一次请求,会使得服务端重新请求权威服务器,获取最新解析IP地址ip2,从而使前端解析结果立即生效为ip2。
该功能仅适用于SDK V2.0.3及以上版本。
清空操作会同步清空内存缓存和本地缓存。
接口定义
void cleanHostCache(ArrayList<String> hosts);
参数说明
参数 | 类型 | 是否必填 | 说明 |
hosts | ArrayList<String> | 是 | 需要清除的host域名数组。如果需要清空全部数据,传null或者空数组即可。 |