1

最初の iOS アプリ (ほぼ 3 年前) でインターネット接続を確認するために、次のコードを使用していました。

NSError *err = nil;
NSStringEncoding encoding;

NSString * connectionstring = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"] usedEncoding:&encoding error:&err];

if(connectionstring.length ==0)
{
    UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"Error Occured" message:@"No Internet Connection." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];
}
else
{
    // loading another screen
}

問題はインドと米国ではelse条件に入りますが、ベルギーではif条件に入り、エラーをスローします。では、ベルギーでの Google に対する制限はありますか?

間違ってタグ付けされている場合は、ご案内ください。私の現在のバージョンでは、 Rechability クラスを使用してこれを確認することで、この問題を解決しました。私はそれについて知りたかっただけです。前もって感謝します。

4

3 に答える 3

0

別の解決策:インターネット接続を確認するにはアップルが提供する到達可能性クラスを使用します。ここからAppleサンプルをダウンロードし、プロジェクトにReachabilityクラスを追加します。

- (BOOL)isConnected
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus networkStatus = [reachability currentReachabilityStatus];
    return !(networkStatus == NotReachable);
}
于 2013-03-18T06:47:33.103 に答える
0

google.comを使用する代わりに、インターネットチェックにローカルクライアントサーバーのテストURLを使用すると、他のインターネット検証方法に比べて非常に高速に応答します。

于 2013-03-18T07:11:43.577 に答える
0

最初のステップとして、エンコーディングを確認します。

接続文字列が作成された直後に、挿入することでエンコーディングをログに記録できます。

NSLog(@"encoding: %@", [NSString localizedNameOfStringEncoding:encoding]);

あなたのコードに。

さらにデバッグするには、最初にURLをNSDataオブジェクトにロードしてから、データを検査し、最後にデータからNSStringを作成してみてください。

于 2013-03-18T06:47:11.190 に答える