如何在IOS中获取wifi网络的RSSI值? [关闭]

Posted

技术标签:

【中文标题】如何在IOS中获取wifi网络的RSSI值? [关闭]【英文标题】:How can I get RSSI value of wifi network in IOS? [closed] 【发布时间】:2013-07-30 07:28:43 【问题描述】:

如何读取附近 Wi-Fi 网络的RSSI 值?

【问题讨论】:

【参考方案1】:

TL;DR

这绝对不是在进入 AppStore 的生产应用程序上实现的目标,但您可以使用私有 API 为自己实现一些概念验证。

详细版

ios 上,有用于读取附近 Wi-Fi 网络的RSSI 值和其他此类操作的 API,但最遗憾的是,它们不公开。

Apple 将 API 分为公共 API 和私有 API。开发人员可以使用(公共的)并将应用程序发送到 AppStore 的文件记录在 developer.apple.com。

Apple 未公开记录其他 API(私有 API)。这样做的原因主要归结为 Apple 希望以更全面的方式控制 iOS 的各个方面:

有些 API 还没有,所以它们只是用于 Apple 自己的内部开发和测试, Apple 不希望 iOS 的某些方面被滥用并随着时间的推移而成熟开发(例如,用于操纵拍照方面的相机 API), 当然,Apple 有一个赚钱的议程,他们根据自己的需要使用这些 API。

做什么

如上所述,私有 API 仍然可以访问如果您知道自己在做什么

基本思想是,由于 iOS 中同时使用公共和私有 API(一般开发人员或 Apple),它们都应该在 runtime 中。您所需要的只是一个将它们捞出的工具。这个工具是RunTimeBrowser。该项目的维护者 Nicolas Seriot 也将他的发现here 发布为 GitHub 存储库。

如果您查看这些发现,您将能够找到合适的 API 来检索附近 Wi-Fi 网络的 RSSI 值。

但是,我应该提前警告您,这并不像听起来那么容易。一旦找到合适的 API,它就不会就此结束:

首先,在 iOS 上,某些框架需要某些权利。因此,当您为所需的 API 找到必要的私有框架时,您还需要弄清楚它的权利并将其注入到您的项目中。哪些是/不是现成的, 将私有框架集成到项目中并不像集成公共框架那么简单,比如 CoreLocation,因为它们没有记录在案,而且你会盲目地走自己的路, 一旦你集成了一个私有框架,它的使用也将变得困难,因为上述原因以及Apple 对这些私有API 进行更改的可能性。当然,每个 API 都会不时更改,但 Apple 可以按照自己的意愿使用私有 API 进行拆分,因为它从一开始就不允许您使用它们。所以,你花了很长时间做的事情在未来可能一文不值。

所有这一切都被视为一个警告(我真的不想让你气馁,但你应该看看你的前进方向),关于私有 API 的工作仍然存在个人使用或其他原因。

您可以查看 Michael Dorner 的 BeeTee,他在其中演示了如何使用 BluetoothManager,这是一个用于在 iOS 上控制蓝牙的私有框架。

从该项目中学习,您可以将这些知识应用于读取附近 Wi-Fi 网络的RSSI 值。请记住,您无法在 AppStore 上获得批准。

玩得开心!

【讨论】:

以上是关于如何在IOS中获取wifi网络的RSSI值? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

iOS6.1:尝试访问 WiFi RSSI 时出现问题(MobileWiFi.framework)

如何获取已连接蓝牙设备的 rssi 值

如何在 .net 中获取可用的 wifi AP 及其信号强度?

WiFi打开时如何在iPhone中获取移动数据状态

LoRa模块能不能获取信号强度?

android中如何获取WIFI信号的强度?