我有一個完全基於Web的應用程序,需要互聯網連接來瀏覽。基本上是一個通過UIWebView瀏覽的網站。在UIWebView和NSURLRequest上沒有Internet連接處理
我需要能夠告訴用戶沒有網頁可以加載,如果他們沒有互聯網連接。有沒有一種簡單的方法可以做到這一點。也許檢查NSURLRequest是否失敗?
乾杯
我有一個完全基於Web的應用程序,需要互聯網連接來瀏覽。基本上是一個通過UIWebView瀏覽的網站。在UIWebView和NSURLRequest上沒有Internet連接處理
我需要能夠告訴用戶沒有網頁可以加載,如果他們沒有互聯網連接。有沒有一種簡單的方法可以做到這一點。也許檢查NSURLRequest是否失敗?
乾杯
我想看看蘋果的Reachability示例代碼,可靠地實現這一點。這種方法的一個優點是,即使用戶沒有實際點擊Web視圖中的任何鏈接,您也可以通知用戶當前的網絡狀態。
1>添加SystemConfiguration.framework到項目
2>進口在Connection.h文件下列.h文件
#import <sys/socket.h>
#import <netinet/in.h>
#import <SystemConfiguration/SystemConfiguration.h>
3>在Connection.h文件中聲明以下類方法
+(BOOL)hasConnectivity;
4>定義這個方法在你Connection.m文件
+(BOOL)hasConnectivity {
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr*)&zeroAddress);
if(reachability != NULL) {
//NetworkStatus retVal = NotReachable;
SCNetworkReachabilityFlags flags;
if (SCNetworkReachabilityGetFlags(reachability, &flags)) {
if ((flags & kSCNetworkReachabilityFlagsReachable) == 0)
{
// if target host is not reachable
return NO;
}
if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0)
{
// if target host is reachable and no connection is required
// then we'll assume (for now) that your on Wi-Fi
return YES;
}
if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand) != 0) ||
(flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0))
{
// ... and the connection is on-demand (or on-traffic) if the
// calling application is using the CFSocketStream or higher APIs
if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0)
{
// ... and no [user] intervention is needed
return YES;
}
}
if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN)
{
// ... but WWAN connections are OK if the calling application
// is using the CFNetwork (CFSocketStream?) APIs.
return YES;
}
}
}
return NO;
}