0

ネットワークをオフにして、iOS プログラムを実行します。その後、プログラムを停止したままにします。

ネットワークをオンにした後。私のプログラムはまだ停止しています。

iOS で NSURLConnection を再接続したい。

-(void) applistDBdownload
{
NSString *file = [NSString stringWithFormat:@"http://sok129.cafxxx.com/oneapplist.sqlite3"];
NSURL *fileURL = [NSURL URLWithString:file];

NSURLRequest *req = [NSURLRequest requestWithURL:fileURL];
connect= [NSURLConnection connectionWithRequest:req delegate:self];

fileData = [[NSMutableData alloc] initWithLength:0];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"fail");    -> come in when network off.
                   -> no come in when network on

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
          -> no come in when network on
          -> come in when network off 
}

1.どうすれば再接続できますか?

  - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
if(self.connect!=connection)
{
    NSLog(@"noconnect");
    return;
}


 [self.fileData appendData:data]; 
}
  1. このコード領域で、ネットワークがオフになった場合、このコードでどのように処理しますか?
4

3 に答える 3

0

ネットワークがオフになると、-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)errorがここで呼び出されますuは、agin[mConnectionstart]を要求するために以下の行を追加できます。uが接続を開始すると、平均して、uがネットワークをオンにすると、適切な接続を取得できます。

于 2012-05-08T08:55:36.790 に答える
0

HTTPリクエストの再試行を処理するAppleMVCNetworkingを使用できます。MVCネットワーキング

次のものはAppleから派生したものです:MVCNetworking派生

この種のアプローチは、リクエストを作成するときに最初はもう少しコードを追加する必要があることを意味しますが、リクエストが失敗すると、指定された間隔で再試行が行われます。

于 2012-05-08T09:26:32.903 に答える
0

通常は、何か問題が発生したことをユーザーに伝える必要があります (UIAlertViewたとえば、を使用)。ユーザーに接続を再試行するように依頼できます。また、これをユーザーに対して「透過的」にして、ユーザーが何が起こったのかを知らずに再試行することもできます。applistDBdownloadもう一度電話してください。ただし、必要に応じて最適なロジックを作成する必要があると思います (ネットワークが常にダウンしていることがわかっている場合は、ユーザーに警告する前に 3 ~ 4 回試してください)。最後に、サーバー側で変更を試みることができます (おそらく小さいパッケージを受信するため、データを受信して​​いる間にダウンするネットワークの割合は小さくなります)。

于 2012-05-08T08:27:19.347 に答える