私のアプリケーションでは、ユーザーのパブリック/インターネット IP アドレスの値と等しい NSString オブジェクト値を取得する必要があります。私はこれを行う方法を試しましたが、どちらもローカル IP アドレスを返しません。以下は私の2つの方法です。1 つはより正確で、常に配列内の正しい項目を返します。もう一方はそうではありません。(ランダムなインデックスを選択するだけなので)...
- (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から取得できるものです)