iOS:我可以手动将 wifi 网络与地理位置关联吗?
Posted
技术标签:
【中文标题】iOS:我可以手动将 wifi 网络与地理位置关联吗?【英文标题】:iOS: Can I manually associate wifi network with geographic location? 【发布时间】:2011-06-14 09:24:36 【问题描述】:是否可以让手机“知道”特定的 wifi 网络位于特定的地理位置?
if (answer == YES)
than how?
else
can the phone figure this out by himself?
另一个类似的问题: 有什么方法可以开始监控精度为 ~100m 的区域,但告诉 CLLocationManager only 通过 wifi 网络和蜂窝天线使用?因为我不想给 GPS 加电无论如何...
谢谢!
【问题讨论】:
【参考方案1】:iPhone positioning sucks 你无能为力。
如果您越狱了您的设备,您可以使用Apple80211 私有框架来查找可用的 Wi-Fi 网络及其信号强度。但这也意味着您的应用会被拒绝。
如果用户手动连接到该网络上的 Wi-Fi you can see the MAC addresses of the devices 并使用它来猜测您的位置。由于 Wi-Fi 的范围为 50 米,这就是您获得的准确度。
所有定位系统对于 App Store 开发者来说都是透明的,这意味着应用程序无法禁用 GPS、列出 Wi-Fi 或读取信号强度。如果您通过 GPS 或 Wi-Fi 定位并查看海拔参数,您最多只能猜测。
用例:您在购物中心,想知道商店 X 在哪里。可能没有 GPS 信号,如果您安装 GPS 中继器,您会得到该中继器天线的位置,而不是您的位置。即使你安装了十几个Wi-Fi接入点也不能要求用户手动连接,因为这很麻烦,即使他这样做了他也可以获得50-100米的精度,然后这里连接存在安全风险在那里。基本上你完蛋了。
【讨论】:
好吧,我想这次我只会去安卓...至少谢谢你的诚实回答... :-) 更好的答案在这里:***.com/questions/15732181 另外,现在有思科硬件,谷歌“思科移动服务引擎”。【参考方案2】:我完全同意 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];
【讨论】:
以上是关于iOS:我可以手动将 wifi 网络与地理位置关联吗?的主要内容,如果未能解决你的问题,请参考以下文章