12

WifiをサポートするOBD2デバイスアダプターがあります。ここで、OBD2 デバイスを使用した Wifi が利用可能であるという通知を受け取りたいので、そのデバイスとの通信を開始してデータを読み取ることができますが、OBD2 デバイスを使用した Wifi は使用できません。

デバイスが OBD2 ポートに接続されている場合、wifi がブロードキャストされます。Reachability クラスのサンプルコードを使用しました。しかし、私は適切な通知を受け取ることができません。

SimplePingHelper コードを試してみました。メイン スレッドでは正常に動作しますが、バックグラウンド スレッドでは実行されません。SimplePingHelper ソースコード

SimplePingHelper コードは、実際には Apple の SimplePing サンプル コードを使用しています。 AppleによるSimplePingコード

バックグラウンドスレッドで動作するこのコードで私を助けてもらえますか、またはこの通知を受け取るために確認できる他の方法は何ですか?

4

3 に答える 3

1

`Apple のデフォルトの到達可能性クラスを使用:

このリンクから到達可能性プロジェクトをダウンロードします

プロジェクトに Reachability.h および Reachability.m ファイルをコピーします。

そして、このメソッドを Application delegate ファイルに設定します。

-(void)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];    

}

于 2014-08-12T09:29:27.283 に答える
0

Apple のデフォルトの到達可能性クラスを使用します。

このリンクから到達可能性プロジェクトをダウンロードします

プロジェクトに Reachability.h および Reachability.m ファイルをコピーします。

そして、このメソッドを Application delegate ファイルに設定します。

-(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 に答える