iT邦幫忙

1

iOS APP 開發 OC 第十三天,測試網路狀態 iOS Reachability

  • 分享至 

  • xImage
  •  

iOS APP 開發 OC 第十三天,測試網路狀態 iOS Reachability

tags: OC 30 day


今天在看接手的OC專案時,看到一個測試網路狀態的方法 Reachability(OC),因為我剛嘅使接觸OC,在這之前我在開發swift時,都是利用NWPathMoniitor來測試網路狀態:

NWPathMoniitor(swift)

Network framework 是在iOS 12 新推出的 framework。其中的 NWPathMonitor 將可幫我們更簡單地偵測網路連線的狀態。可以看看彼得潘的文章。

但是這次看專案是利用Reachability,為了看懂程式碼,讓我們來了解什麼是Reachability。
在這之前,可以看一下stackoverflow

什麼是Reachability?

Reachability是網絡助手實用程序類,它用於獲取有關連接狀態的各種信息。

Reachability的主要目的是什麼?

Reachability用於查詢網絡狀態,並監聽在連接狀態更改時的通知。

僅使用一個實例,然後監聽網絡變化,這個方法是否很常見?

這個做法很常見。 在我的項目中,我只有1個下載管理器類的實例,而該類只有Reachability的唯一活動實例。

還是應該在每次網絡請求之前檢查自己的Reachabilit狀態?

通常要做的是在下載管理器中建立一個方法,該方法告訴我是否存在連接。

對Reachability有大致上的理解後,我們來嘗試實做看看。

首先,到Reachability介紹頁

Reachability示例應用程序演示瞭如何使用系統配置框架來監視iOS設備的網絡狀態。 特別是,它演示瞭如何知道何時可以路由IP,以及何時將通過EDGE或3G等無線廣域網(WWAN)接口路由流量。 注意:Reachability無法告訴您的應用程序是否可以連接到特定主機,只能告訴您可能允許連接的接口可用,以及該接口是否為WWAN。 要了解何時以及如何使用可達性,請閱讀“網絡概述”。

接著你可以下載官方的範例文件,並直接使用 Reachability.m 與 Reachability.h 的文件。
詳細使用方法可以參考Nick’s journey on iOS.寫的文章

使用範例

//预留网络监控
- (void)net_control{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
    NSString *remoteHostName = @"www.apple.com";
    self.hostReachability = [Reachability reachabilityWithHostName:remoteHostName];
    [self.hostReachability startNotifier];

}

/*!
 * Called by Reachability whenever status changes.
 */
- (void) reachabilityChanged:(NSNotification *)note
{
    Reachability *reach=[note object];
    if([reach currentReachabilityStatus]==ReachableViaWiFi){
        NSLog(@"正在使用WiFi");
    }else if([reach currentReachabilityStatus]==ReachableViaWWAN){
        NSLog(@"正在使用移动数据");
    }else{
        NSLog(@"当前网络不可用");
    }
}

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言