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リクエストを組み合わせれば、複雑なライブラリを導入することなく、簡単に外部ホストへの疎通確認を実装できるので、ぜひ活用してみてください。
-
iOS 10.0.2からダウングレードする方法【準備から復元まで完全解説】
iOS 10.0.2へのアップデートには便利な新機能がいくつか追加されましたが、同時にバグも発生しています。最新版のiOSで不具合に遭遇し、iOS 10.0.2から以前のバージョンにダウングレードしたい場合は、以下の手順に従って進めてください。なお、このガイドを実行するには、PCまたはMacと、iOSデバイスを接続するためのデータケーブルが必要です。手順は大きく分けて2つのステップで構成されています。ステップ1ではダウングレードに必要なソフトウェアを準備し、ステップ2で実際にダウングレードを実行します。ここではiOS 10.0.2ユーザー向けに解説しますが、同じ流れは他のiOSバージョンからの
-
iOS 15からiOS 14.6へダウングレードする方法|ベータ版をやめて安定版に戻す完全ガイド
iOS 15からiOS 14へのダウングレード方法 最新機能をいち早く試すにはベータ版が便利ですが、日常使用では必ずしも快適に動作するとは限りません。勢いでiOS 15にアップグレードしたものの、後悔している方もいるのではないでしょうか。この記事では、安定版であるiOS 14.6に戻す方法を詳しく解説します。 最も簡単な方法:ベータプロファイルの削除 iOS 14.6にダウングレードする最も簡単な方法は、iOS 15のベータプロファイルを削除し、次の正式アップデートを待つことです。手順は以下の通りです。 iPhoneの「設定」を開き、「一般」をタップします。 「プロファイルとデバイス管理」