我有一个商业应用程序有一个完全正当的理由看到它所连接的网络的SSID:如果它连接到第三方硬件设备的Adhoc网络,它需要以不同于它的方式运行连接到互联网.
我所看到的有关获取SSID的所有内容都告诉我必须使用Apple80211,我理解这是一个私有库.我还读到,如果我使用私人图书馆Apple将不会批准该应用程序.
我被困在苹果和硬地之间,还是我在这里缺少什么?
当我的Android设备连接到WIFI时,我正在尝试获取WIFI网络的SSID.
我注册了BroadcastReceiver android.net.wifi.supplicant.CONNECTION_CHANGE
.当WIFI断开连接或重新连接时,我收到通知.不幸的是,我无法获得网络的SSID.
我正在使用以下代码来查找SSID:
WifiManager wifiManager = (WifiManager) context.getSystemService(context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
String ssid = wifiInfo.getSSID();
Run Code Online (Sandbox Code Playgroud)
而不是SSID,我得到了<unknown ssid>
回来的字符串.
这些是清单中的权限(我添加了ACCESS_NETWORK_STATE只是为了检查,我实际上并不需要它)
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我怎样才能获得实际的SSID?在建立连接之前,广播是否已提前播出?我应该听另一个广播吗?我只对WIFI连接感兴趣,而不是3G连接.
更新:我刚刚检查过,wifiInfo.getBSSID()
返回null.
我们正在开发无线n/w配置UI,需要检查SSID是否有效?字符集是否有任何限制?长度 ?更多的东西..
是否可以在不使用私有库的情况下获取iPhone上所有可用SSID 的列表?
我在没有私有库的情况下阅读iPhone获取SSID,这是关于获取有关当前网络的详细信息.
这个答案提到:
如果您越狱设备,您可以使用Apple80211私有框架查找可用的Wi-Fi网络及其信号强度.但这也意味着您的应用会被拒绝.
Apple拥有CaptiveNetwork API,但似乎没有一个解决方案来获取所有可用网络的列表.似乎只能通过使用Apple80211私有库或连接到所有这些库来实现.
我错过了什么,或者没有解决方案?
嗨所有错误报告您的信息.链接
问题详情:
守则 -wifiManager.getConnectionInfo().getSSID()
上面的代码返回当前的SSID,它返回当前的SSID,并在其周围加上额外的引号.
例如.SSID internet
返回为"internet"
.
这只能在使用设备Nexus 7的Jelly bean 4.2上看到.
这个错误导致我们的应用程序出错,因为我们将当前的SSID与我们尝试连接的SSID进行比较.
wifiManager.getScanResults();
但是,代码仍会返回所有SSID而没有额外的引号.
我有一个问题,我在我的Android系统中找不到我的wifi热点ssid.
我从谷歌找到了很多信息,但没有任何帮助.
请帮我解决一下.
我想知道是否可以通过swift从iPhone获取列表扫描的WIFI SSID(使用像MobileWiFi.framework或其他类似的API),并查看有关该代码的示例(没有Objective-C源代码)
我有一个功能,可以检测用户的当前SSID.不幸的是,这不再适用于iOS 12.这意味着它只是跳过了if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
部分.也许这只是一个错误或它被弃用了.我在Apple Docs上找不到任何内容.在较旧的iOS 11,10和9设备上,它运行良好.
这是我的代码:
func getWiFiSsid() -> String? {
if let interfaces = CNCopySupportedInterfaces() as NSArray? {
for interface in interfaces {
if let interfaceInfo = CNCopyCurrentNetworkInfo(interface as! CFString) as NSDictionary? {
ssid = interfaceInfo[kCNNetworkInfoKeySSID as String] as? String
}
}
}
return ssid
}
Run Code Online (Sandbox Code Playgroud) 我试图使用此代码获取SSID
import Foundation
import SystemConfiguration.CaptiveNetwork
public class SSID {
class func getSSID() -> String{
var currentSSID = ""
let interfaces = CNCopySupportedInterfaces()
if interfaces != nil {
let interfacesArray = interfaces.takeRetainedValue() as [String : AnyObject]
if interfacesArray.count > 0 {
let interfaceName = interfacesArray[0] as String
let unsafeInterfaceData = CNCopyCurrentNetworkInfo(interfaceName)
if unsafeInterfaceData != nil {
let interfaceData = unsafeInterfaceData.takeRetainedValue() as Dictionary!
currentSSID = interfaceData[kCNNetworkInfoKeySSID] as! String
let ssiddata = NSString(data:interfaceData[kCNNetworkInfoKeySSIDData]! as! NSData, encoding:NSUTF8StringEncoding) as! String
// ssid data from hex …
Run Code Online (Sandbox Code Playgroud) 我知道可以使用官方Apple SDK中的CaptiveNetwork API在iPhone上列出可用的Wifi网络.
我想知道是否有办法以编程方式自动连接到特定的SSID,只要我能在CaptiveNetwork返回的列表中找到它?