美文网首页
Afnetworking 各参数设置以获取网络状态监控参数

Afnetworking 各参数设置以获取网络状态监控参数

作者: 凤舞玖天 | 来源:发表于2022-01-24 21:56 被阅读0次

#if PRINT_MATRICS_SUPPORT

        [self enableMetricsSupport];

#endif

#if PRINT_MATRICS_SUPPORT

- (void)enableMetricsSupport {

        NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc] init];

        [_dateFormatter setFormatterBehavior:NSDateFormatterBehavior10_4]; // 10.4+ style

        [_dateFormatter setDateFormat:@"yyyy/MM/dd HH:mm:ss:SSS"];

        [self.client setTaskDidFinishCollectingMetricsBlock:^(NSURLSession * _Nonnull session, NSURLSessionTask * _Nonnull task, NSURLSessionTaskMetrics * _Nullable metrics) {

            PRINT(@"【NETWORK】task origin url:%@, current url:%@\n metrics.redirectCount:%lu\n task开始时间:%@,结束时间:%@,消耗时间:%fms\n",task.originalRequest.URL.absoluteString, task.currentRequest.URL.absoluteString, (unsigned long)metrics.redirectCount, [_dateFormatter stringFromDate:metrics.taskInterval.startDate],[_dateFormatter stringFromDate:metrics.taskInterval.endDate],metrics.taskInterval.duration * 1000);

           PRINT(@"【NETWORK】metric statistics begin ------------>\n");

           for (NSURLSessionTaskTransactionMetrics *metric in metrics.transactionMetrics) {

                if (metric) {

                    if (@available(iOS 13.0, *)) {

                        PRINT(@"metric.localAddress:%@",metric.localAddress);

                        PRINT(@"metric.remoteAddress:%@",metric.remoteAddress);

                    } else {

                        // Fallback on earlier versions

                    }

                    //请求开始时间

                    NSString *sreq = [NSString stringWithFormat:@"%@", [_dateFormatter stringFromDate:metric.fetchStartDate]];

                    //域名解析时间

                    NSString *dnst = [NSString stringWithFormat:@"%@,%@,%fms",[_dateFormatter stringFromDate:metric.domainLookupStartDate],[_dateFormatter stringFromDate:metric.domainLookupEndDate],[metric.domainLookupEndDate timeIntervalSinceDate:metric.domainLookupStartDate] * 1000];

                    //连接建立时间

                    NSString *cnnt = [NSString stringWithFormat:@"%@,%@,%fms",[_dateFormatter stringFromDate:metric.connectStartDate],[_dateFormatter stringFromDate:metric.connectEndDate],[metric.connectEndDate timeIntervalSinceDate:metric.connectStartDate] * 1000];

                    //ssl验证时间

                    NSString *sslt = [NSString stringWithFormat:@"%@,%@,%fms",[_dateFormatter stringFromDate:metric.secureConnectionStartDate],[_dateFormatter stringFromDate:metric.secureConnectionEndDate], [metric.secureConnectionEndDate timeIntervalSinceDate:metric.secureConnectionStartDate] * 1000];

                    //从客户端发送HTTP请求到服务器所耗费的时间

                    NSString *sdt = [NSString stringWithFormat:@"%@,%@,%fms",[NSString stringWithFormat:@"%@", [_dateFormatter stringFromDate:metric.requestStartDate]],[NSString stringWithFormat:@"%@", [_dateFormatter stringFromDate:metric.requestEndDate]],[metric.requestEndDate timeIntervalSinceDate:metric.requestStartDate] * 1000];

                    //客户端从开始接收数据到接收完所有数据的时间

                    NSString *rcvt = [NSString stringWithFormat:@"%fms", [metric.responseEndDate timeIntervalSinceDate:metric.responseStartDate] * 1000];

                    //响应报文首字节到达时间

                    NSString *wtt = [NSString stringWithFormat:@"%fms", [metric.responseStartDate timeIntervalSinceDate:metric.requestEndDate] * 1000];

                    //请求结束时间

                    NSString *eres = [NSString stringWithFormat:@"%@", [_dateFormatter stringFromDate:metric.responseEndDate]];

                    //网络请求总时间

                    NSString *ttt = [NSString stringWithFormat:@"%fms", [metrics.taskInterval duration] * 1000];

                   PRINT(@"【NETWORK】metric url:%@, \n请求开始时间:%@, \n域名解析时间:%@, \n连接建立时间:%@, \nssl验证时间:%@, \n从客户端发送请求到服务器耗费的时间:%@, \n响应报文首字节到达时间:%@, \n客户端从开始接收数据到接收完所有数据的时间:%@, \n请求结束时间:%@, \n网络请求总时间:%@ \n ",metric.request.URL.absoluteString,sreq,dnst,cnnt,sslt,sdt,rcvt,wtt,eres,ttt);

                }

            }

            PRINT(@"【NETWORK】<------------ metric statistics end\n");

        }];

}

#endif

相关文章

网友评论

      本文标题:Afnetworking 各参数设置以获取网络状态监控参数

      本文链接:https://www.haomeiwen.com/subject/hgrihrtx.html