You need to enable JavaScript to run this app.
导航
为 AnyMatch 功能添加自定义标识
最近更新时间:2023.09.19 19:24:35首次发布时间:2023.09.19 19:24:35

本文档介绍如何通过 HTTPDNS SDK 为 软件定义解析 AnyMatch 功能 添加自定义标识。

在 Android SDK 中添加自定义标识

您可以在 1.0.22 或之后的 Android SDK 中为软件定义解析 AnyMatch 功能添加自定义标识。

  1. 导入 AbsOptionalHttpDnsDepend 抽象类。
import AbsOptionalHttpDnsDepend;
  1. 在初始化 Android SDK 时,继承 AbsOptionalHttpDnsDepend 抽象类,并重写 getExtraHeaders 方法或 getExtraQueryParams 方法。然后,您需要在返回值中传入自定义标识。

说明

  • getExtraHeaders 方法通过请求头发送自定义标识;getExtraQueryParams 方法通过查询参数发送自定义标识。您可以任意选择其中一种方法。
  • 您可以在 Am-Tag 中添加多个自定义标识。匹配顺序是从左到右。例如,在 headers.put("Am-Tag", Arrays.asList("hebei", "shijiazhuang")) 中,匹配顺序是 hebeishijiazhuang
public class TestHttpDnsDepend  extends AbsOptionalHttpDnsDepend implements IHttpDnsDepend {

    ...

    // 通过请求头发送自定义标识
    @Override
    public Map<String, List<String>> getExtraHeaders() {
        Map<String, List<String>> headers = new HashMap<>();
        headers.put("Am-Tag", Arrays.asList("aaa", "bbb"));
        headers.put("Am-Id", Arrays.asList("123"));
        return headers;
    }

    // 通过查询参数发送自定义标识
    @Override
    public Map<String, List<String>> getExtraQueryParams() {
        Map<String, List<String>> querys = new HashMap<>();
        querys.put("amtag", Arrays.asList("aaa", "bbb"));
        querys.put("amid", Arrays.asList("123"));
        return querys;
    }

}

在 iOS SDK 中添加自定义标识

您可以在 0.13.1 或之后的 iOS SDK 中为软件定义解析 AnyMatch 功能添加自定义标识。

初始化 iOS SDK 时,在调用 dnsResolverColdStart 前调用 setHttpDnsCustomHeaderBlocksetHttpDnsCustomParamBlock 发送自定义标识。

说明

  • setHttpDnsCustomHeaderBlock 方法通过请求头发送自定义标识;setHttpDnsCustomParamBlock 方法通过查询参数发送自定义标识。您可以任意选择其中一种方法。
  • 您可以在 Am-Tag 中添加多个自定义标识。匹配顺序是从左到右。例如,在 @"Am-Tag" : @[@"hebei", @"shijiazhuang"] 中,匹配顺序是 hebeishijiazhuang
// 通过请求头发送自定义标识
[[TTDnsResolver shareInstance] setHttpDnsCustomHeaderBlock:^NSDictionary * (NSArray<NSString*>* hosts) {
        return @{@"Am-Tag"  : @[@"aaa", @"bbb"],
                 @"Am-Id": [NSNumber numberWithLongLong:1234567]};
}];

// 通过查询参数发送自定义标识
[[TTDnsResolver shareInstance] setHttpDnsCustomParamBlock:^NSDictionary * (NSArray<NSString*>* hosts) {
        return @{@"amtag"  : @[@"aaa", @"bbb"],
                 @"amid": [NSNumber numberWithLongLong:1234567]};
}];