Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
随着使用Unity开发的移动应用越来越多,应用类型越来越广泛,我们专门提供了针对Unity的HTTPDNS插件,方便Unity开发者以熟悉方式接入HTTPDNS功能。
环境说明
Unity 2019.4.21f1c1
项目说明
项目地址:下载地址
本项目是一个unity demo项目,Assets/Plugins目录下为插件代码。
集成操作
1. 复制Assets/Plugins到unity项目
目前插件直接以文件的方式提供,后续再考虑封装为Unity Package。
插件使用了Custom Main Gradle TemplateCustom Base Gradle TemplateCustom Proguard File,如果项目有其他地方也需要定制这些文件,请注意合并修改内容。
配置
在使用httpdns之前请先初始化。
// 初始化需要在平台申请的accountId,如果开启了鉴权,需要填写secret,如果没有开启可以传空字符串
HttpDnsHelper.init("accountId", "secret");
其他一些常用的配置:
//开启debug日志
HttpDnsHelper.debug(true);
// 输出日志
HttpDnsHelper.setLogger((log) => Debug.Log(log));
// 开启网络变化自解析
HttpDnsHelper.setPreResolveAfterNetworkChanged(true);
// 允许使用过期IP
HttpDnsHelper.setExpiredIPEnabled(true);
// 本地缓存IP
HttpDnsHelper.setCachedIPEnabled(true);
List<string> list = new List<string>();
list.Add("www.taobao.com");
// 预解析域名
HttpDnsHelper.setPreResolveHosts(list);
// 使用https请求解析域名
HttpDnsHelper.setHttpsRequestEnabled(true);
// 配置域名解析请求的超时时长
HttpDnsHelper.setTimeoutInterval(3000);
API
接口类为Assets/Plugins/HttpDnsHelper.cs。
调用示例请参考Assets/DownloadListener.cs。
主要方法如下:
init初始化
必须先初始化,才能正常使用。
public static void init(string accountId, string secret)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
debug
启用debug日志。
public static void debug(bool enable)
setLogger
设置日志接收接口。
public static void setLogger(Action<string> logger)
setPreResolveAfterNetworkChanged
网络变化后,自动解析域名。
public static void setPreResolveAfterNetworkChanged(bool enable)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
setExpiredIPEnabled
允许使用ttl过期IP。
public static void setExpiredIPEnabled(bool enable)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
setCachedIPEnabled
开启本地缓存。
public static void setCachedIPEnabled(bool enable)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
setPreResolveHosts
设置预解析的域名,type取值说明如下:
1:表示解析ipv4地址;2:表示解析ipv6地址;3:表示ipv4、ipv6都需要解析。
public static void setPreResolveHosts(List<string> hosts, int type)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
setAuthCurrentTime
校正本地时间,避免鉴权失败。
public static void setAuthCurrentTime(long time)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
setHttpsRequestEnabled
开启使用HTTPS接口解析域名,默认使用http。
public static void setHttpsRequestEnabled(bool enable)
原生API说明请参见Android SDK API接口。
setTimeoutInterval
设置域名解析请求的超时时间。
public static void setTimeoutInterval(int time)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
setRegion
设置region节点,调用后,会按照region更新服务IP。
public static void setRegion(string region)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
getIpsByHostAsync
解析域名ipv4地址。
public static List<string> getIpsByHostAsync(string host)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
getIpv6sByHostAsync
解析域名ipv6地址。
public static List<string> getIpv6sByHostAsync(string host)
原生API说明请参见Android SDK API接口。
setIPProbeList
设置IP优选域名。
public static void setIPProbeList(List<ProbeItem> probeItems)
public class ProbeItem
{
public string host;
public int port;
}
原生API说明请参见Android SDK API接口或iOS SDK API接口。
setDegradationFilter
设置域名的解析过滤逻辑。
public static void setDegradationFilter(Func<string, bool> filter)
原生API说明请参见Android SDK API接口或iOS SDK API接口。
getSessionId
获取用户sessionId。
public static string getSessionId()
原生API说明请参见Android SDK API接口或iOS SDK API接口。
enableIpv6
开启ipv6解析。
public static void enableIpv6(bool enable)
原生API说明请参见iOS SDK API接口。