You need to enable JavaScript to run this app.
导航

导入和初始化 SDK

最近更新时间2023.09.19 19:25:31

首次发布时间2022.05.20 17:46:16

本文当介绍了如何集成和初始化 HTTPDNS iOS SDK。

在项目中导入 SDK

  1. 创建一个 基于 Cocoapods 的项目,在 Podfile 文件中引用以下依赖项。您可以参见 版本说明 了解最新的 SDK 版本号。

    source 'https://github.com/CocoaPods/Specs.git'
    source 'https://github.com/volcengine/volcengine-specs.git'
    pod 'BDHTTPDNS', '0.13.1' 
    
  2. 在 Podfile 的目录下运行 pod install 命令安装 DBHTTPDNS。

    pod install
    

    如果您收到 Pod 仓库过期的提示,您需要运行以下命令更新 Pod 仓库。

    pod install --repo-update
    
  3. 安装完成后,在您的项目的 Pods/BDHTTPDNS/BDHTTPDNS 目录下,CocoaPods 会生成以下静态库和头文件:

    • libBytedanceHTTPDNS.a
    • TTDnsResolver.h
    • TTDnsExportResult.h
    • TTHttpMnetURLProtocol.h

初始化 SDK

  1. 导入 TTDnsResolver.h 头文件和 TTHttpMnetURLProtocol.h 头文件。

    #import <TTDnsResolver.h>
    #import <TTHttpMnetURLProtocol.h>
    
  2. 实现 TTDnsResolver 类的 setHttpDnsAuthenticationBlock 回调。您可以在该回调中设置初始化 SDK 所需要的信息。例如,您可以将 HTTPDNS 鉴权密钥 中的 Service IDService Key 分别传入 httpDnsAccount 属性和 key 属性。

    说明

    对于 0.11.1 或更高版本的 iOS SDK,您可以在控制台创建应用,并把应用的 应用ID 传入 setHttpDnsAppId 属性。这样,您就可以区分同一火山引擎账号下的多个应用,并且为应用单独配置自定义解析。参见 应用管理 了解详细信息。如果您的 SDK 版本低于 0.11.1,您需要把 SDK 升级到 0.11.1 或更高版本才能使用 应用管理 功能。

    警告

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

[[TTDnsResolver shareInstance] setHttpDnsAuthenticationBlock: ^(void) {
          TTHttpDnsAuthenticationInfo* info = [[TTHttpDnsAuthenticationInfo alloc] init];
          info.httpDnsAccount = @"xxxxx";
          info.key = @"xxxxx";
          info.setHttpDnsAppId = @"xxxxx";
          return info;
  }];
  1. (可选)设置 TTDnsResolver 类的 preloadDomains 属性。该属性指定 SDK 进行预解析的域名列表。您也可以在初始化 SDK 之后设置该属性。

    [TTDnsResolver shareInstance].preloadDomains = @[@"www.a.com", @"www.bytedance.com"];
    
  2. (可选)实现 TTDnsResolver 类的 setHttpDnsMonitorBlock 回调。您可以在该回调中获取 HTTPDNS 监控信息。

    [[TTDnsResolver shareInstance] setHttpDnsMonitorBlock:^(NSDictionary* json, NSString* logtype) {
          NSData* jsonData = [NSJSONSerialization dataWithJSONObject:json options:0 error:0];
          NSString* dataStr = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
          NSLog(@"monitor log: log type: %@,message: %@, ", logtype, dataStr);
    }];
    
  3. (可选)如果您希望使用固定 IP 地址接入 HTTPDNS 服务端,可以调用 setHttpDnsDomainList 方法,设置 SDK 通过固定 IP 地址接入 HTTPDNS 服务端。SDK 默认使用 httpdns.volcengineapi.com 域名接入 HTTPDNS 服务端。您可以调用 setHttpDnsBackupDomainList 方法把域名设置为备用接入方式。

    说明

    固定 IP 地址接入功能处于公测阶段,暂不对外公开。您可以 提交工单 联系我们获取固定 IP 地址

    [[TTDnsResolver shareInstance] setHttpDnsDomainList:@[@"xxx.xxx.xxx.1", @"xxx.xxx.xxx.2"]];
    
  4. 调用 TTDnsResolver 类的 dnsResolverColdStart 方法。该方法对 SDK 进行初始化。调用该方法之后,SDK 开始对预解析域名列表中的域名进行预解析。您必须在实现 setHttpDnsAuthenticationBlock 回调之后调用 dnsResolverColdStart 方法对 SDK 进行初始化。

    [[TTDnsResolver shareInstance] dnsResolverColdStart];
    

接下来您可以

选择集成方案