1

現在、 developer.apple Wi-Tapアプリケーションと同じbonjourサービスを使用して、複数のファイルを Wi-Fi 経由で他のデバイスに送信できるアプリケーションを開発しています。唯一の違いは、Wi-Tapが文字列を送信するファイルを送信していることです。

ここで、アプリケーションでの接続損失などの Wi-Fi 接続の問題を処理したいと考えています。

NSStream Errors以下のケースのスルー handleEventデリゲートを処理できます

 NSStreamEventErrorOccurred 
 NSStreamEventEndEncountered

ただし、これを介して Wi-Fi 接続の損失を見つけることができませんdelegate。したがって、考えられる解決策は、Reachabilityクラスを使用して、バックグラウンド スレッドで Wi-Fi 接続を確認することです。ただし、これは悪い習慣であり、デバイスのバッテリー電力をより多く消費します。

ファイル転送中にデバイスの Wi-Fi 接続を追跡する他の方法はありますか?

4

1 に答える 1

0

1 つの方法は、use NSNetServiceを使用することです。

これは単なるサービス公開ツールであるため、データ転送に干渉しないため、使用する必要があります

-(void)publishNetwork
{
//---publish the service---
netService = [[NSNetService alloc] 
              initWithDomain:@"" 
              type:BonjourServiceName 
              name:@"" 
              port:portNo];
netService.delegate = self;
[netService publish]; 

}

これを実行する必要があります

[netService scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

Wifi がオンの場合、これが起動されます

- (void)netServiceDidPublish:(NSNetService *)sender
 {
    NSLog(@"Service did publish:%@",sender);

 }

Wi-Fiがない場合

-(void)netService:(NSNetService *)aNetService didNotPublish:(NSDictionary *)dict 
 {
   NSLog(@"Service did not publish: %@", dict);
}

これらは、ライブラリを参照できる NSNetService のデリゲートです。これは、問題を回避する方法にすぎません。

于 2012-11-22T06:11:54.580 に答える