2011-06-14 42 views
4

是否有可能讓手機「知道」特定的WiFi網絡在特定的地理位置?iOS:我可以手動將wifi網絡與地理位置關聯嗎?

if (answer == YES) 
{ 
    than how? 
} 
else 
{ 
    can the phone figure this out by himself? 
} 

另一個類似的問題: 有沒有什麼辦法來啓動監視與〜100米的精度,但告訴CLLocationManager區域通過WiFi網絡和蜂窩antenas使用?因爲我不想加電GPS不管...

謝謝!

回答

4

iPhone positioning sucks並且沒有什麼可以做的。

如果您越獄您的設備,您可以使用Apple80211私有框架來查找可用的Wi-Fi網絡及其信號強度。但是這也意味着你的應用程序將被拒絕。

如果用戶手動連接到Wi-Fi無線you can see the MAC addresses of the devices該網絡上,並用它來猜測你的位置。由於Wi-Fi的距離爲50米,這就是您獲得的準確度。

所有定位系統對於App Store開發者都是透明的,這意味着應用程序不能禁用GPS,列出Wi-Fis或讀取信號強度。你可以做的最多的是如果你正在通過GPS或Wi-Fi定位高度參數,你可以猜測

使用案例:您身處商場,您想知道商店X在哪裏。可能沒有GPS信號,如果你安裝了一個GPS中繼器,你可以獲得該中繼器天線的位置,而不是你的位置。即使您安裝了十幾個Wi-Fi接入點,您也無法要求用戶手動連接,因爲這很麻煩,即使他這樣做了,他也會獲得50-100米的準確性,然後存在連接的安全風險那裏。基本上你是擰緊的。

+0

好吧,我想我會去只爲在這一次的Android ......至少謝謝你的誠實的答案... :-) –

+0

更好在這裏回答:http://stackoverflow.com/questions/15732181/此外,現在有思科硬件爲此,谷歌「思科移動服務引擎」。 – Jano

0

我完全同意Jano:蘋果邏輯比其他解決方案更有意義。 反正你可以很容易得到你的WIFI網絡ID:

-(void)LogInfo:(NSDictionary*)info forKey:(NSString*)key; 
{ 
    NSString* temp; 
    temp = [info objectForKey: key]; 
    NSLog(temp); 
} 


- (void)fetchSSIDInfo 
{ 
    NSArray *ifs = (id)CNCopySupportedInterfaces(); 
    NSDictionary* info = nil; 
    for (NSString *ifnam in ifs) 
    { 
     info = (id)CNCopyCurrentNetworkInfo((CFStringRef)ifnam); 
     NSString *temp = [NSString stringWithFormat:@"%@", [info description]]; 
     [self AddToLog: temp]; 

     [self LogInfo:info forKey:@"BSSID"]; 
     [self LogInfo:info forKey:@"SSID"]; 
     [self LogInfo:info forKey:@"SSIDDATA"]; 
     [info release]; 
    } 

    [ifs release]; 

} 
相關問題