如何跟踪通过我的应用程序发送和接收的数据的使用情况?
我只想记录我的应用程序运行时发送和接收的字节数.如果我可以获得Wifi和蜂窝网络的单独信息,那么它会很棒但不是优先考虑的事情.
我知道如何查找设备的总使用情况 - /sf/answers/560980871/
此外,我知道我可以使用Instruments收集网络活动数据,但我想在我的应用程序中记录这些数据,因此需要以编程方式执行此操作.
我试图搜索这个,但我找到的只是设备的网络使用情况,而不是特定的应用程序的用法.
以下是Whatsapp的设置 - >使用情况页面的屏幕截图,它可以更好地了解我要做的事情:

我AFNetworking用于HTTP请求和响应如下:
NSData* requestData = [NSJSONSerialization dataWithJSONObject:info options: NSJSONWritingPrettyPrinted error:&error];
if(error != nil) {
NSLog(@"Error: converting JSON: %@, %@", error, error.userInfo);
}
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
[request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
[request setHTTPBody: requestData];
/*
################### ----------------- ###################
WILL [requestData length] BE THE NUMBER OF BYTES SEND ???
################### ----------------- ###################
*/
NSLog(@"data bytes: %d", [requestData length]);
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL .....];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest: request
success: ^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
} failure: ^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
}];
[operation start];
Run Code Online (Sandbox Code Playgroud)
我已经更新了我的问题.
有人可以回答:[requestData length]一个请求的字节数是SEND吗?
有多种方法取决于您使用哪个类来下载AFNetworking
AFHTTPRequestOperation例如有以下方法:
setDownloadProgressBlock:^(NSInteger bytesRead, NSInteger totalBytesRead, NSInteger totalBytesExpectedToRead)
Run Code Online (Sandbox Code Playgroud)
反之,有一个这样的方法:
setUploadProgressBlock:^(NSInteger bytesWritten,long long totalBytesWritten,long long totalBytesExpectedToWrite)
Run Code Online (Sandbox Code Playgroud)
通过这种方法,您应该尝试跟踪所有上传和下载的数据。
AFJSONRequestOperation是 的子类AFHTTPRequestOperation,因此这些方法应该在任一类中工作。
请注意,仅向网络服务器发送“json 请求”并不意味着您没有下载。当然,您必须获取内容 - json - 这将是您下载的数据。
此外,您还询问是否[requestData length]告诉您发送到服务器的正确大小。这不是确切的大小,因为在您的 requestData 中,您没有 HTTP 请求的附加标头,因此您的大小将比发送的原始字节小一点。
每次执行上述方法之一时,您都应该添加读取的字节结果,并将其添加到执行此方法之前读取的字节中。当然,您必须将当前的 bytesRead 永久保存在 coredata 或任何其他持久性存储中。
| 归档时间: |
|
| 查看次数: |
1896 次 |
| 最近记录: |