12

我有支持 Wifi 的 OBD2 设备适配器。现在我想获得有关带有 OBD2 设备的 Wifi 可用的通知,以便我可以开始与该设备交谈并读取数据,而带有 OBD2 设备的 Wifi 不可用。

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

我尝试使用 SimplePingHelper 代码。它适用于主线程,但不适用于后台线程。SimplePingHelper 源代码

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

你能在这段代码中帮助我,它可以与后台线程一起使用吗?或者我可以通过哪些其他方式来检查以获取此通知?

4

3 回答 3

1

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

从此链接下载可达性项目

将 Reachability.h 和 Reachability.m 文件复制到您的项目中。

并在应用程序委托文件中设置此方法。

-(void)initializeRechabilityObeserver { //这里改主机名改服务器你的监控hostReach = [ReachabilityreachabilityWithHostName:@"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];    

}

于 2014-08-12T09:29:27.283 回答
0

使用 Apple 的默认可达性类:

从此链接下载可达性项目

将 Reachability.h 和 Reachability.m 文件复制到您的项目中。

并在应用程序委托文件中设置此方法。

-(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];
}
于 2013-11-16T06:17:06.357 回答
0

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

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

于 2014-01-03T03:46:20.440 回答