安装networkInterface插件,修改CDVNetworkInterface.m 里的getIP
- (NSString *)getIP {
NSString *address = @"error";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
NSString *netmask = @"error";
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)];
netmask = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_netmask)->sin_addr)];
}
if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"lo0"]) {
// Get NSString from C String
address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
netmask = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_netmask)->sin_addr)];
}
}
temp_addr = temp_addr->ifa_next;
}
}
// Free memory
freeifaddrs(interfaces);
return [NSString stringWithFormat:@"%@/%@", address, netmask];
}
这样获取到的是ip和netmask,调用方式为:
var netInfo = {
ip : null,
netmask : null
};
var app = {
// Application Constructor
initialize: function () {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function () {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicitly call 'app.receivedEvent(...);'
onDeviceReady: function () {
app.receivedEvent();
},
// Update DOM on a Received Event
receivedEvent: function () {
if (networkinterface !== undefined && networkinterface !== null) {
networkinterface.getIPAddress(function (ipAddress) {
var ipAddressArr = ipAddress.split("/");
var ip = ipAddressArr[0];
var netmask = ipAddressArr[1];
netInfo.ip = ip;
netInfo.netmask = netmask;
});
}
console.log('Received Event');
}
};
app.initialize();