获取有关启用Wifi的设备的Wifi可用性的通知

时间:2013-11-14 13:27:14

标签: ios wifi cfnetwork

我有支持Wifi的OBD2设备适配器。现在我想获得有关带有OBD2设备的Wifi的通知,这样我就可以开始与该设备通信并读取数据,并且无法使用OBD2设备进行Wifi。

当设备连接到OBD2端口时,wifi正在广播。我使用了Reachability类的示例代码。但我无法得到适当的通知。

我尝试使用SimplePingHelper代码。它适用于主线程,但它不与后台线程运行。 SimplePingHelper Source code

SimplePingHelper代码实际上使用Apple的SimplePing示例代码。 SimplePing Code By Apple

你可以帮助我使用这个代码,它可以用于后台线程吗?或者我可以通过其他方式来获取此通知?

3 个答案:

答案 0 :(得分:1)

`使用Apple的默认可达性类:

This link

下载可访问性项目

在项目中复制Reachability.h和Reachability.m文件。

并在Application委托文件中设置此方法。

- (无效)initializeRechabilityObeserver {     //在此处更改主机名以更改监控服务器     hostReach = [Reachability reachabilityWithHostName:@“www.apple.com http://www.apple.com”];     [hostReach startNotifier];     // [self updateInterfaceWithReachability:hostReach];

internetReach = [Reachability reachabilityForInternetConnection];
[internetReach startNotifier];
//[self updateInterfaceWithReachability: internetReach];

wifiReach = [Reachability reachabilityForLocalWiFi] ;
[wifiReach startNotifier];
//[self updateInterfaceWithReachability: wifiReach];    

}

答案 1 :(得分:0)

使用Apple的默认可访问性类:

This link

下载可访问性项目

在项目中复制Reachability.h和Reachability.m文件。

并在Application委托文件中设置此方法。

-(void)initializeRechabilityObeserver
{ 
    //Change the host name here to change the server your monitoring
    hostReach = [Reachability reachabilityWithHostName: @"www.apple.com <http://www.apple.com>"];
    [hostReach startNotifier];
    //[self updateInterfaceWithReachability: hostReach];

    internetReach = [Reachability reachabilityForInternetConnection];
    [internetReach startNotifier];
    //[self updateInterfaceWithReachability: internetReach];

    wifiReach = [Reachability reachabilityForLocalWiFi] ;
    [wifiReach startNotifier];
    //[self updateInterfaceWithReachability: wifiReach];    
}

要获取可更改性更改通知,请使用以下代码:

在Application didFinishLaunching

中添加此通知方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
    internetReachable = [Reachability reachabilityForInternetConnection] ;
    [internetReachable startNotifier];
}

并添加此方法:

- (void)reachabilityChanged: (NSNotification* )note
{
    NSLog(@"Reachability changed");
    Reachability* curReach = [note object];
    NSParameterAssert([curReach isKindOfClass: [Reachability class]]);
   [self updateInterfaceWithReachability: curReach];
}

答案 2 :(得分:0)

可达性仅检测iOS设备本身的网络可用性 此外,Apple不允许应用进行任何Wi-Fi扫描,因此没有公共API可以执行此操作。

您的OBD2设备适配器是否通过电缆或本地Wi-Fi物理连接到iOS设备? 我认为您应该关注如何与iOS中的外部OBD2设备进行通信。