私は検索しましたが、似たような質問は表示されません。インターネットに接続していても到達可能性が失われることがあります
Reachabilityの例でインターネット接続を確認する方法を追加しました。ほとんどの場合は動作しますが、iPhoneにインストールすると、インターネット接続(3G/EDGEの場合 - WiFiはOK)であっても失敗することがよくあります。
以下のコードは、基本的にNOを返します。
別のアプリに切り替えると、「Mail」や「Safari」と言い、接続してアプリに戻ると、インターネットにアクセス可能であるというコードが表示されます。それはそれが "ナッジ"が必要なように思える。
誰でもこれまでに見たことがありますか?何か案は?
感謝 ジェームズ
+ (BOOL) doWeHaveInternetConnection{
BOOL success;
// google should always be up right?!
const char *host_name = [@"google.com" cStringUsingEncoding:NSASCIIStringEncoding];
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL,
host_name);
SCNetworkReachabilityFlags flags;
success = SCNetworkReachabilityGetFlags(reachability, &flags);
BOOL isAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
if (isAvailable) {
NSLog(@"Google is reachable: %d", flags);
}else{
NSLog(@"Google is unreachable");
}
return isAvailable;
}
謝罪、私はちょっとした騒ぎです。 プロジェクトにReachabilityクラスのサンプルを追加しましたが、コンパイルできません。 \t到達可能性* hostReach = [[reachability reachabilityWithHostName:@ "www.apple.com"]保持]; 動作しません。 reachabilityWithHostNameメソッドが見つかりません。 私はこの作品微調整... – stoutyhk
しておこう: +(BOOL)doWeHaveInternetConnection2 { \t \t場合([[到達可能性sharedReachability] internetConnectionStatus] == NotReachable){ \t \tリターンNO。 \t} \t他 \t {\t \tリターンYES。 \t} \t } – stoutyhk
このコードでは、接続されているにも関わらず、常に「NotConnected」と表示されます。一度それが "reachabilityChanged"メソッドに行くと、それはあなたに正しいステータスを与えます。どのようにして最初の正しい状態を取得するのですか? – Nnp