iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

iOSでSwiftを使って外部ホストにpingを実行し、稼働状態を確認する方法

iOSアプリ開発をしていると、外部のWebサイトやサーバーにリクエストを送る前に、そのホストが正常に稼働しているかどうかを事前に確認したいケースがあります。

本記事では、Swiftを使って外部ホストの稼働状態(ping相当のチェック)を確認する方法を、実際のコード例とともにわかりやすく解説します。ここでは、HTTPのHEADリクエストを活用したシンプルかつ効率的な手法を紹介します。HEADリクエストはレスポンスボディを取得しないため、軽量な疎通確認に適しています。

Step 1:新しいプロジェクトを作成する

Xcodeを起動し、「New Project」→「Single View Application」を選択して、プロジェクト名を「PingMe」としましょう。

Step 2:ネットワーク接続チェック用の関数を実装する

ViewController.swift を開き、checkIsConnectedToNetwork() 関数を追加して、以下のコードを記述します。

func checkIsConnectedToNetwork() {
    let hostUrl: String = "https://google.com"
    if let url = URL(string: hostUrl) {
        var request = URLRequest(url: url)
        request.httpMethod = "HEAD"
        URLSession(configuration: .default)
        .dataTask(with: request) { (_, response, error) -> Void in
            guard error == nil else {
                print("Error:", error ?? "")
                return
            }
            guard (response as? HTTPURLResponse)?
            .statusCode == 200 else {
                print("The host is down")
                return
            }
            print("The host is up and running")
        }
        .resume()
    }
}

このコードでは、まず対象のURLから URLRequest を生成し、HTTPメソッドとして「HEAD」を指定しています。その後、URLSession の dataTask を使って非同期通信を行い、エラーの有無とステータスコードが200であるかどうかを確認することで、ホストの稼働状態を判定しています。

Step 3:viewDidLoadから関数を呼び出す

次に、viewDidLoad メソッド内からこの関数を呼び出します。

最終的なコードは以下のようになります。

import UIKit
class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // ビューのロード後に行う追加のセットアップはここに記述します。
        self.checkIsConnectedToNetwork()
    }
    func checkIsConnectedToNetwork() {
        let hostUrl: String = "https://google.com"
        if let url = URL(string: hostUrl) {
            var request = URLRequest(url: url)
            request.httpMethod = "HEAD"
            URLSession(configuration: .default)
            .dataTask(with: request) { (_, response, error) -> Void in
                guard error == nil else {
                    print("Error:", error ?? "")
                    return
                }
                guard (response as? HTTPURLResponse)?
                .statusCode == 200 else {
                    print("The host is down")
                    return
                }
                print("The host is up and running")
            }
            .resume()
        }
    }
}

実行結果の確認

上記のコードを実行すると、コンソールに「The host is up and running」と表示され、対象のホストが正常に稼働していることを確認できます。もしホストがダウンしていた場合やネットワークエラーが発生した場合は、それぞれ対応するメッセージが出力されます。

応用的な使い方

今回の実装では、アプリ起動時に自動的にチェックを行いましたが、UI上にボタンを配置し、ユーザーのタップをトリガーにリクエストを送信したり、結果をテキストフィールドに表示したりするなど、さまざまな場面に応用できます。

このようにURLSessionとHEADリクエストを組み合わせれば、複雑なライブラリを導入することなく、簡単に外部ホストへの疎通確認を実装できるので、ぜひ活用してみてください。

  1. iOS 10.0.2からダウングレードする方法【準備から復元まで完全解説】

    iOS 10.0.2へのアップデートには便利な新機能がいくつか追加されましたが、同時にバグも発生しています。最新版のiOSで不具合に遭遇し、iOS 10.0.2から以前のバージョンにダウングレードしたい場合は、以下の手順に従って進めてください。なお、このガイドを実行するには、PCまたはMacと、iOSデバイスを接続するためのデータケーブルが必要です。手順は大きく分けて2つのステップで構成されています。ステップ1ではダウングレードに必要なソフトウェアを準備し、ステップ2で実際にダウングレードを実行します。ここではiOS 10.0.2ユーザー向けに解説しますが、同じ流れは他のiOSバージョンからの

  2. iOS 15からiOS 14.6へダウングレードする方法|ベータ版をやめて安定版に戻す完全ガイド

    iOS 15からiOS 14へのダウングレード方法 最新機能をいち早く試すにはベータ版が便利ですが、日常使用では必ずしも快適に動作するとは限りません。勢いでiOS 15にアップグレードしたものの、後悔している方もいるのではないでしょうか。この記事では、安定版であるiOS 14.6に戻す方法を詳しく解説します。 最も簡単な方法:ベータプロファイルの削除 iOS 14.6にダウングレードする最も簡単な方法は、iOS 15のベータプロファイルを削除し、次の正式アップデートを待つことです。手順は以下の通りです。 iPhoneの「設定」を開き、「一般」をタップします。 「プロファイルとデバイス管理」