You need to enable JavaScript to run this app.
导航
验证 HTTPDNS 解析是否生效
最近更新时间:2024.08.15 19:55:59首次发布时间:2024.02.20 14:59:57

本文档介绍了在集成 iOS SDK 后,如何验证 HTTPDNS 解析是否生效。
您可以通过查看 SDK 日志的方法验证 HTTPDNS 解析是否生效。

操作步骤

  1. 在初始化 SDK 时调用 setHttpDnsMonitorBlock 方法设置监控回调。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    
       ...
    
       [[TTDnsResolver shareInstance] setHttpDnsMonitorBlock:^(NSDictionary* json, NSString* logtype) {
           [TTDnsSdkConfig sharedInstance].getMonitorBlock(json, logtype);
       }];
    }
    
  2. 自行实现监控回调。原生 NSURLProtocol 集成方案、WKWebView 集成方案和自定义 NSURLProtocol 集成方案的监控回调实现有差异。

    - (Monitorblock)getMonitorBlock {
        Monitorblock block = ^(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);
        };
        return block;
    }
    

例如,下面的日志说明 HTTPDNS 解析生效。

request success
200
Optional("<NSHTTPURLResponse: 0x6000008b0560> { URL: https://www.douyin.com/ } { Status Code: 200, Headers {\n    \"Content-Encoding\" =     (\n        br\n    );\n    \"Content-Type\" =     (\n        \"text/html\"\n    );\n    Date =     (\n        \"Mon, 19 Feb 2024 10:35:22 GMT\"\n    );\n    Server =     (\n        Tengine\n    );\n    \"Strict-Transport-Security\" =     (\n        \"max-age=31536000; includeSubDomains; preload\"\n    );\n    Vary =     (\n        \"Accept-Encoding\"\n    );\n    Via =     (\n        \"live6.cn622[74,0]\"\n    );\n    eagleid =     (\n        8be3e62a17083389226378096e\n    );\n    \"server-timing\" =     (\n        \"inner; dur=32, tt_agw; dur=19\",\n        \"cdn-cache;desc=MISS,edge;dur=0,origin;dur=74\"\n    );\n    \"timing-allow-origin\" =     (\n        \"*\"\n    );\n    \"tt_stable\" =     (\n        1\n    );\n    \"x-agw-info\" =     (\n        \"k-HDB7Wk8En_IJOj_xGEjw4uNR_KxttVV9ne79KdD_guckpioEU80NNONl7zzbRwlS9tGHUfmpl5DLCrbyUxX99-7uN5mb54sHCMDbhepOJub2Di5an4Od0zMOVCZJ0Q8-RNrZfQukdyHNSoE2l1Xoe2fiA=\"\n    );\n    \"x-tt-logid\" =     (\n        2024021918352223412BC492F09306E817\n    );\n    \"x-tt-trace-host\" =     (\n        01b7017dff4ce0f406a999452065523f2eeba9e740373653184752922b0275ddb5a3b8f863347f62661a7b49110bf3c462717df38821032b585e7ae47e70e86d0e6ba12bc05a57bfc5e44ad691f47a77a5ddfdde18a83abe70da6574f7ed4dbc83\n    );\n    \"x-tt-trace-id\" =     (\n        \"00-24021918352223412BC492F09306E817-7196BE6E024F2DEA-00\"\n    );\n    \"x-tt-trace-tag\" =     (\n        \"id=03;cdn-cache=miss;type=dyn\"\n    );\n} }")

后续步骤

在您的 App 上线前,火山引擎建议您把 HTTPDNS SDK 返回的日志信息上报到您的 App 服务端,用于记录和数据统计。建议上报的日志信息包括 DNS 解析结果来源、解析异常错误码、SDK 解析耗时、SDK 是否命中缓存等。

在 App 灰度上线过程中,您需要关注您上报的日志信息是否存在异常。如果日志信息出现异常,您需要停止灰度并排查问题。