10

Apple の Reachability サンプルを自分のプロジェクトに組み込んだので、ネットワーク接続があるかどうかがわかります。ネットワーク接続がない場合は、わざわざ送信したり要求したりしません。ネットワーク接続を確立するたびに同期要求を開始するのではなく、到達可能性をバックグラウンドで更新し、現在の結果をすぐに利用できるようにする方が簡単だと思われたため、ステータス通知の実装を使用することにしました。

私の問題は、EDGE ネットワーク上で偽陰性が発生し始めることです。電話には接続がありますが、アプリはそうではないと考えています。私の理解では、EDGE接続時に通知が届かないため、ある時点で接続を失って回復したと思います。通常、ネットワーク接続を確認するには、アプリを再起動するだけで十分です。

これは最適な解決策ではないため、他の誰かがこの問題に遭遇し、解決策について何か考えがあるかどうか疑問に思っていました.

(これが 3G にも当てはまるかどうかはわかりません。私は第 1 世代の iPhone を使用しています)。

4

2 に答える 2

14

到達可能性通知も、Wi-Fi を検出するために、信頼できるようには思えませんでした。そのため、代わりにポーリングを使用します。5 秒ごとにチェックしても害はないようです。

- (void) checkReachability {
    BOOL connected = ([[Reachability sharedReachability] localWiFiConnectionStatus] == ReachableViaWiFiNetwork);

    // Do something...

    [self performSelector:@selector(checkReachability) withObject:nil afterDelay:5.0];
}
于 2008-10-08T06:18:50.620 に答える
1

ネット上に到達可能性の良い例があります。それは素晴らしくうまく機能します: http ://servin.com/iphone/iPhone-Network-Status.html

しかし、私がそれを自分のやり方で使おうとすると、それはただの爆弾です。

以下を使用して実装しようとしました:

NSString *sCellNetwork;     
 NSString *sNetworkReachable;  

if (flags & kSCNetworkFlagsReachable || flags & kSCNetworkReachabilityFlagsIsWWAN)

{do it} 

 else {
   Network fail alert; 
}
于 2011-08-12T06:18:04.237 に答える