如何在iOS应用程序中获取蜂窝IP地址

我喜欢在我的应用程序中显示IP地址,我已经知道如何显示WiFi IP地址,但是当我在手机上时,它会显示一个错误,那么有没有一种方法在iPhone上显示手机IP地址?

以下是我用于WiFi IP地址的代码:

NSString *address = @"error"; struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; int success = 0; // retrieve the current interfaces - returns 0 on success success = getifaddrs(&interfaces); if (success == 0) { // Loop through linked list of interfaces temp_addr = interfaces; while (temp_addr != NULL) { if( temp_addr->ifa_addr->sa_family == AF_INET) { // Check if interface is en0 which is the wifi connection on the iPhone if ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) { // Get NSString from C String address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; } } temp_addr = temp_addr->ifa_next; } } // Free memory freeifaddrs(interfaces); NSLog(address); 

我finaly做到了,我使用这个代码:

 struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; NSString *wifiAddress = nil; NSString *cellAddress = nil; // retrieve the current interfaces - returns 0 on success if(!getifaddrs(&interfaces)) { // Loop through linked list of interfaces temp_addr = interfaces; while(temp_addr != NULL) { sa_family_t sa_type = temp_addr->ifa_addr->sa_family; if(sa_type == AF_INET || sa_type == AF_INET6) { NSString *name = [NSString stringWithUTF8String:temp_addr->ifa_name]; NSString *addr = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; // pdp_ip0 //NSLog(@"NAME: \"%@\" addr: %@", name, addr); // see for yourself if([name isEqualToString:@"en0"]) { // Interface is the wifi connection on the iPhone wifiAddress = addr; } else if([name isEqualToString:@"pdp_ip0"]) { // Interface is the cell connection on the iPhone cellAddress = addr; } } temp_addr = temp_addr->ifa_next; } // Free memory freeifaddrs(interfaces); } NSString *addr = wifiAddress ? wifiAddress : cellAddress; NSLog(addr);