- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我搜索过这个主题,但发现很少有有用的细节。有了这些细节,我尝试编写一些代码如下。
注意:在将此帖子标记为重复之前,请将此帖子中共享的详细信息与其他帖子进行比较,而不仅仅是按主题。
- (NSArray *)getDataCountersForType:(int)type {
BOOL success;
struct ifaddrs *addrs = nil;
const struct ifaddrs *cursor = nil;
const struct sockaddr_dl *dlAddr = nil;
const struct if_data *networkStatisc = nil;
int dataSent = 0;
int dataReceived = 0;
success = getifaddrs(&addrs) == 0;
if (success) {
cursor = addrs;
while (cursor != NULL) {
if (cursor->ifa_addr->sa_family == AF_LINK) {
dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr;
networkStatisc = (const struct if_data *) cursor->ifa_data;
if (type == WiFi) {
dataSent += networkStatisc->ifi_opackets;
dataReceived += networkStatisc->ifi_ipackets;
}
else if (type == WWAN) {
dataSent += networkStatisc->ifi_obytes;
dataReceived += networkStatisc->ifi_ibytes;
}
}
cursor = cursor->ifa_next;
}
freeifaddrs(addrs);
}
return [NSArray arrayWithObjects:[NSNumber numberWithInt:dataSent], [NSNumber numberWithInt:dataReceived], nil];
}
此代码收集 iPhone 设备(不仅仅是我的应用程序)的互联网使用信息。
现在,如果我通过 WiFi 或 3G 使用互联网,我只能在 ifi_obytes
中获取数据(字节) (已发送)和 ifi_ibytes
(已收到)但我认为我应该在 ifi_opackets
中使用 WiFi和 ifi_ipackets
.
还想补充一点,如果我连接到 WiFi 网络,但不使用互联网,我仍然会获得附加值到 ifi_obytes
Và ifi_ibytes
.
可能是我在执行或理解上有误。需要有人帮助我。
编辑:代替AF_LINK
我试过 AF_INET
( sockaddr_in
thay vì sockaddr_dl
)。这会使应用程序崩溃。
câu trả lời hay nhất
pdp_ip0
是接口(interface)之一,所有pdpXXX
Tất cảWWAN
接口(interface),专用于不同的功能,语音邮件,通用网络接口(interface)。
我在 Apple 论坛上读到:操作系统不会逐个进程地保留网络统计信息。因此,这个问题没有确切的解决方案。但是,您可以获得每个网络接口(interface)的网络统计信息。
一般来说,en0
是您的Wi-Fi
接口(interface),pdp_ip0
是您的WWAN
接口(interface)。
没有很好的方法来获取信息 wifi/蜂窝网络数据,因为,特定的日期时间!
数据统计(ifa_data->ifi_obytes
Vàifa_data->ifi_ibytes
)是从之前的设备重启中存储的。
我不知道为什么,但是 ifi_opackets
Và ifi_ipackets
只为 lo0
显示(我认为它的主要界面)。
是的。然后设备通过 WiFi
连接并且不使用互联网 if_iobytes
值仍然存在,因为此方法提供网络字节交换而不仅仅是互联网。
#include
#include
static NSString *const DataCounterKeyWWANSent = @"WWANSent";
static NSString *const DataCounterKeyWWANReceived = @"WWANReceived";
static NSString *const DataCounterKeyWiFiSent = @"WiFiSent";
static NSString *const DataCounterKeyWiFiReceived = @"WiFiReceived";
NSDictionary *DataCounters()
{
struct ifaddrs *addrs;
const struct ifaddrs *cursor;
u_int32_t WiFiSent = 0;
u_int32_t WiFiReceived = 0;
u_int32_t WWANSent = 0;
u_int32_t WWANReceived = 0;
if (getifaddrs(&addrs) == 0)
{
cursor = addrs;
while (cursor != NULL)
{
if (cursor->ifa_addr->sa_family == AF_LINK)
{
#ifdef GỠ LỖI
const struct if_data *ifa_data = (struct if_data *)cursor->ifa_data;
if (ifa_data != NULL)
{
NSLog(@"Interface name %s: sent %tu received %tu",cursor->ifa_name,ifa_data->ifi_obytes,ifa_data->ifi_ibytes);
}
#kết thúc nếu
// name of interfaces:
// en0 is WiFi
// pdp_ip0 is WWAN
NSString *name = @(cursor->ifa_name);
if ([name hasPrefix:@"en"])
{
const struct if_data *ifa_data = (struct if_data *)cursor->ifa_data;
if (ifa_data != NULL)
{
WiFiSent += ifa_data->ifi_obytes;
WiFiReceived += ifa_data->ifi_ibytes;
}
}
if ([name hasPrefix:@"pdp_ip"])
{
const struct if_data *ifa_data = (struct if_data *)cursor->ifa_data;
if (ifa_data != NULL)
{
WWANSent += ifa_data->ifi_obytes;
WWANReceived += ifa_data->ifi_ibytes;
}
}
}
cursor = cursor->ifa_next;
}
freeifaddrs(addrs);
}
return @{DataCounterKeyWiFiSent : @(WiFiSent),
DataCounterKeyWiFiReceived : @(WiFiReceived),
DataCounterKeyWWANSent : @(WWANSent),
DataCounterKeyWWANReceived : @(WWANReceived)};
}
改进了复制/粘贴支持!
关于iPhone 数据使用跟踪/监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7946699/
Nếu tôi sử dụng NSUserDefaults để lưu trữ cài đặt ứng dụng của mình, có cách nào để "ẩn" cài đặt ứng dụng của tôi hiển thị trong ứng dụng Cài đặt thông thường trên iPhone không? Tôi biết có những công cụ khác như mySetti
Tôi đã làm theo hướng dẫn từ trang web này: http://theappleblog.com/2008/08/04/tutorial-build-a-simple-rss-reader-for-iphone/ để thực hiện
Tôi đã thực hiện bản địa hóa bằng cách thay đổi ngôn ngữ của iPhone bằng localisableString và xib khác chỉ cho phương thức NSLocale nhưng yêu cầu của ứng dụng là bản địa hóa bằng cách thay đổi ngôn ngữ trong cài đặt ứng dụng Xem
Tôi đang cố gắng tìm hiểu xem liệu iPhone có thể kết nối với một thiết bị khác không phải iPhone qua mạng không dây hoặc Bluetooth hay không nhưng tôi thấy có thông tin mâu thuẫn. Hầu hết những gì tôi tìm thấy đều có trước khi phát hành SDK 3.0, khi điều đó chắc chắn là không thể thực hiện được. xem đống
Câu hỏi này đã có câu trả lời ở đây: Đã đóng 7 năm trước. Có thể trùng lặp: Cách phát hiện iPhone
Khi tôi chạy ứng dụng của mình trên trình mô phỏng, nó luôn tạo ra một màn hình trống màu trắng. Nhưng khi tôi thoát ứng dụng bằng nút iPhone màu đen ở dưới cùng, Chế độ xem sẽ hiển thị sau khi vào lại ứng dụng. Ứng dụng sau đó chạy như bình thường. Nhưng khi tôi tải nó vào
Ý tôi là hai thiết bị iPhone phải được kết nối qua Bluetooth hoặc WiFi và giao diện người dùng của một thiết bị phải được mở rộng sang thiết bị iPhone kia (không chia sẻ màn hình). Có cách nào chúng ta có thể làm điều này trong iOS không? Câu trả lời hay nhất
Làm cách nào để phát hiện kiểu thiết bị thông qua macro? Tôi đã sử dụng một cái gì đó tương tự nhưng kết quả trên trình mô phỏng luôn là IS_IPHONE_5 #define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInt
Tôi hiện có một ứng dụng yêu cầu người dùng duy trì đường hầm VPN. Trong khi tải, tôi kiểm tra xem đường hầm VPN có sẵn không. Tôi đã tự hỏi liệu có cách nào để hiển thị UIAlertView mà sau khi nhấp vào "OK", người dùng sẽ được đưa đến màn hình cài đặt chính của iPhone để
Tôi đang phát triển một ứng dụng khách iPhone cho phép người dùng xếp hạng các dịch vụ khác nhau. Không cần đăng ký hoặc đăng nhập. Yêu cầu là người dùng không thể xếp hạng dịch vụ nhiều lần (mặc dù xếp hạng của họ có thể thay đổi). Hiện tại, ứng dụng có thể được gỡ bỏ, cài đặt lại,
Ví dụ: nếu tôi nhấp vào biểu tượng ứng dụng iphone, nó sẽ tạo tệp .app khi khởi chạy. Vậy có thể gọi ứng dụng iPhone khác từ ứng dụng này được không. Hoặc chúng ta có thể làm điều gì đó trong tệp .app đó như nó sẽ làm
Có thực sự có thể làm cho chế độ im lặng của iPhone độc lập với Ứng dụng iPhone không? Ứng dụng "Talking Carl" này làm tôi bối rối. IPhone của tôi ở chế độ im lặng. Bất cứ khi nào tôi mở ứng dụng này. Âm thanh ứng dụng đang ở chế độ bật
Câu hỏi này dường như không hữu ích cho bất kỳ khách truy cập nào trong tương lai; nó chỉ liên quan đến một khu vực địa lý nhỏ, một thời điểm cụ thể hoặc một tình huống rất hẹp và thường không áp dụng cho khán giả Internet trên toàn thế giới. Để được trợ giúp làm cho câu hỏi này có thể áp dụng rộng rãi hơn, hãy truy cập
Nếu tôi muốn viết một số ứng dụng iPhone tùy chỉnh nhưng không nhất thiết phải phân phối chúng thông qua App Store, liệu tôi có thể làm điều đó mà không cần tham gia Chương trình nhà phát triển iPhone không? Giả sử tôi chỉ muốn viết một số tiện ích nhỏ cho bản thân và đưa nó vào
Ý kiến và/hoặc trải nghiệm của mọi người với các công cụ trò chơi như Unity hoặc Torque Engine là gì? Nếu bạn là người mới bắt đầu phát triển trò chơi trên iPhone, liệu bạn có nên học một trong những công cụ này không? Các ứng dụng do các công cụ này tạo ra khác với các ứng dụng gốc sử dụng SDK.
Bạn có thể phân phối ứng dụng iPhone để thử nghiệm trong Trình mô phỏng iPhone trên máy tính chưa cài đặt công cụ phát triển XCode không? Tôi có thể cài đặt trình giả lập trực tiếp trên máy tính để thử nghiệm không? Tôi có một nhóm người thử nghiệm không phải là nhà phát triển ngoại trừ khả năng chạy
Tôi muốn xây dựng và cài đặt ứng dụng của mình trên thiết bị đã bẻ khóa của mình mà không phải trả 99 USD cần thiết cho Chương trình dành cho nhà phát triển iPhone. Tôi có Rock và Cydia... Cách dễ nhất (nếu có thể) là gì? Cảm ơn. Câu trả lời hay nhất là cái này
Tôi muốn kiểm tra một trang web để xem nó hoạt động như thế nào với iPhone nhưng tôi không có iPhone hoặc iPod touch. Có cách nào để tôi kiểm tra trang web của mình hoạt động như thế nào mà không cần sở hữu nó không? Điều tôi thực sự muốn là sửa chữa Stack
Nói một cách đơn giản; 99 đô la của tôi mang lại cho tôi điều gì mà tôi không thể nhận được miễn phí? Được rồi, được rồi, nghe có vẻ là một câu hỏi ngu ngốc, nhưng trang web của Apple đối với tôi không rõ ràng. Linh cảm của tôi là bạn có thể gửi ứng dụng lên cửa hàng ứng dụng với giá 99, nhưng bạn có thể làm điều đó miễn phí
Tôi là nhà phát triển iOS đã đăng ký. Làm cách nào để chuyển ứng dụng iPhone sang iPhone cá nhân của tôi? Câu trả lời tốt nhất để thử nghiệm? Chỉ cần chọn thiết bị của bạn thay vì trình giả lập. Giới thiệu về iPhone - Làm cách nào để chuyển đổi iPhone của tôi sang
Tôi là một lập trình viên xuất sắc, rất giỏi!