直播云

  • 直播云 > 常见问题 > Android 知识库 >DNS 缓存管理服务 解决部分小运营商解析问题

    DNS 缓存管理服务 解决部分小运营商解析问题

    最近更新时间: 2017-08-21 17:11:26

    问题 部分客户会存在这样的现象 部分的流存拉取不了的(这类客户主要是小运营商问题 例如 长宽)因为我们内部有做解析缓存,把之前的成功的缓存了,后面进来的时候,就直接用,但是因为运营商的缘故,运营商的出口ip 和dns 都是比较容易改变 所以之前成功的现在可能无法访问,所以要把缓存清掉,重新解析播放

    安卓的播放器操作:

    传入的播放地址:protocol://domain/path

    转换后的播放地址:protocol://ip/path?domain=xxxx.com

    PLNetworkManager 类的使用方法描述如下:

    添加 happydns 的依赖

    dependencies {
        compile 'com.qiniu:happy-dns:0.2.+'
    }
    

    添加网络状态监测的权限

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    

    启动 DNS 缓存管理服务

    public void startDnsCacheService(Context context);
    public void startDnsCacheService(Context context, String[] domainList);
    

    提前传入待解析的域名列表会在第一次播放时得到更好的体验,不提前传入也没有问题,每次播放前,DNS 缓存服务会自动缓存播放域名。

    停止 DNS 缓存管理服务

    public void stopDnsCacheService(Context context);
    

    使用自己的 DNS 解析服务器 PLNetworkManager 类默认使用了 "119.29.29.29" 服务器完成域名解析,当然,你也可以配置为自己的域名服务器,接口如下:

    public void setDnsServer(String server);
    

    DNS 缓存更新时间间隔 PLNetworkManager 类默认的DNS缓存更新时间间隔是 100 秒,内部会根据域名服务器返回的 TTL 来判断是否需要向服务器发起一次查询请求,一般的域名服务器的 TTL 是 600 秒,建议这个更新时间间隔不要超过 600 秒,配置接口如下:

    public void setDnsCacheUpdateInterval(int milliseconds);
    

    ios播放器的操作

    传入的播放地址:protocol://domain/path

    转换后的播放地址:protocol://ip/path?domain=xxxx.com

    添加 happydns 的依赖

    pod 'HappyDNS'
    

    开启与关闭 DNS 解析状态,默认为开启

    extern NSString * _Nonnull PLPlayerOptionKeyHappyDNSEnable;
    

    提前传入待解析的域名列表会在第一次播放时得到更好的体验,不提前传入也没有关系,每次播放前,DNS 缓存服务会自动缓存播放域名 预解析播放地址的域名

    + (void)preDNSHost:(nullable NSURL *)URL;
    

    使用 DNS 解析,默认使用了 "119.29.29.29" 服务器完成域名解析,当然,你也可以配置为自己的域名服务器

    extern NSString * _Nonnull PLPlayerOptionKeyDNSManager;
    
    以上内容是否对您有帮助?
  • Qvm free helper
    Close