You need to enable JavaScript to run this app.
导航
获取并运行 iOS 示例项目
最近更新时间:2024.06.11 10:17:16首次发布时间:2023.03.22 20:49:16

您可以下载并运行示例项目,参考不同技术场景下的集成方案。

前提条件

  • 参考 快速入门 在火山引擎移动解析(HTTPDNS)控制台添加以下域名:
    • www.douyin.com

    警告

    示例项目会向上面的域名发送请求。如果您没有在控制台添加域名,HTTPDNS SDK 无法返回 HTTPDNS 服务端的解析结果,只能返回 Local DNS 的解析结果。
    如果您需要在示例项目中向其他域名发送请求,您也需要在控制台添加这些域名。

  • 准备开发环境:
    • 一台 macOS 或 Linux 主机。主机上安装了 Xcode
    • 与主机连接的 iOS 设备或 iOS 模拟器,用于运行示例项目。

操作步骤

  1. 下载并解压缩示例项目。

    BytedanceHTTPDNS_Demo-develop.zip
    未知大小

  2. 在示例项目的 example 目录运行 pod 命令安装依赖。如果您收到 out-of-date source repos 的提示,需要运行 pod install --repo-update 命令。

    pod install
    
  3. 使用 Xcode 打开 example 目录下的 .xcworkspace 文件。

  4. 打开 TTAppDelegate.m 文件。在 info.httpDnsAccount 属性和 info.key 属性中分别填入您的 Service ID 和 Secret Key。Service ID 和 Secret Key 的获取方法参考 获取鉴权密钥

    警告

    示例代码了方便功能演示,直接在返回值传入 Service ID 和 Secret Key。在生产环境中,您需要避免直接传入明文。例如,您可以预先把明文进行编码或加密处理,在传值的时候再对已编码或加密的明文进行解码或解密。同时,您必须对 app 进行代码混淆处理。否则,您的 Service ID 和 Secret Key 可能会被第三方通过反编译的方式获得。

    [[TTDnsResolver shareInstance] setHttpDnsAuthenticationBlock: ^(void) {
          TTHttpDnsAuthenticationInfo* info = [[TTHttpDnsAuthenticationInfo alloc] init];
          info.httpDnsAccount = @"your_service_id";
          info.key = @"your_secret_key";
          return info;
    }];
    
  5. 连接 iOS 真机或模拟器。编译并运行项目。
    图片

结果验证

您可以在文本框填入您需要访问的网站 URL,例如 www.douyin.com。然后,您可以点击文本框下方的按钮,发送不同类型的请求。

(可选)DoH - PrivacyContext

通过 PrivateContext 更改移动解析 HTTPDNS 的 DNS 请求类型。
示例项目默认发送 HTTPDNS 请求。点击该按钮后,示例项目会发送 DoH 请求。

注意

您只能在 iOS 真机上验证该功能。

你必须确保已完成以下操作。否则按钮不生效。

  1. 在控制台开启 DoH 功能并获取 DoH 地址。参见 开启 DoH 并获取接入域名
  2. TTViewController.m 文件中设置 DoH 地址。
    - (void)privacyContextButtonClicked {
        if (@available(iOS 14.0, *)) {
            // 设置您在控制台获取的 DoH 地址
            nw_endpoint_t dohEndpoint = nw_endpoint_create_url("https://doh-xxxxxxxxxxxxxxx.volcdns.pub/dns-query");
            nw_resolver_config_t dohResolver = nw_resolver_config_create_https(dohEndpoint);
            nw_privacy_context_require_encrypted_name_resolution(NW_DEFAULT_PRIVACY_CONTEXT, true, dohResolver);
            
            NSURL* url = [NSURL URLWithString:self.urlInput.text];
            NSURLRequest* request = [NSURLRequest requestWithURL:url];
            [self sendRequestWithoutHook:request];
    

(可选)DoH - DNS Setting

通过 NEDNSSettingsManager 更改移动解析 HTTPDNS 的 DNS 请求类型。示例项目默认发送 HTTPDNS 请求。点击该按钮后,示例项目会发送 DoH 请求。

注意

您只能在 iOS 真机上验证该功能。

你必须确保已完成以下操作。否则按钮不生效。

  1. 在控制台开启 DoH 功能并获取 DoH 地址。参见 开启 DoH 并获取接入域名

  2. TTDNSSettingsManager.swift 文件中设置 DoH 地址。

    let doh = NEDNSOverHTTPSSettings()
    // 设置您在控制台获取的 DoH 地址
    doh.serverURL = URL(string: "https://doh-xxxxxxxxxxxxxxx.volcdns.pub/dns-query")
    
  3. 代码运行后,DNS 配置会被安装到 iOS 系统。为了让 DNS 配置生效,您需要在 iOS 设备的 设置 > 通用 > VPN 与设备管理 > DNS 中手动启用 DNS 配置。

您可以参考下面的视频了解如何手动启用 DNS 配置。


WKWebview

App 界面会通过 WKWebView 渲染您指定的网站。请求完成之后,您可以在界面上看到网页。

HTTPS POST request with SNI

App 会发送带 SNI(Server Name Indication) 信息的 HTTP POST 请求。您可以在界面上看到打印的日志。

HTTPS GET request with SNI

App 会发送带 SNI 信息的 HTTP GET 请求。请求完成之后,您可以在界面上看到打印的日志。

AFNetworking

App 会通过 AFNetworking 库发送请求。请求完成之后,您可以在界面上看到打印的日志。

Swift - Alamofire

App 会通过 Alamofire 库发送请求。请求完成之后,您可以在界面上看到打印的日志。

Swift - URLSession

App 会通过 NSURLSession 库发送请求。请求完成之后,您可以看到打印的日志。

查看解析请求统计数据

参考 查看解析请求统计数据 查看您发送的解析请求信息。

排障指南

如果您在运行示例项目时,无法获取 HTTPDNS 服务端的解析结果或遇到错误,您可以参考 常见问题

接下来您可以

在自己的 iOS 项目里集成 HTTPDNS SDK
HTTPDNS iOS SDK 的集成较为复杂。您也可以在 iOS 项目中通过 DoH 接入 HTTPDNS 服务端。DoH 功能不依赖 HTTPDNS iOS SDK。您可以直接通过 iOS 的原生方法接入 DoH。参见 在 iOS 客户端配置 DoH