Tema ini menjelaskan cara mengintegrasikan HTTPDNS dengan Alibaba Cloud Object Storage Service (OSS) SDK untuk iOS.
1. Latar Belakang
Alibaba Cloud Object Storage Service (OSS) adalah layanan penyimpanan awan serbaguna yang memungkinkan pengembang menyimpan dan mengakses file seperti foto profil, gambar, audio, dan video dari berbagai aplikasi. Untuk menggunakan OSS di iOS, Anda harus mengintegrasikan OSS iOS SDK.
HTTPDNS SDK dapat digabungkan dengan OSS iOS SDK untuk menyelesaikan nama domain OSS. Integrasi ini meningkatkan stabilitas dan kecepatan transfer file, memberikan perlindungan anti-pembajakan untuk nama domain, serta mempercepat resolusi DNS guna mengoptimalkan pengalaman jaringan saat aplikasi mengakses OSS.
2. Solusi integrasi
Di iOS, Anda dapat mengintegrasikan HTTPDNS menggunakan layanan proxy lokal EMAS. Proxy lokal menyediakan penerusan transparan untuk permintaan OSS dan mengoptimalkan resolusi DNS.
2.1 Instalasi proxy HTTPDNS
Tambahkan dependensi EMASLocalProxy ke dalam Podfile:
source 'https://github.com/aliyun/aliyun-specs.git'
target 'yourAppTarget' do
use_framework!
pod 'AlicloudHTTPDNS', 'x.x.x'
pod 'AliyunOSSiOS', 'x.x.x'
pod 'EMASLocalProxy', 'x.x.x'
endPersyaratan versi:
AlicloudHTTPDNS: >= 3.0.0
AliyunOSSiOS: >= 2.11.2
EMASLocalProxy: >= 1.4.0
Untuk informasi lebih lanjut tentang integrasi HTTPDNS menggunakan proxy lokal, lihat Solusi proxy lokal.
2.1 Inisialisasi SDK HTTPDNS
// AppDelegate.m
#import <AlicloudHttpDNS/AlicloudHttpDNS.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Inisialisasi HTTPDNS.
HttpDnsService *httpdns = [[HttpDnsService alloc] initWithAccountID:@"your-account-id"
secretKey:@"your-secret-key"];
[httpdns setLogEnabled:YES];
[httpdns setHTTPSRequestEnabled:YES];
[httpdns setPersistentCacheIPEnabled:YES];
[httpdns setNetworkingTimeoutInterval:5];
NSLog(@"Inisialisasi SDK HTTPDNS selesai!");
return YES;
}2.2 Konfigurasikan klien OSS
OSS iOS SDK tersedia dalam versi Objective-C dan Swift (V2). Meskipun API tidak identik, prinsip integrasi HTTPDNS sama untuk kedua versi. Topik ini menggunakan versi Objective-C sebagai contoh.
#import <AliyunOSSiOS/AliyunOSSiOS.h>
#import <AlicloudHttpDNS/AlicloudHttpDNS.h>
#import "EMASLocalHttpProxy.h"
// 1. Konfigurasikan resolver DNS.
[EMASLocalHttpProxy setDNSResolverBlock:^NSArray<NSString *> * _Nullable(NSString * _Nonnull hostname) {
HttpDnsService *httpdns = [HttpDnsService sharedInstance];
HttpdnsResult *result = [httpdns resolveHostSync:hostname byIpType:HttpdnsQueryIPTypeBoth];
if (result && (result.hasIpv4Address || result.hasIpv6Address)) {
NSMutableArray<NSString *> *allIPs = [NSMutableArray array];
if (result.hasIpv4Address) [allIPs addObjectsFromArray:result.ips];
if (result.hasIpv6Address) [allIPs addObjectsFromArray:result.ipv6s];
return allIPs;
}
return nil; // Jika resolusi HTTPDNS gagal, kembalikan nil untuk fallback ke DNS sistem.
}];
// 2. Mulai layanan proxy dan dapatkan port-nya.
UInt16 proxyPort = 0;
if ([EMASLocalHttpProxy isProxyReady]) {
proxyPort = [EMASLocalHttpProxy proxyPort];
}
// 3. Buat konfigurasi klien OSS.
id<OSSCredentialProvider> credentialProvider = [[OSSPlainTextAKSKPairCredentialProvider alloc]
initWithPlainTextAccessKey:@"your-access-key-id" // Ganti dengan ID AccessKey Anda yang sebenarnya.
secretKey:@"your-access-key-secret"]; // Ganti dengan Rahasia AccessKey Anda yang sebenarnya.
OSSClientConfiguration *config = [OSSClientConfiguration new];
NSString *endpoint = @"https://oss-cn-hangzhou.aliyuncs.com";
// 4. Konfigurasikan proxy HTTPDNS.
if (proxyPort > 0) {
config.proxyHost = @"127.0.0.1";
config.proxyPort = @(proxyPort);
}
// 5. Buat klien OSS.
OSSClient *client = [[OSSClient alloc] initWithEndpoint:endpoint
credentialProvider:credentialProvider
clientConfiguration:config];
SDK HTTPDNS dan proxy harus diinisialisasi sebelum menginisialisasi SDK OSS.
3. Ringkasan
Menggabungkan HTTPDNS dengan OSS iOS SDK mencegah pembajakan DNS dan mempercepat transfer file. Kombinasi ini meningkatkan stabilitas dan keamanan akses. Inti dari implementasi ini adalah mengonfigurasi layanan proxy lokal yang mencakup logika resolusi HTTPDNS untuk OSS.
Poin Utama:
Urutan Inisialisasi: SDK HTTPDNS dan proxy lokal harus diinisialisasi sebelum klien OSS.
Penanganan Fallback: setDNSResolverBlock adalah inti dari integrasi HTTPDNS. Jika resolusi HTTPDNS gagal atau tidak mengembalikan hasil, kembalikan nil untuk fallback ke DNS sistem.