本文档介绍了在集成 iOS SDK 后,如何验证 HTTPDNS 解析是否生效。
您可以通过查看 SDK 日志的方法验证 HTTPDNS 解析是否生效。
在初始化 SDK 时调用 setHttpDnsMonitorBlock
方法设置监控回调。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ... [[TTDnsResolver shareInstance] setHttpDnsMonitorBlock:^(NSDictionary* json, NSString* logtype) { [TTDnsSdkConfig sharedInstance].getMonitorBlock(json, logtype); }]; }
自行实现监控回调。原生 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 灰度上线过程中,您需要关注您上报的日志信息是否存在异常。如果日志信息出现异常,您需要停止灰度并排查问题。