設定インターフェースは HTTPDNS Android SDK の基本であり、その初期化、パラメーター設定、およびランタイム調整を処理します。これにより、セキュリティ設定、キャッシュポリシー、ネットワークパラメーター、パフォーマンスの最適化など、アプリケーションに合わせて SDK の動作をカスタマイズできます。
サービスインスタンスの取得
HTTPDNS サービスインスタンスを返します。HTTPDNS SDK は複数のインスタンスをサポートし、アカウント ID ごとに一意のインスタンスを返します。
アカウント ID で初期化された各インスタンスは、シングルトンデザインパターンを使用します。初期化後、インスタンスはアプリケーションライフサイクルを通じて永続します。
getService
インターフェース定義
HttpDnsService getService(String accountID)
導入バージョン
2.6.3
クラス
HttpDns
パラメーター
パラメーター | タイプ | 必須 | 説明 |
accountID | String | はい | サービスのアカウント ID です。EMAS コンソール > [プロジェクト名] > プラットフォームサービス > HTTPDNS > 開発設定ページで確認できます。 |
コード例
val httpdns = HttpDns.getService(accountID)HttpDnsService httpdns = HttpDns.getService(accountID);コンテキストの設定
HTTPDNS 解決のためのアプリケーション `Context` を設定します。
setContext
インターフェース定義
InitConfig.Builder setContext(Context context)
バージョン
2.6.3
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
context | Context | はい | 現在のアプリケーションの `applicationContext`。 |
コード例
InitConfig.Builder()
.setContext(context)new InitConfig.Builder()
.setContext(context);解決 API の署名キーの設定
HTTPDNS 解決時にリクエストの署名に使用する署名キーを設定します。
キーを設定すると、SDK はサーバーに送信するリクエストに署名します。これにより、HTTPDNS サーバーは解決リクエストに対して ID 認証と改ざん防止を実行でき、SDK とサーバー間のやり取りのセキュリティが向上します。
setSecretKey
インターフェース定義
InitConfig.Builder setSecretKey(String secretKey)
このインターフェースは課金方法に影響しません。
悪意のある逆コンパイルによる情報漏洩を防ぐため、アプリケーションを公開する前に、難読化とアプリケーションの堅牢化を有効にしてください。
導入バージョン
2.6.3
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
secretKey | String | はい | 署名キー。 |
コード例
InitConfig.Builder()
.setSecretKey(secretKey)new InitConfig.Builder()
.setSecretKey(secretKey);解決 API 暗号化キーの設定
HTTPDNS 解決のための暗号化キーを設定します。
暗号化キーを設定すると、SDK は AES アルゴリズムを使用してリクエストパラメーターと応答を暗号化します。この暗号化によりセキュリティは向上しますが、プロダクトの課金に影響します。課金の詳細については、「プロダクト課金」をご参照ください。
setAesSecretKey
インターフェース定義
InitConfig.Builder setAesSecretKey(String aesSecretKey)
悪意のある逆コンパイルによる情報漏洩を防ぐため、アプリを公開する前に難読化とアプリケーションの堅牢化を有効にしてください。
導入バージョン
2.6.3
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
aesSecretKey | String | はい | 暗号化キー。 |
コード例
InitConfig.Builder()
.setAesSecretKey(aesSecretKey)new InitConfig.Builder()
.setAesSecretKey(aesSecretKey);HTTPS リクエストの使用
デフォルトでは、HTTPDNS SDK は HTTP 経由でドメイン名解決リクエストを送信します。HTTPS を使用するには、SDK を設定します。
HTTPS はより高いセキュリティを提供しますが、HTTP と HTTPS では課金が異なることにご注意ください。課金の詳細については、「プロダクト課金」をご参照ください。
setEnableHttps
インターフェース定義
InitConfig.Builder setEnableHttps(boolean enableHttps)
HTTPS と AES 暗号化は異なるレイヤーで動作します。HTTPS はトランスポート層のセキュリティを確保しますが、パラメーターと応答の詳細はパケットキャプチャで表示される可能性があります。AES 暗号化は HTTPDNS サービスレイヤーを保護し、キャプチャされたパケット内でプレーンテキストコンテンツが表示されるのを防ぎます。必要に応じて、一方または両方の機能を有効にできます。
導入バージョン
2.2.2
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
enableHttps | boolean | はい | ドメイン名解決に HTTPS を使用するかどうかを指定します。
|
コード例
InitConfig.Builder()
.setEnableHttps(true)new InitConfig.Builder()
.setEnableHttps(true);期限切れ IP アドレスの再利用
DNS プロトコルに準拠するため、SDK はドメイン名解決の結果をその有効期間 (TTL) に従ってキャッシュし、アプリケーションがネットワークリクエストを開始した際の IP アドレス取得の効率を向上させます。キャッシュの有効期限が切れ、アプリケーションが解決インターフェースを呼び出して IP アドレスを取得すると、次のいずれかのシナリオが発生します。
アプリケーションが同期非ブロッキングインターフェースを呼び出す場合、キャッシュの有効期限が切れているため、SDK はサーバーから新しい解決結果をすぐに取得できません。スレッドのブロッキングを避けるため、インターフェースは null の結果を返し、呼び出し元はローカル DNS 解決にフォールバックする必要があります。
アプリケーションが同期インターフェースまたは非同期インターフェースを呼び出す場合、SDK は解決リクエストを送信してサーバーから新しい結果を取得します。このプロセスには時間がかかります。同期インターフェースは新しい結果を受け取るまでスレッドをブロックし、非同期インターフェースは新しい結果を受け取った後にのみコールバックを呼び出します。
SDK は、期限切れの IP アドレスを再利用するオプションを提供します。このオプションを true に設定すると、前述の両方のシナリオで、キャッシュされた IP アドレスの有効期限が切れていても、インターフェースは期限切れの IP アドレスを即座に返すことができます。これにより、ドメイン名解決時間が短縮され、ネットワークリクエストのパフォーマンスが向上します。SDK が期限切れの IP アドレスを検出すると、その IP を返し、すぐに非同期スレッドを開始してドメイン名を解決し、新しい結果を取得します。
したがって、このオプションの副作用は最小限です。特に、プライマリサイトのドメイン名や静的ゲートウェイのドメイン名など、ドメインの解決設定が頻繁に変更されない場合に有効です。ドメイン名解決が変更された場合でも、このオプションを有効にすると、SDK は IP アドレスの有効期限切れを検出するとすぐに解決の更新を要求するため、影響を受けるのはドメインのキャッシュが期限切れになった後の最初のリクエストのみです。
この機能はデフォルトで有効になっています。
true に設定すると、SDK は期限切れの IP アドレスを返しながら、最新の IP アドレスを取得するための非同期更新を実行します。
setEnableExpiredIp
インターフェース定義
InitConfig.Builder setEnableExpiredIp(boolean enableExpiredIp)
導入バージョン
2.2.2
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
enableExpiredIp | boolean | はい | 期限切れの IP アドレスを返すかどうかを指定します。
|
コード例
InitConfig.Builder()
.setEnableExpiredIp(true)new InitConfig.Builder()
.setEnableExpiredIp(true);永続キャッシュの有効化
永続キャッシュ機能は、起動後のドメイン名解決時間を短縮し、初回画面の読み込み速度を向上させます。
有効にすると、HTTPDNS は最後の解決結果を永続層に保存します。アプリの再起動後、各ドメイン名の初期解決では、可能な限り迅速な応答を得るために、永続層からキャッシュされた結果の取得が優先されます。その結果、最初に使用される IP の TTL が期限切れになっている可能性があります。しかし、ほとんどの場合、特に解決レコードが安定しているドメインでは、この IP はまだ使用可能です。
アプリの起動後に (たとえば、アプリが 1 か月前に最後に起動された場合)、有効期限が切れてから長時間が経過したキャッシュエントリの再利用を避けるため、このインターフェイスは expiredThresholdMillis パラメーターを提供します。アプリが起動して永続レイヤーからメモリにキャッシュをロードする際、このパラメーターは、有効期限が切れてから expiredThresholdMillis を超える時間が経過した解決結果を破棄するかどうかを決定します。この値は 1 日に設定することを推奨します。
この機能はデフォルトで無効になっています。
setEnableCacheIp
インターフェース定義
InitConfig.Builder setEnableCacheIp(boolean enableCacheIp, long expiredThresholdMillis)
ローカルキャッシュを有効にする際、指定した期間を超えて期限切れになったキャッシュ結果を消去するように設定できます。
ビジネスサーバーの IP アドレスが頻繁に変更される場合は、ビジネスの中断を避けるためにこの機能を注意して使用してください。
永続キャッシュは、最初のドメイン名解決にのみ影響します。その後の解決では HTTPDNS サーバーにクエリが実行され、ローカルキャッシュが更新されます。
この機能が有効な場合、各ネットワーク解決でローカルキャッシュが更新されます。アプリの再起動後、ローカルキャッシュはメモリキャッシュに読み込まれます。
導入バージョン
2.4.3
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
enableCacheIp | boolean | はい | ローカルキャッシュを有効にするかどうかを制御します。
|
expiredThresholdMillis | long | はい | SDK がローカルキャッシュからメモリキャッシュにレコードを読み込む際、 単位はミリ秒です。デフォルトは 0 で、TTL が期限切れのレコードはすべて破棄されることを意味します。最大値は 1 年です。 |
コード例
InitConfig.Builder()
.setEnableCacheIp(true, DateUtils.YEAR_IN_MILLIS)new InitConfig.Builder()
.setEnableCacheIp(true, DateUtils.YEAR_IN_MILLIS);setEnableCacheIp
インターフェース定義
InitConfig.Builder setEnableCacheIp(boolean enableCacheIp)
このメソッドを呼び出すと、ローカルキャッシュが有効になり、永続キャッシュからメモリキャッシュに読み込む際にすべての期限切れレコードを破棄するように設定されます。
導入バージョン
2.2.2
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
enableCacheIp | boolean | はい | ローカルキャッシュを有効にするかどうかを制御します。
|
コード例
InitConfig.Builder()
.setEnableCacheIp(true)new InitConfig.Builder()
.setEnableCacheIp(true);ネットワーク変更時の自動解決の有効化
デバイスのネットワークが変更された場合、たとえば Wi-Fi からセルラーネットワークへ、またはある携帯電話キャリアから別のキャリアへ切り替わった場合、HTTPDNS SDK から以前にキャッシュされた IP アドレスを使用すると、クロスネットワークリクエストが発生する可能性があります。これにより、リクエストのパフォーマンスが低下し、成功率が低くなることがあります。これを防ぐため、SDK は内部でネットワーク変更イベントを監視し、グローバル解決キャッシュをクリアするかどうかをインテリジェントに決定します。
このインターフェースを使用すると、ネットワーク変更によるグローバル解決キャッシュのクリア後、SDK がすべてのドメイン名を自動的に再解決するかどうかを設定できます。この機能を有効にすると、アプリケーションはネットワーク切り替え後にすぐに新しい結果を取得できます。これにより、ドメイン名解決時間が短縮され、リクエストのパフォーマンスが向上します。
この機能を有効にすると、解決リクエストの数がわずかに増加する可能性があります。この機能はデフォルトで無効になっています。
Wi-Fi、セルラーネットワーク、および切断状態間の切り替えは、ネットワーク変更と見なされます。
4G と 3G の間の切り替えは、ネットワーク変更とは見なされません。
SDK は SIM カードの切り替えに対して特別な処理を行いません。
setPreResolveAfterNetworkChanged
インターフェース定義
InitConfig.Builder setPreResolveAfterNetworkChanged(boolean enable)
導入バージョン
2.4.0
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
enable | boolean | はい | ネットワークが変更されたときにキャッシュ内のすべてのドメイン名を再解決するかどうかを指定します。
|
コード例
InitConfig.Builder()
.setPreResolveAfterNetworkChanged(true)new InitConfig.Builder()
.setPreResolveAfterNetworkChanged(true);タイムアウト設定
ドメイン名解決のタイムアウトを指定します。デフォルト値は 2000 ms です。
setTimeoutMillis
インターフェース定義
InitConfig.Builder setTimeoutMillis(int timeoutInterval)
導入バージョン
2.4.0
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
timeoutInterval | int | はい | ドメイン名解決のタイムアウト (ミリ秒)。 デフォルトは 2000 ms、最大値は 5000 ms です。 |
コード例
new InitConfig.Builder()
.setTimeoutMillis(2 * 1000);アプリ署名時刻の補正
このメソッドを呼び出して、SDK が各ネットワークリクエストでデバイス上の時刻の不一致を補正できるようにします。そうしない場合、SDK はデフォルトでデバイスのローカル時刻を使用します。
デバイスの時刻が不正確である可能性がある場合は、この機能を使用してください。
補正は現在のアプリケーションライフサイクルにのみ適用されます。アプリの再起動後にメソッドを再度呼び出す必要があります。このメソッドは繰り返し呼び出すことができます。
信頼できる時刻サービスを提供する必要があります。ご自身で構築した単純なタイムスタンプインターフェースで十分です。時刻サービスから現在の時刻を取得し、このメソッドに渡します。SDK はこの値を使用して時刻オフセットを計算し、補正を適用します。
setAuthCurrentTime
定義
void setAuthCurrentTime(long time)
導入バージョン
1.3.2
クラス
HttpDnsService
パラメーター
パラメーター | タイプ | 必須 | 説明 |
time | long | はい | 現在の UNIX タイムスタンプ (秒単位)。 |
コード例
val httpdns = HttpDns.getService(accountID)
httpdns?.setAuthCurrentTime(System.currentTimeMillis() / 1000L)HttpDnsService httpdns = HttpDns.getService(accountID);
httpdns.setAuthCurrentTime(System.currentTimeMillis() / 1000L);サービスリージョンの設定
アプリケーションが中国本土以外で HTTPDNS を使用する場合、SDK のサービスリージョンを設定して解決パフォーマンスを向上させます。SDK はそのリージョンのサービスノードを使用してドメイン名を解決し、スケジューリングノードリストを更新します。
setRegion
初期化時にサービスリージョンを設定します。
インターフェース定義
InitConfig.Builder setRegion(Region region)
導入バージョン
2.4.2
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
region | はい | サービスリージョン。中国本土以外のリージョンを指定して、そのリージョンのサービスノードを使用します。 |
setRegion
サービスリージョンを更新します。
インターフェース定義
void setRegion(Region region)
導入バージョン
2.4.2
クラス
HttpDnsService
パラメーター
パラメーター | タイプ | 必須 | 説明 |
region | はい | サービスリージョン。中国本土以外のリージョンを指定して、そのリージョンのサービスノードを使用します。 |
setRegion
サービスリージョンを更新します。
インターフェース定義
void setRegion(String region)
導入バージョン
1.3.2
クラス
HttpDnsService
パラメーター
パラメーター | タイプ | 必須 | 説明 |
region | String | はい | サービスリージョン。中国本土以外のリージョンを指定して、そのリージョンのサービスノードを使用します。サポートされている値には、`hk` (中国 (香港))、`sg` (シンガポール)、`de` (ドイツ)、`us` (米国) があります。 重要 中国本土以外のアプリケーションのパフォーマンスを最適化するには、適切なサービスリージョンを設定してください。 |
解決結果 TTL のカスタマイズ
デフォルトでは、サーバーの有効期間 (TTL) の値によって、解決結果が期限切れかどうかが決まります。次のインターフェースを使用して、解決結果の TTL を変更します。
configCacheTtlChanger
メソッドシグネチャ
InitConfig.Builder configCacheTtlChanger(CacheTtlChanger changer)
導入バージョン
2.3.0
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
changer | はい | TTL をカスタマイズするためのハンドラ。 |
コード例
InitConfig.Builder().configCacheTtlChanger { host, requestIpType, ttl ->
if (TextUtils.equals(host, "www.aliyun.com")) {
// 例として www.aliyun.com を使用します。
ttl * 10
} else ttl
}new InitConfig.Builder().configCacheTtlChanger(new CacheTtlChanger() {
@Override
public int changeCacheTtl(String host, RequestIpType requestIpType, int ttl) {
// 例として www.aliyun.com を使用します。
if (TextUtils.equals(host, "www.aliyun.com")) {
return ttl * 10;
}
return ttl;
}
});HTTPDNS ブラックリストの設定
特定のドメイン名を HTTPDNS で解決しないようにするには、このインターフェースを使用してそれらをフィルターします。SDK は、フィルターされたドメイン名に対して空の解決結果を返します。その後、アプリケーションはドメイン名解決のためにローカル DNS にフォールバックする必要があります。
setNotUseHttpDnsFilter
インターフェース定義
InitConfig.Builder setNotUseHttpDnsFilter(NotUseHttpDnsFilter filter)
導入バージョン
2.4.0
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
filter | はい | ブラックリストポリシーを定義するフィルター。 |
コード例
InitConfig.Builder().setNotUseHttpDnsFilter { hostName ->
TextUtils.equals(
hostName,
"www.aliyun.com"
)
}new InitConfig.Builder().setNotUseHttpDnsFilter(new NotUseHttpDnsFilter() {
@Override
public boolean notUseHttpDns(String hostName) {
return TextUtils.equals(hostName, "www.aliyun.com");
}
});IP ランキングの有効化
IP プロービング用のドメイン名のリストを設定します。このリスト上のドメイン名が解決されると、SDK は返された IP アドレスに対して IP 速度テストを実行します。その後、SDK は結果を動的にソートし、最も可用性の高い IP アドレスが最初にリストされるようにします。
IP プロービングでは IPv4 アドレスのみがサポートされます。
setIPRankingList
インターフェース定義
InitConfig.Builder setIPRankingList(List<IPRankingBean> ipRankingList)
導入バージョン
2.3.2
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
ipRankingList | List<IPRankingBean> | はい | IP プロービングを実行するドメイン名とその対応するポートのリスト。 |
コード例
val list = ArrayList<IPRankingBean>()
list.add(IPRankingBean("www.aliyun.com", 8080))
InitConfig.Builder().setIPRankingList(list)ArrayList<IPRankingBean> list = new ArrayList<IPRankingBean>();
list.add(new IPRankingBean("www.aliyun.com", 8080));
new InitConfig.Builder().setIPRankingList(list);カスタム解決のためのグローバルパラメーターの設定
これらのグローバルパラメーターは、カスタム解決のための追加パラメーターとマージされます。これらは追加パラメーターの設定には影響しません。
setSdnsGlobalParams
インターフェース定義
InitConfig.Builder setSdnsGlobalParams(Map<String, String> params)
導入バージョン
2.4.0
クラス
InitConfig.Builder
パラメーター
パラメーター | タイプ | 必須 | 説明 |
params | Map<String, String> | はい | すべてのカスタム解決リクエストに含まれるグローバルパラメーター。 |
コード例
val params: MutableMap<String, String> = HashMap()
params["level"] = "1"
InitConfig.Builder()
.setSdnsGlobalParams(params)Map<String, String> params = new HashMap<>();
params.put("level", "1");
new InitConfig.Builder()
.setSdnsGlobalParams(params);ネットワークスタック自動検出の無効化
特定のシステム環境では、このインターフェースを使用して SDK のネットワークスタック自動検出を無効にできます。無効にすると、SDK はネットワークスタックを検出しなくなり、ネットワークタイプを `both` として扱います。この設定は通常は必要ありません。
disableNetworkDetector
インターフェース定義
InitConfig.Builder disableNetworkDetector()
導入バージョン
2.6.8
クラス
InitConfig.Builder
パラメーター
なし
コード例
InitConfig.Builder()
.disableNetworkDetector()new InitConfig.Builder()
.disableNetworkDetector();