Bagian ini menjelaskan operasi konfigurasi lanjutan dari HTTPDNS SDK untuk iOS.
Tentukan apakah HTTPDNS diizinkan untuk menampilkan log
Anda dapat mengaktifkan fitur pencatatan lokal untuk HTTPDNS guna membantu menyelesaikan masalah resolusi. Namun, kami menyarankan untuk menonaktifkannya saat menerbitkan aplikasi yang terintegrasi dengan HTTPDNS.
Definisi Operasi
- (void)setLogEnabled:(BOOL)enable;
Kategori
HttpDnsService
Deskripsi Parameter
Parameter | Tipe | Menunjukkan apakah parameter diperlukan | Deskripsi |
enable | BOOL | Ya | Saklar log |
Konfigurasikan kelas callback yang digunakan untuk menerima log SDK
Setelah mengaktifkan fitur pencatatan lokal, Anda dapat memanggil operasi ini untuk menampilkan log di lokasi kustom. Jika ingin menggunakan file log untuk mengumpulkan log resolusi, Anda dapat menulis log ke file yang relevan.
Definisi Operasi
- (void)setLogHandler:(id<HttpdnsLoggerProtocol>)logHandler;
Kategori
HttpDnsService
Deskripsi Parameter
Parameter | Tipe | Menunjukkan apakah parameter diperlukan | Deskripsi |
logHandler | id<HttpdnsLoggerProtocol> | Ya | Fungsi callback untuk output log. |
Contoh kode
Gunakan kode berikut untuk mengimplementasikan kelas penerima log.
#import "HttpdnsLoggerProtocol.h"
@interface MyLoggerHandler : NSObject <HttpdnsLoggerProtocol>
@end
@implementation MyLoggerHandler
- (void)log:(NSString *)logStr {
NSLog(@"[myLog] - %@", logStr);
}
@endKonfigurasikan peringkat alamat IP
Tentukan nomor port untuk layanan yang sesuai dengan nama domain. Setelah mengonfigurasi operasi ini, jika nama domain diselesaikan, SDK akan melakukan pengujian kecepatan koneksi TCP pada daftar alamat IP yang dikembalikan oleh resolusi. Berdasarkan hasil pengujian, SDK akan mengurutkan daftar alamat IP secara dinamis untuk memastikan bahwa alamat IP pertama memiliki ketersediaan terbaik.
Fitur ini didukung di SDK V3.2.0 dan versi lebih baru. Jika daftar alamat IP berisi alamat IPv4 dan IPv6, mereka akan diuji dan diurutkan secara terpisah.
Pengujian kecepatan jaringan membutuhkan waktu tertentu. Saat memanggil operasi untuk pertama kalinya untuk memicu HTTPDNS menyelesaikan nama domain, daftar alamat IP yang diperoleh mungkin belum diurutkan.
Jika ada perbedaan signifikan dalam performa atau lingkungan jaringan di antara beberapa titik entri layanan IP, hasil pengujian kecepatan semua klien mungkin serupa. Ini dapat menyebabkan ketidakseimbangan beban dan mempengaruhi stabilitas. Oleh karena itu, evaluasilah dengan hati-hati sebelum mengaktifkan peringkat alamat IP.
Definisi Operasi
- (void)setIPRankingDatasource:(NSDictionary<NSString *, NSNumber *> *)IPRankingDatasource;
Deskripsi Parameter
Parameter | Tipe | Menunjukkan apakah parameter diperlukan | Deskripsi |
IPRankingDatasource | NSDictionary<NSString *, NSNumber *> | Ya | Tetapkan nomor port untuk nama domain yang sesuai. @{host: port} |
Contoh kode
HttpDnsService *httpdns = [[HttpDnsService alloc] initWithAccountID:xxxx secretKey:@"xxxxx"];
NSDictionary *IPRankingDatasource = @{
@"www.aliyun.com" : @443,
@"www.taobao.com" : @443,
@"www.exmaple.com" : @443
};
[httpdns setIPRankingDatasource:IPRankingDatasource];Kalibrasi waktu tanda tangan aplikasi
Setelah melakukan operasi ini, jika terdeteksi deviasi waktu, waktu perangkat akan dikalibrasi untuk setiap permintaan jaringan. Hal ini mencegah kegagalan autentikasi akibat waktu perangkat yang kedaluwarsa dalam mode autentikasi. Jika operasi ini tidak dilakukan, waktu perangkat akan digunakan sebagai standar.
SDK V3.0.0 dan versi lebih baru didukung.
Skenario: Waktu di ponsel tidak akurat.
Kalibrasi hanya berlaku selama satu siklus hidup aplikasi. Setelah aplikasi dimulai ulang, Anda harus memanggil operasi ini lagi.
Layanan waktu diperlukan. Layanan waktu bisa menjadi layanan waktu yang dikelola sendiri yang mendukung operasi timestamp sederhana. Setelah Anda memulai aplikasi, peroleh waktu yang akurat menggunakan layanan waktu dan tentukan waktu dalam operasi kalibrasi. Dengan cara ini, SDK dapat memperoleh perbedaan antara waktu yang akurat dan waktu di perangkat.
Dalam versi 2.x.x dan sebelumnya, operasi ini didefinisikan sebagai
- (void)setAuthCurrentTime:(NSTimeInterval)currentTime;
Definisi Operasi
- (void)setInternalAuthTimeBaseBySpecifyingCurrentTime:(NSTimeInterval)currentTime;
Kategori
HttpDnsService
Deskripsi Parameter
Parameter | Tipe | Menunjukkan apakah parameter diperlukan | Deskripsi |
currentTime | NSTimeInterval | Ya | Timestamp akurat yang digunakan untuk kalibrasi. |
Tentukan wilayah
Jika Anda ingin menggunakan HTTPDNS di aplikasi Anda di wilayah di luar Tiongkok daratan, Anda dapat mengonfigurasi node layanan startup SDK untuk meningkatkan efisiensi resolusi. Setelah Anda mengonfigurasi node tersebut, SDK menggunakan node tersebut untuk resolusi nama domain dan pembaruan daftar node penjadwalan berikutnya.
Secara default, konfigurasi tidak diperlukan. Bahkan jika aplikasi dimulai di wilayah di luar Tiongkok daratan, SDK akan secara otomatis menjadwalkan ke node luar negeri terdekat, dengan dampak minimal pada efisiensi.
SDK V3.1.0 dan versi lebih baru didukung.
Definisi Operasi
- (void)setRegion:(NSString *)region;
Kategori
HttpDnsService
Deskripsi Parameter
Parameter | Tipe | Menunjukkan apakah parameter diperlukan | Deskripsi |
wilayah | NSString * | Ya | Wilayah yang ingin Anda tentukan. Tentukan wilayah di Tiongkok daratan atau salah satu wilayah berikut di luar Tiongkok daratan: wilayah Hong Kong (Tiongkok), wilayah Singapura, wilayah Frankfurt (Jerman), dan wilayah Virginia (AS). Wilayah-wilayah ini sesuai dengan makro berikut:
|
Tentukan waktu hidup (TTL) hasil resolusi
Jika Anda ingin menentukan TTL nama domain di aplikasi lokal untuk menimpa konfigurasi nama domain aktual, Anda dapat menggunakan operasi ini.
Definisi Operasi
- (int64_t)httpdnsHost:(NSString *)host ipType:(AlicloudHttpDNS_IPType)ipType ttl:(int64_t)ttl;
Kategori
HttpdnsTTLDelegate
Deskripsi Parameter Callback
Parameter | Tipe | Deskripsi |
host | NSString * | Nama domain yang ingin Anda tentukan TTL kustom. |
ipType | AlicloudHttpDNS_IPType | Tipe kueri di mana Anda perlu menentukan TTL kustom. |
ttl | int64_t | TTL asli yang dikembalikan dari server. |
Contoh kode
@interface AppDelegate () <HttpdnsTTLDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Tentukan ID akun yang diperlukan.
HttpDnsService *httpdns = [[HttpDnsService alloc] initWithAccountID:xxxx secretKey:@"xxxx"];
httpdns.ttlDelegate = self;
return YES;
}
- (int64_t)httpdnsHost:(NSString *)host ipType:(AlicloudHttpDNS_IPType)ipType ttl:(int64_t)ttl {
if ([host isEqualToString:@"www.aliyun.com"]) {
// Rekaman resolusi domain www.aliyun.com stabil dan dapat disimpan dalam cache lokal untuk jangka waktu panjang.
// Jika host adalah www.aliyun.com, atur TTL menjadi 600 detik.
return 600;
}
// Jika Anda tidak memiliki konfigurasi khusus, TTL asli dikembalikan.
return ttl;
}
@end