2013-03-31 24 views
0

我需要閱讀我的iOS設備的Wifi地址。但我試過的代碼在模擬器和iPad 2/v6.1.3上失敗。我正在使用Titanium,所以首先我嘗試了Titanium.Platform.address。這回來未定義。爲什麼我無法讀取iOS WiFi地址?

然後我開始在Objective C中工作,但是這個功能也無法獲得WiFi IP。我知道WiFi已打開,因爲互聯網可以正常工作,如果手動輸入設備地址,我的網絡項目也可以正常工作。

- (id)networkAddress 
{ 
    NSLog(@"[INFO] getting network IP"); 

    BOOL success; 
    struct ifaddrs * addrs; 
    const struct ifaddrs * cursor; 

    success = getifaddrs(&addrs) == 0; 
    if (success) { 

     NSLog(@"[INFO] getifaddrs() success"); 

     cursor = addrs; 
     while (cursor != NULL) { 
      if (cursor->ifa_addr->sa_family == AF_INET && (cursor->ifa_flags & IFF_LOOPBACK) == 0) // this second test keeps from picking up the loopback address 
      { 
       NSString *name = [NSString stringWithUTF8String:cursor->ifa_name]; 
       if ([name isEqualToString:@"en0"]) { // found the WiFi adapter 
        return [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)cursor->ifa_addr)->sin_addr)]; 
       } 
      } 

      cursor = cursor->ifa_next; 
     } 
     freeifaddrs(addrs); 
    } 
    return NULL; 
} 

什麼能阻止我讀取WiFi IP地址?

+0

如何該函數失敗(即什麼是success'的'的值),它仍然是,如果你刪除了'檢查失敗接口名稱中包含「en0」? – phihag

+1

我添加了兩個日誌跟蹤。第一個被調用 - 它驗證函數已被調用。但第二次NSLog從未發生過。 getifaddrs(&addrs)不返回0. –

+2

如果'getifaddrs()'失敗,請檢查'errno'。 –

回答

相關問題