【问题标题】:iOS Get list of all WiFi networksiOS 获取所有 WiFi 网络的列表
【发布时间】:2017-04-02 14:15:26
【问题描述】:

不是重复几十个类似的问题(太多无法列出)因为我有证据表明有可能发布一个显示 wifi 网络列表的应用。

因此,如果不使用私有 api,您将无法获得所有 wifi 网络的列表,这一点已被广泛接受和理解。使用私有 api 将导致应用被拒绝应用商店审核。

但是,Google 最近在 2016 年 10 月 26 日发布的 Google Home 应用中做到了这一点,因此现在肯定是可能的。如何?!?

注意 - 他们的 App Store listing 表示该应用支持 iOS 8.0 或更高版本。 我需要进一步测试此功能是否仅存在于 iOS 10 版本的应用程序上,或者它是否实际上也存在于 iOS 8 和 9 上。
(图片中我的wifi名称和mac地址变灰了)

我使用的是 Objective-C,所以如果您使用 Swift 提交解决方案,请也提交一个 ObjC 解决方案!

【问题讨论】:

  • 使用私有 API 会导致 your 应用被拒绝。这并不意味着 所有 使用私有 API 的应用都会被拒绝。
  • 您有没有想过 Google 应用通过蓝牙连接到 google home 设备,并且该设备会响应 WiFi 网络列表?
  • OliverM 在这里有一个有效的点。如果您没有打开 BT,系统会指示您转到操作系统设置并连接到家庭设备临时热点 WiFi 网络,然后返回应用程序继续设置过程。
  • @OliverM 我怀疑是这样的。仍然值得一问,只是为了确定。 Woz,你能详细说明一下吗?
  • Jungle 我们非常希望在我们的应用程序中执行此操作,但在一年前左右根本不可能。我很肯定谷歌正在通过蓝牙做到这一点。我们已经向 Apple 开过门票,但被告知根本无法购买。

标签: ios objective-c ios10


【解决方案1】:

NetworkExtension 可能会实现这一点(iOS 8 起可用)。但是您需要在您的应用程序中使用com.apple.developer.networking.HotspotHelper-entitlement 才能使用这些 API。要获得这些权利,您必须contact Apple 并说明您需要它的原因。

我没有找到任何代码示例,但也许NetworkExtension 的文档可以帮助你。

【讨论】:

  • 我被 Apple Network Extension Staff 拒绝了两次以获得此权利。现在,我再申请一次。您能否建议我如何解释我的申请的用途,以便他们同意我的申请?
  • 你找到解决办法了吗?
  • NEHotspotNetwork 只会在用户导航到“设置”中的 Wi-Fi 页面时返回网络列表。有关详细信息,请参阅this answer
  • @VictorJohn 你成功了吗?我正在使用以下代码: NEHotspotConfigurationManager.shared.getConfiguredSSIDs { (ssidsArray) in print("ssidsArray.count==(ssidsArray.count)") for ssid in ssidsArray { print(" Connected ssid = ",ssid) } } 但它只返回连接的 Wifi。
  • 嘿@guru 试试这个。输入错误的 ssid 和密码时,Wifi 没有连接,我们也没有收到任何关闭错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2012-11-05
相关资源
最近更新 更多