HTTPDNS 是面向移动开发者推出的一款域名解析产品,具有域名防劫持、精准调度等特性。
开通 HTTPDNS 服务后,您就可以在管理控制台添加要解析的域名,调用服务 API 进行域名解析。
HTTPDNS 是一款
递归DNS
服务,与权威DNS
不同,HTTPDNS 并不具备决定解析结果的能力,而是主要负责解析过程的实现。关于 HTTPDNS 更详细的介绍可以参考官方博文移动互联网时代,如何优化你的网络 —— 域名解析篇
-
使用 HTTP 协议访问阿里云的服务端,获得域名解析结果,绕过运营商的 Local DNS ,避免域名劫持。
-
HTTPDNS 能够直接得到客户端的出口网关 IP,从而更准确地判断客户端地区和运营商,得到更精准的解析结果。
- HTTPDNS 支持全网域名的解析,包括在阿里云(万网)注册的域名,和其它第三方的域名。
-
HTTPDNS 对外提供简洁的 API 接口,典型场景是移动端 APP 直接调用该接口解析域名,也支持在服务端调用的场景。
-
对于移动端的场景,提供完整的 Android 和 iOS 使用示例。
该Demo提供了App不同应用场景集成HTTPDNS服务的示例。
Demo仅作为原理讲解和示例代码用途, 强烈建议在搞清楚各场景下HTTPDNS接入实现细节和原理后,再集成到App线上环境。
您首先需要登入控制台,创建一个 APP 实体以对应您准备使用的 Demo APP。关于 APP 创建的指引文档可以参考: 《HTTPDNS - 开发指南 - 终端SDK手册 - iOS SDK手册》
创建完 APP 后,您还需要配置您的 APP ,注意 AccountID 的设置,要与控制台保持一致,并根据业务需要选择是否开启鉴权功能。
将工程克隆或下载到本地:
本 Demo 的文件夹名字叫做:httpdns_ios_demo。
项目结构
Demo的结构如下:做下说明:
├── AlicloudHttpDNS.framework # SDK 库
├── AlicloudUtils.framework # SDK 依赖库
├── UTDID.framework # SDK 依赖库
└── httpdns_ios_demo # Demo 演示部分
当您在使用您自己的 APP 集成 SDK 遇到问题时,您可以对比下 demo APP 的配置情况。
3.1 配置 accountID、secretKey
为了使Demo APP能够正常运行,您还需要配置您的accountID/secretKey信息。您可以在移动推送控制台,您在第一步创建的APP中找到它们,如图所示:
用 Xcode 打开 ***.xcodeproj
文件,即可运行该Demo,同时建议打开调试开关:
// 打开HTTPDNS Log,线上建议关闭
[httpdns setLogEnabled:YES];
- 基于网络API NSURLSession/NSURLConnection发送HTTP请求;
- 相关示例代码:
- ViewController
- WebView发起的HTTP网络请求,通过注册的NSURLProtocol拦截后处理;
- 相关示例代码:
- WebViewController
- WebViewURLProtocol
- 基于网络API NSURLSession/NSURLConnection发送HTTPS请求;
- 相关示例代码:
- HTTPSSceneViewController
- 基于WebView/NSURLSession/NSURLConnection发送的HTTPS(SNI场景)网络请求, 经过注册的NSURLProtocol拦截后,基于CFNetwork发出网络请求。
- 相关示例代码:
- SNIViewController
- CFHTTPDNSRequestTaskDelegate
- CFHTTPDNSHTTPProtocol
- CFHTTPDNSRequestTask