すべてのプロダクト
Search
ドキュメントセンター

HTTPDNS:ドメイン名解決操作

最終更新日:Jul 19, 2025

このトピックでは、ドメイン名解決用の API について説明します。

事前解決の実行

アプリの起動と SDK の初期化後、すぐにこの操作を呼び出して、後で使用する可能性のある頻繁にアクセスするドメイン名を指定できます。 これにより、SDK はこれらのドメイン名を事前に解決できるため、後続のドメイン名解決リクエストのレイテンシが短縮されます。

実行時にこの操作を呼び出すと、SDK は指定されたリスト内のドメイン名をすぐに解決し、キャッシュ内の解決結果を更新します。 これは強制的に更新するのと同じです。 この操作は通常、特定のビジネスアクションが発生した後に、現在のドメイン名解決を更新してドメイン名の再スケジュールを強制する場合に使用されます。

操作定義

- (void)setPreResolveHosts:(NSArray *)hosts; // 事前解決するドメイン名を設定

クラス

HttpDnsService

パラメーターの説明

パラメーター

タイプ

必須かどうか

備考

hosts

NSArray *

はい

事前解決するドメイン名。

重要
  • 事前解決されるドメイン名は、純粋なドメイン名文字列でなければならず、プロトコルヘッダー(http:// など)、パス、またはポートを含めることはできません。 そうしないと、解決例外が発生します。

  • ワイルドカードドメイン名はサポートされていません。

  • 正しい例: @[@"www.example.com", @"api.example.com", @"img.example.com"]

  • 正しくない例: @[@"http://www.example.com:443/path", @"*.example.com"]

同期ノンブロッキングドメイン名解決 操作

同期ノンブロッキング API は、現在のスレッドをブロックせずにドメイン名を解決しますが、空の結果を返す場合があります。

この操作はキャッシュのクエリのみを行い、キャッシュからの解決結果を返します。 キャッシュに解決結果が存在しない場合、またはキャッシュされた解決結果の Time To Live(TTL)が期限切れになっている場合、ドメイン名解決はワーカースレッドで実行されます。 解決が成功すると、後続のドメイン名解決で使用するためにキャッシュが更新されます。

操作定義

- (nullable HttpdnsResult *)resolveHostSyncNonBlocking:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType; // 同期ノンブロッキングでホストを解決

- (nullable HttpdnsResult *)resolveHostSyncNonBlocking:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType withSdnsParams:(NSDictionary<NSString *, NSString *> *)sdnsParams sdnsCacheKey:(NSString *)cacheKey; // SDNS パラメータとキャッシュキーを指定して同期ノンブロッキングでホストを解決

- (nullable HttpdnsResult *)resolveHostSyncNonBlocking:(HttpdnsRequest *)request; // リクエストオブジェクトを使用して同期ノンブロッキングでホストを解決

説明
  • この API はバージョン v3.0.0 で導入されました。

クラス

HttpDnsService

パラメーター定義

パラメーター

タイプ

必須かどうか

備考

host

NSString *

はい

解決するドメイン名

queryIpType

HttpdnsQueryIPType

はい

ドメイン名を解決する IP アドレスのタイプ。 HttpdnsQueryIPType を使用します

有効な値:

  • v4: IPv4

  • v6: IPv6

  • both: IPv4 と IPv6 の両方

  • auto: SDK は、デバイスの現在のネットワークスタックに基づいて、解決する IP アドレスのタイプを決定します。 デフォルトでは、IPv4 アドレスが解決されます。 現在のネットワークスタックが IPv6 をサポートしている場合は、IPv6 アドレスも解決されます。

sdnsParams

NSDictionary<NSString *, NSString *> *

いいえ

ソフトウェア定義の解決用のカスタムパラメーター。

cacheKey

NSString *

いいえ

ソフトウェア定義の解決用のカスタムキャッシュキー。

request

HttpdnsRequest *

はい

以下の解像度に関連するデータ構造をご覧ください。

戻り値の説明

タイプ

説明

HttpdnsResult *

解決結果。後述の解決に関連するデータ構造をご覧ください。

同期ドメイン名解決操作

同期ドメイン名解決 API は、有効な結果を取得して返すまで、現在のスレッドをブロックします。

この API は最初にキャッシュをクエリします。 有効な結果が存在する場合は、すぐに返されます。 存在しない場合は、現在のスレッドがブロックされ、ワーカースレッドでドメイン名解決が実行されます。 結果は、完了時またはタイムアウト期間に達したときに返されます。

説明
  • このインターフェイスはバージョン v3.0.0 で導入されました。

  • メインスレッドでのこの操作の誤用によって引き起こされるアプリのスタッターを防ぐために、この操作は検出を実行します。 呼び出しスレッドがメインスレッドであることが検出された場合、resolveHostSyncNonBlocking 操作の実装ロジックに自動的にスペックダウンします。

  • デフォルトのタイムアウトは 2 秒です。 この期間内に有効な結果が取得されない場合は、nil が返されます。 タイムアウトはリクエストオブジェクトを介して調整できます。

インターフェイス定義

- (nullable HttpdnsResult *)resolveHostSync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType; // 同期的にホストを解決

- (nullable HttpdnsResult *)resolveHostSync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType withSdnsParams:(NSDictionary<NSString *, NSString *> *)sdnsParams sdnsCacheKey:(NSString *)cacheKey; // SDNS パラメータとキャッシュキーを指定して同期的にホストを解決

- (nullable HttpdnsResult *)resolveHostSync:(HttpdnsRequest *)request; // リクエストオブジェクトを使用して同期的にホストを解決

クラス

HttpDnsService

パラメーター定義

パラメーター

タイプ

必須かどうか

備考

host

NSString *

はい

解決するドメイン名

queryIpType

HttpdnsQueryIPType

はい

ドメイン名を解決する IP アドレスのタイプ。 HttpdnsQueryIPType を使用します

有効な値:

  • v4: 解決されるタイプは IPv4 です

  • v6: IPv6 アドレス。

  • both: IPv4 アドレスと IPv6 アドレスの両方。

  • auto: SDK はデバイスの現在のネットワークスタックに基づいて内部的に決定します。 デフォルトでは、IPv4 アドレスを解決します。 現在のネットワークスタックが IPv6 をサポートしている場合は、IPv6 アドレスの解決も試みます

sdnsParams

NSDictionary<NSString *, NSString *> *

いいえ

ソフトウェアのカスタム解析パラメーター

cacheKey

NSString *

いいえ

ソフトウェア定義のカスタムキャッシュキー

request

HttpdnsRequest *

はい

以下の解析用データ構造を参照してください

戻り値の説明

タイプ

説明

HttpdnsResult *

解決結果。詳細については、「解決に関連するデータ構造」をご参照ください。

非同期ドメイン名解決操作

非同期解決インターフェイスは、現在のスレッドをブロックせずにドメイン名を解決し、コールバックを介して結果を返します。

この操作は最初にキャッシュをクエリします。 キャッシュに有効な解決結果が存在する場合、キャッシュされた解決結果はコールバックを通じてすぐに返されます。 有効な解決結果が見つからない場合、操作はワーカースレッドでドメイン名解決を実行します。 ドメイン解決が完了するか、タイムアウトに達すると、解決結果はコールバックを通じて返されます。

操作定義

- (void)resolveHostAsync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType completionHandler:(void (^)(HttpdnsResult * nullable))handler; // 非同期的にホストを解決

- (void)resolveHostAsync:(NSString *)host byIpType:(HttpdnsQueryIPType)queryIpType withSdnsParams:(NSDictionary<NSString *, NSString *> *)sdnsParams sdnsCacheKey:(NSString *)cacheKey completionHandler:(void (^)(HttpdnsResult * nullable))handler; // SDNS パラメータとキャッシュキーを指定して非同期的にホストを解決

- (void)resolveHostAsync:(HttpdnsRequest *)request completionHandler:(void (^)(HttpdnsResult * nullable))handler; // リクエストオブジェクトを使用して非同期的にホストを解決

説明
  • このインターフェイスはバージョン v3.0.0 で導入されました。

  • デフォルトのタイムアウトは 2 秒です。 この期間内に有効な結果が得られない場合は、nil を含むコールバックが行われます。 タイムアウトは、リクエストオブジェクトを通じてカスタマイズできます。

クラス

HttpDnsService

パラメーター定義

パラメーター

タイプ

必須かどうか

備考

host

NSString *

はい

解決するドメイン名

queryIpType

HttpdnsQueryIPType

はい

ドメイン名を解決する IP アドレスのタイプ。 HttpdnsQueryIPType を使用します

有効な値:

  • v4: 解決されるタイプは IPv4 です

  • v6: 解決されるタイプは IPv6 です

  • 両方: IPv4 アドレスと IPv6 アドレスの両方。

  • auto: SDK はデバイスの現在のネットワークスタックに基づいて内部的に決定します。 デフォルトでは、IPv4 アドレスを解決します。 現在のネットワークスタックが IPv6 をサポートしている場合は、IPv6 アドレスの解決も試みます

handler

(void (^)(HttpdnsResult * nullable))

はい

解決結果コールバック

sdnsParams

NSDictionary<NSString *, NSString *> *

いいえ

ソフトウェア定義の解決パラメーター

cacheKey

NSString *

いいえ

ソフトウェア定義のカスタムキャッシュキー

request

HttpdnsRequest *

はい

次の解像度関連のデータ構造を参照してください

コールバック結果の説明

タイプ

説明

HttpdnsResult *

解決結果。次の解決関連データ構造を参照してください。

ドメイン名キャッシュのクリア

HTTPDNS を使用する場合、この操作を呼び出して、ドメイン名のキャッシュされた DNS レコードをクリアできます。 これにより、解決結果を数秒以内に更新できます。 たとえば、ドメイン名 xxx.com が IP アドレス ip1 に解決され、ip1 で攻撃が発生した場合、次の手順を実行してトラフィックを ip1 から ip2 に移行できます。

  1. まず、Cloud DNS コンソールでドメイン名の IP アドレスを ip2 に変更します。

  2. 次に、HTTPDNS コンソールに移動し、このドメイン名の更新アクションを手動で送信して、サーバー側で更新をトリガーします。

  3. この操作を手動で呼び出して、xxx.com ドメイン名のローカルキャッシュをクリアします。

  4. アプリからキャッシュがクリアされた後にリクエストが開始されると、サーバーは権威サーバーにリクエストを再送信して、最新の DNS レコードで ip2 を取得します。 これにより、ip2 は解決のための実際の IP アドレスとしてすぐに使用されます。

この操作を呼び出して、特定のドメイン名リストのキャッシュ、またはすべてのドメイン名のキャッシュをクリアできます。

重要
  • この操作は、HTTPDNS SDK V2.0.4 以降でのみサポートされています。 新たに追加された cleanAllHostCache 操作は、V3.1.0 以降でサポートされています。

  • 消去操作では、メモリキャッシュとローカルの永続サンドボックスキャッシュの両方がクリアされます。

操作の定義

- (void)cleanHostCache:(NSArray <NSString *>*)hostArray; // 指定されたホストのキャッシュをクリア

- (void)cleanAllHostCache; // すべてのホストキャッシュをクリア

パラメーターの説明

パラメーター

タイプ

必須かどうか

備考

hostArray

NSArray <NSString *> *

はい

ローカルキャッシュから DNS レコードをクリアするドメイン名で構成される配列。 すべてのデータをクリアする場合は、このパラメーターを nil または空の配列に設定します

解決に関連するデータ構造

HTTPDNS iOS SDK によって提供されるドメイン名解決操作には、主に 2 つのカスタム構造、HttpdnsRequestHttpdnsResult が関係します。

HttpdnsRequest

ドメイン名解決のリクエストパラメーターをカプセル化するクラス。

パラメーター

タイプ

必須かどうか

備考

host

NSString *

はい

解決されるドメイン名。

queryIpType

HttpdnsQueryIPType

はい

ドメイン名を解決する IP アドレスのタイプ。 HttpdnsQueryIPType を使用します

有効な値:

  • v4: 解決されるタイプは IPv4 です

  • v6: IPv6 アドレス。

  • both: IPv4 アドレスと IPv6 アドレスの両方。

  • auto: SDK はデバイスの現在のネットワークスタックに基づいて内部的に決定します。 デフォルトでは、IPv4 アドレスに解決されます。 現在のネットワークスタックが IPv6 をサポートしている場合は、IPv6 アドレスへの解決も試みます

resolveTimeoutInSecond

double

いいえ

解決タイムアウト期間。 同期インターフェイスの場合、これは最大待機時間です。 非同期インターフェイスの場合、これは最大待機コールバック時間です。 デフォルトは 2 秒で、構成可能な範囲は 0.5 秒から 5 秒です。

単位: 秒

sdnsParams

NSDictionary<NSString *, NSString *> *

いいえ

カスタムソフトウェア解決パラメーター

cacheKey

NSString *

いいえ

カスタムソフトウェア解決キャッシュキー

HttpdnsResult

ドメイン名解決が成功した後に返される結果をカプセル化するクラス。 次のシナリオでは、解決インターフェイスの結果が空になる可能性があることに注意してください。

  • 再帰解決で IP レコードを取得できない場合など、ドメイン名を解決できません。

  • ドメイン名が HTTPDNS コンソールに登録されていないため、解決に失敗します。

  • ネットワークの異常により、解決に失敗します。

  • 同期ノンブロッキングインターフェイスは、ローカルにキャッシュレコードが見つからない場合、最初に空の値を返す可能性があります。

パラメーター

タイプ

説明

host

NSString *

解決されるドメイン名

ips

NSArray<NSString *> *

解決された IPv4 アドレスのリスト

ipv6s

NSArray<NSString *> *

解決された IPv6 アドレスのリスト

lastUpdatedTimeInterval

NSTimeInterval

IPv4 アドレスが最後に更新された時刻。 UNIX タイムスタンプ。 単位: 秒

ttl

NSTimeInterval

IPv4 アドレスの TTL 。 単位: 秒