在我的应用程序中,我需要获取一个 NSString 对象值,该值等于用户公共/互联网 IP 地址的值。我已经尝试过解决这个问题的方法,但两者都返回本地 IP 地址不公开。下面是我的两种方法。一种更精确,并且始终返回数组中的正确项。另一个没有。(因为只是选择一个随机索引)......
- (NSString *)getPublicIP {
NSHost *publicIP = [[[NSHost currentHost] addresses] objectAtIndex:0];
return publicIP;
}
其他更准确的:(但没有获得公共IP)
//start get ip
- (NSString *)getIPWithNSHost {
NSArray *addresses = [[NSHost currentHost] addresses];
NSString *stringAddress;
for (NSString *anAddress in addresses) {
if (![anAddress hasPrefix:@"127"] && [[anAddress componentsSeparatedByString:@"."] count] == 4) {
stringAddress = anAddress;
break;
}
else {
stringAddress = @"IPv4 address not available" ;
}
//NSLog(stringAddress);
}
NSLog (@"getIPWithNSHost: stringAddress = %@ ",stringAddress);
stringAddress = (@"getIPWithNSHost: stringAddress = %@ ",stringAddress);
return stringAddress;
}
无论哪种方式,我只需要一种方法来获取外部/公共/互联网 IP 地址。(只是为了澄清外部/公共/互联网 ip 是可以从 whatsmyip.org 检索到的)