ios 關於如何獲取iphone或iPad的ip地址
先新建一個NSObject的分類GetIP,建好相應的檔案以後,相應的檔案的內容如下:
// NSObject+GetIP.h檔案內容
#import <Foundation/Foundation.h>
@interface NSObject (GetIP)
+ (NSString *)deviceIPAdress;
@end
// NSObject+GetIP.m檔案內容
#import "NSObject+GetIP.h"
#include <ifaddrs.h>
#include <arpa/inet.h>
@implementation NSObject (GetIP)
//必須在有網的情況下才能獲取手機的IP地址
+ (NSString *)deviceIPAdress {
NSString *address = @"an error occurred when obtaining ip address";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;
success = getifaddrs(&interfaces);
if (success == 0) { // 0 表示獲取成功
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;
}
}
freeifaddrs(interfaces);
NSLog(@"手機的IP是:%@", address);
return address;
}
@end
這樣就封裝好一個獲取IP地址的第三方庫
最後,根據需要調取相應的的介面。
例如,要呼叫相應介面,先匯入相應的標頭檔案#import "NSObject+GetIP.h"
NSString * StringIP = [NSString deviceIPAdress];
NSLog(@"%@",StringIP)即可打印出相應iphone或iPad的IP地址。