全部产品

Unity框架最佳实践

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,如果项目有其他地方也需要定制这些文件,请注意合并修改内容。

配置

  1. 在使用httpdns之前请先初始化。

        // 初始化需要在平台申请的accountId,如果开启了鉴权,需要填写secret,如果没有开启可以传空字符串
        HttpDnsHelper.init("accountId", "secret");
  1. 其他一些常用的配置:

        //开启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说明AndroidiOS。

debug

启用debug日志。

public static void debug(bool enable)

setLogger

设置日志接收接口。

public static void setLogger(Action<string> logger)

setPreResolveAfterNetworkChanged

网络变化后,自动解析域名。

 public static void setPreResolveAfterNetworkChanged(bool enable)

参考原生API说明AndroidiOS

setExpiredIPEnabled

允许使用ttl过期IP。

public static void setExpiredIPEnabled(bool enable)

参考原生API说明AndroidiOS

setCachedIPEnabled

开启本地缓存。

 public static void setCachedIPEnabled(bool enable)

参考原生API说明AndroidiOS

setPreResolveHosts

设置预解析的域名,type取值说明如下:

1:表示解析ipv4地址;2:表示解析ipv6地址;3:表示ipv4、ipv6都需要解析。

 public static void setPreResolveHosts(List<string> hosts, int type)

参考原生API说明AndroidiOS

setAuthCurrentTime

校正本地时间,避免鉴权失败。

public static void setAuthCurrentTime(long time)

参考原生API说明AndroidiOS

setHttpsRequestEnabled

开启使用https接口解析域名,默认使用http。

public static void setHttpsRequestEnabled(bool enable)

参考原生api说明Android

setTimeoutInterval

设置域名解析请求的超时时间。

public static void setTimeoutInterval(int time)

参考原生API说明AndroidiOS

setRegion

设置region节点,调用后,会按照region更新服务IP。

public static void setRegion(string region)

参考原生API说明AndroidiOS

getIpsByHostAsync

解析域名ipv4地址。

public static List<string> getIpsByHostAsync(string host)

参考原生API说明AndroidiOS

getIpv6sByHostAsync

解析域名ipv6地址。

public static List<string> getIpv6sByHostAsync(string host)

参考原生API说明Android

setIPProbeList

设置IP优选域名。

 public static void setIPProbeList(List<ProbeItem> probeItems)
 
 public class ProbeItem
 {
         public string host;
         public int port;
 }

参考原生API说明AndroidiOS

setDegradationFilter

设置域名的解析过滤逻辑。

public static void setDegradationFilter(Func<string, bool> filter)

参考原生API说明AndroidiOS

getSessionId

获取用户sessionId。

public static string getSessionId()

参考原生API说明AndroidiOS

enableIpv6

开启ipv6解析。

public static void enableIpv6(bool enable)

参考原生API说明iOS