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 网络与地理位置关联吗?的主要内容,如果未能解决你的问题,请参考以下文章

手动将文件与流程关联

R语言使用K-Means聚类可视化WiFi访问

位置的 getSpeed() 在 WiFi 上不起作用

iOS开发之APP推送设置WIFI

R语言使用K-Means聚类可视化纽约市WiFi访问

手机搜不到无线网络是怎么回事?