iOS:我可以手动将wifinetworking与地理位置关联吗?

是否有可能使手机“知道”一个特定的无线networking在特定的地理位置?

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

另一个类似的问题:有什么办法可以开始监视一个精度为100米的区域,但是告诉CLLocationManager 只能通过wifinetworking和蜂窝天线来使用吗? 因为我不想加电GPS,不pipe…

谢谢!

iPhone的定位糟透了 ,没有什么可以做的。

如果你越狱你的设备,你可以使用Apple80211私人框架来查找可用的Wi-Finetworking及其信号强度。 但是这也意味着你的应用程序将被拒绝。

如果用户手动连接到Wi-Fi, 您可以看到该networking上的设备的MAC地址,并用它来猜测您的位置。 由于Wi-Fi有50米的范围,这就是你得到的准确性。

所有定位系统对于App Store开发者来说都是透明的,这意味着应用程序不能禁用GPS,列出Wi-Fis或者读取信号强度。 你可以做的最多的是猜测你是否通过GPS或Wi-Fi定位来查看高度参数。

用例:你在一个商场,你想知道商店X在哪里。 可能没有GPS信号,如果你安装了一个GPS转发器,你将得到该转发器的天线位置,而不是你的位置。 即使你安装了十几个Wi-Fi接入点,你也不能要求用户手动连接,因为这是一个麻烦,即使他做了,他会得到50-100米的准确性,然后有连接在这里的安全风险那里。 基本上你是拧紧的。

我完全同意Jano:苹果逻辑比其他解决scheme更有意义。 无论如何,您可以轻松获得您的WIFInetworkingID:

 -(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]; }