如何在IOS中获取wifi网络的RSSI值?

时间:2013-07-30 07:28:44

标签: ios objective-c swift wifi rssi

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

1 个答案:

答案 0 :(得分:1)

TL; DR

在生产应用程序上访问AppStore绝对无法实现,但您可以使用私有API为自己实现一些概念验证。

详细版本

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

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

Apple没有公开记录其他API(私有API)。 Apple做这样的事情有几个原因:

  • 某些私有API是Apple自己的iOS应用程序独有的,
  • 目前还没有一些API,所以他们只是为了内部的Apple开发周期,
  • Apple以非常紧凑的方式控制iOS的足迹。因此,有意识地,他们不允许某些API触及他们不想要滥用,并希望iOS在某个方向上成长,或者他们有赚钱的议程。

怎么做

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

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

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

然而,我应该转发警告你,这并不像听起来那么容易。一旦找到合适的API,它就不能完成:

  1. 首先,在iOS上,某些框架需要某些权利。因此,当您找到所需API的必要私有框架时,您还需要弄清楚它的权利并将其注入您的项目中。哪个/哪个不容易获得。
  2. 将私有框架集成到项目中并不像集成公共框架那样简单,比如CoreLocation。
  3. 一旦你整合了一个私有框架,它的使用也会很困难,因为没有详细记录的原因相同。
  4. 由于所有这些都被视为警告,因此个人使用或其他原因仍有关于私有API的工作。你可以通过Michael Dorner结账BeeTee,在那里他演示如何使用BluetoothManager,这是一个用于在iOS上控制蓝牙的私有框架。

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