Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Dalam tutorial ini, kami akan menunjukkan cara menggunakan SDK iOS yang dihasilkan oleh API Gateway untuk REST API di aplikasi Objective-C atau Swift untuk memanggil API yang mendasarinya. Kami akan menggunakan SimpleCalc API sebagai contoh untuk mengilustrasikan topik-topik berikut:
-
Cara menginstal komponen AWS Mobile SDK yang diperlukan ke dalam proyek Xcode Anda
-
Cara membuat objek klien API sebelum memanggil metode API
-
Cara memanggil metode API melalui metode SDK yang sesuai pada objek klien API
-
Cara menyiapkan input metode dan mengurai hasilnya menggunakan kelas model SDK yang sesuai
Topik
Menggunakan SDK iOS (Objective-C) yang dihasilkan untuk memanggil API
Sebelum memulai prosedur berikut, Anda harus menyelesaikan langkah-langkah Hasilkan SDKs untuk REST APIs di API Gateway untuk iOS di Objective-C dan mengunduh file.zip dari SDK yang dihasilkan.
Instal SDK AWS seluler dan SDK iOS yang dihasilkan oleh API Gateway dalam proyek Objective-C
Prosedur berikut menjelaskan cara menginstal SDK.
Untuk menginstal dan menggunakan SDK iOS yang dihasilkan oleh API Gateway di Objective-C
-
Ekstrak konten file.zip buatan API Gateway yang Anda unduh sebelumnya. Dengan menggunakan SimpleCalc API, Anda mungkin ingin mengganti nama folder SDK yang tidak di-zip menjadi sesuatu seperti.
sdk_objc_simple_calc
Di folder SDK ini adaREADME.md
file danPodfile
file.README.md
File berisi instruksi untuk menginstal dan menggunakan SDK. Tutorial ini memberikan rincian tentang instruksi ini. Penginstalan memanfaatkan CocoaPodsuntuk mengimpor pustaka API Gateway yang diperlukan dan komponen AWS Mobile SDK dependen lainnya. Anda harus memperbarui file Podfile
untuk mengimpor SDK ke proyek Xcode aplikasi Anda. Folder SDK yang tidak diarsipkan juga berisigenerated-src
folder yang berisi kode sumber SDK yang dihasilkan dari API Anda. -
Luncurkan Xcode dan buat proyek iOS Objective-C baru. Catat target proyek. Anda harus mengaturnya di
Podfile
. -
Untuk mengimpor AWS Mobile SDK for iOS ke dalam proyek Xcode dengan menggunakan CocoaPods, lakukan hal berikut:
-
Instal CocoaPods dengan menjalankan perintah berikut di jendela terminal:
sudo gem install cocoapods pod setup
-
Salin
Podfile
file dari folder SDK yang diekstrak ke direktori yang sama yang berisi file proyek Xcode Anda. Ganti blok berikut:target '
<YourXcodeTarget>
' do pod 'AWSAPIGateway', '~> 2.4.7' enddengan nama target proyek Anda:
target '
app_objc_simple_calc
' do pod 'AWSAPIGateway', '~> 2.4.7' endJika proyek Xcode Anda sudah berisi file bernama
Podfile
, tambahkan baris kode berikut ke dalamnya:pod 'AWSAPIGateway', '~> 2.4.7'
-
Buka jendela terminal dan jalankan perintah berikut:
pod install
Ini menginstal komponen API Gateway dan komponen AWS Mobile SDK dependen lainnya.
-
Tutup proyek Xcode dan kemudian buka
.xcworkspace
file untuk meluncurkan kembali Xcode. -
Tambahkan semua
.m
file.h
dan file darigenerated-src
direktori SDK yang diekstrak ke dalam proyek Xcode Anda.
Untuk mengimpor AWS Mobile SDK for iOS Objective-C ke project Anda dengan mengunduh AWS Mobile SDK secara eksplisit atau menggunakan Carthage
, ikuti petunjuk dalam file README.md. Pastikan untuk hanya menggunakan salah satu opsi ini untuk mengimpor SDK AWS Seluler. -
Memanggil metode API menggunakan SDK iOS yang dihasilkan oleh API Gateway dalam proyek Objective-C
Saat Anda membuat SDK dengan awalan SIMPLE_CALC
untuk SimpleCalc API ini dengan dua model untuk input (Input
) dan output (Result
) metode, di SDK, kelas klien API yang dihasilkan menjadi SIMPLE_CALCSimpleCalcClient
dan kelas data yang sesuai adalah SIMPLE_CALCInput
danSIMPLE_CALCResult
, masing-masing. Permintaan dan respons API dipetakan ke metode SDK sebagai berikut:
-
Permintaan API dari
GET /?a=...&b=...&op=...
menjadi metode SDK dari
(AWSTask *)rootGet:(NSString *)op a:(NSString *)a b:(NSString *)b
AWSTask.result
Properti adalahSIMPLE_CALCResult
tipe jikaResult
model ditambahkan ke respons metode. Jika tidak, properti adalahNSDictionary
tipe. -
Permintaan API ini dari
POST / { "a": "Number", "b": "Number", "op": "String" }
menjadi metode SDK dari
(AWSTask *)rootPost:(SIMPLE_CALCInput *)body
-
Permintaan API dari
GET /{a}/{b}/{op}
menjadi metode SDK dari
(AWSTask *)aBOpGet:(NSString *)a b:(NSString *)b op:(NSString *)op
Prosedur berikut menjelaskan cara memanggil metode API dalam kode sumber aplikasi Objective-C; misalnya, sebagai bagian dari viewDidLoad
delegasi dalam file. ViewController.m
Untuk memanggil API melalui SDK iOS yang dihasilkan oleh API Gateway
-
Impor file header kelas klien API untuk membuat kelas klien API dapat dipanggil di aplikasi:
#import "SIMPLE_CALCSimpleCalc.h"
#import
Pernyataan itu juga mengimporSIMPLE_CALCInput.h
danSIMPLE_CALCResult.h
untuk dua kelas model. -
Buat instance class klien API:
SIMPLE_CALCSimpleCalcClient *apiInstance = [SIMPLE_CALCSimpleCalcClient defaultClient];
Untuk menggunakan Amazon Cognito dengan API, setel
defaultServiceConfiguration
properti padaAWSServiceManager
objek default, seperti yang ditunjukkan di bawah ini, sebelum memanggildefaultClient
metode untuk membuat objek klien API (ditunjukkan pada contoh sebelumnya):AWSCognitoCredentialsProvider *creds = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:
AWSRegionUSEast1
identityPoolId:your_cognito_pool_id
]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1
credentialsProvider:creds]; AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration; -
Panggil
GET /?a=1&b=2&op=+
metode untuk melakukan1+2
:[[apiInstance rootGet: @"+" a:@"1" b:@"2"] continueWithBlock:^id _Nullable(AWSTask * _Nonnull task) { _textField1.text = [self handleApiResponse:task]; return nil; }];
di mana fungsi pembantu
handleApiResponse:task
memformat hasilnya sebagai string yang akan ditampilkan dalam bidang teks (_textField1
).- (NSString *)handleApiResponse:(AWSTask *)task { if (task.error != nil) { return [NSString stringWithFormat: @"Error: %@", task.error.description]; } else if (task.result != nil && [task.result isKindOfClass:[SIMPLE_CALCResult class]]) { return [NSString stringWithFormat:@"%@ %@ %@ = %@\n",task.result.input.a, task.result.input.op, task.result.input.b, task.result.output.c]; } return nil; }
Tampilan yang dihasilkan adalah
1 + 2 = 3
. -
Panggil
POST /
dengan muatan untuk melakukan1-2
:SIMPLE_CALCInput *input = [[SIMPLE_CALCInput alloc] init]; input.a = [NSNumber numberWithInt:1]; input.b = [NSNumber numberWithInt:2]; input.op = @"-"; [[apiInstance rootPost:input] continueWithBlock:^id _Nullable(AWSTask * _Nonnull task) { _textField2.text = [self handleApiResponse:task]; return nil; }];
Tampilan yang dihasilkan adalah
1 - 2 = -1
. -
Panggil
GET /{a}/{b}/{op}
untuk melakukan1/2
:[[apiInstance aBOpGet:@"1" b:@"2" op:@"div"] continueWithBlock:^id _Nullable(AWSTask * _Nonnull task) { _textField3.text = [self handleApiResponse:task]; return nil; }];
Tampilan yang dihasilkan adalah
1 div 2 = 0.5
. Di sini,div
digunakan sebagai pengganti/
karena fungsi Lambda sederhana di backend tidak menangani variabel jalur yang dikodekan URL.
Menggunakan SDK iOS (Swift) yang dihasilkan untuk memanggil API
Sebelum memulai prosedur berikut, Anda harus menyelesaikan langkah-langkah Hasilkan SDKs untuk REST APIs di API Gateway untuk iOS di Swift dan mengunduh file.zip dari SDK yang dihasilkan.
Topik
Instal SDK AWS seluler dan SDK yang dihasilkan API Gateway dalam proyek Swift
Prosedur berikut menjelaskan cara menginstal SDK.
Untuk menginstal dan menggunakan SDK iOS yang dihasilkan oleh API Gateway di Swift
-
Ekstrak konten file.zip buatan API Gateway yang Anda unduh sebelumnya. Dengan menggunakan SimpleCalc API, Anda mungkin ingin mengganti nama folder SDK yang tidak di-zip menjadi sesuatu seperti.
sdk_swift_simple_calc
Di folder SDK ini adaREADME.md
file danPodfile
file.README.md
File berisi instruksi untuk menginstal dan menggunakan SDK. Tutorial ini memberikan rincian tentang instruksi ini. Penginstalan memanfaatkan CocoaPodsuntuk mengimpor komponen AWS Mobile SDK yang diperlukan. Anda harus memperbarui Podfile
untuk mengimpor SDK ke proyek Xcode aplikasi Swift Anda. Folder SDK yang tidak diarsipkan juga berisigenerated-src
folder yang berisi kode sumber SDK yang dihasilkan dari API Anda. -
Luncurkan Xcode dan buat proyek iOS Swift baru. Catat target proyek. Anda harus mengaturnya di
Podfile
. -
Untuk mengimpor komponen AWS Mobile SDK yang diperlukan ke dalam proyek Xcode dengan menggunakan CocoaPods, lakukan hal berikut:
-
Jika tidak diinstal, instal CocoaPods dengan menjalankan perintah berikut di jendela terminal:
sudo gem install cocoapods pod setup
-
Salin
Podfile
file dari folder SDK yang diekstrak ke direktori yang sama yang berisi file proyek Xcode Anda. Ganti blok berikut:target '
<YourXcodeTarget>
' do pod 'AWSAPIGateway', '~> 2.4.7' enddengan nama target proyek Anda seperti yang ditunjukkan:
target '
app_swift_simple_calc
' do pod 'AWSAPIGateway', '~> 2.4.7' endJika proyek Xcode Anda sudah berisi a
Podfile
dengan target yang benar, Anda cukup menambahkan baris kode berikut kedo ... end
loop:pod 'AWSAPIGateway', '~> 2.4.7'
-
Buka jendela terminal dan jalankan perintah berikut di direktori aplikasi:
pod install
Ini menginstal komponen API Gateway dan komponen AWS Mobile SDK dependen apa pun ke dalam proyek aplikasi.
-
Tutup proyek Xcode dan kemudian buka
*.xcworkspace
file untuk meluncurkan kembali Xcode. -
Tambahkan semua file header SDK (
.h
) dan file kode sumber Swift (.swift
) darigenerated-src
direktori yang diekstrak ke proyek Xcode Anda. -
Untuk mengaktifkan pemanggilan pustaka Objective-C dari AWS Mobile SDK dari proyek kode Swift Anda, setel path
Bridging_Header.h
file pada properti Objective-C Bridging Header di bawah Swift Compiler - Pengaturan umum konfigurasi proyek Xcode Anda:Tip
Anda dapat mengetik
bridging
di kotak pencarian Xcode untuk menemukan properti Objective-C Bridging Header. -
Bangun proyek Xcode untuk memverifikasi bahwa itu dikonfigurasi dengan benar sebelum melanjutkan lebih jauh. Jika Xcode Anda menggunakan versi Swift yang lebih baru daripada yang didukung untuk AWS Mobile SDK, Anda akan mendapatkan kesalahan kompiler Swift. Dalam hal ini, setel properti Use Legacy Swift Language Version ke Ya di bawah pengaturan Swift Compiler - Version:
Untuk mengimpor SDK AWS Seluler untuk iOS di Swift ke proyek Anda dengan mengunduh AWS SDK Seluler secara eksplisit atau menggunakan
Carthage, ikuti petunjuk dalam README.md
file yang disertakan dengan paket SDK. Pastikan untuk hanya menggunakan salah satu opsi ini untuk mengimpor SDK AWS Seluler. -
Memanggil metode API melalui SDK iOS yang dihasilkan oleh API Gateway dalam proyek Swift
Saat Anda membuat SDK dengan awalan untuk SimpleCalc API ini dengan dua model SIMPLE_CALC
untuk mendeskripsikan input (Input
) dan output (Result
) permintaan dan respons API, di SDK, kelas klien API yang dihasilkan menjadi SIMPLE_CALCSimpleCalcClient
dan kelas data yang sesuai adalah SIMPLE_CALCInput
danSIMPLE_CALCResult
, masing-masing. Permintaan dan respons API dipetakan ke metode SDK sebagai berikut:
-
Permintaan API dari
GET /?a=...&b=...&op=...
menjadi metode SDK dari
public func rootGet(op: String?, a: String?, b: String?) -> AWSTask
AWSTask.result
Properti adalahSIMPLE_CALCResult
tipe jikaResult
model ditambahkan ke respons metode. Kalau tidak, itu adalahNSDictionary
tipe. -
Permintaan API ini dari
POST / { "a": "Number", "b": "Number", "op": "String" }
menjadi metode SDK dari
public func rootPost(body: SIMPLE_CALCInput) -> AWSTask
-
Permintaan API dari
GET /{a}/{b}/{op}
menjadi metode SDK dari
public func aBOpGet(a: String, b: String, op: String) -> AWSTask
Prosedur berikut menjelaskan cara memanggil metode API dalam kode sumber aplikasi Swift; misalnya, sebagai bagian dari viewDidLoad()
delegasi dalam file. ViewController.m
Untuk memanggil API melalui SDK iOS yang dihasilkan oleh API Gateway
-
Buat instance class klien API:
let client = SIMPLE_CALCSimpleCalcClient.default()
Untuk menggunakan Amazon Cognito dengan API, tetapkan konfigurasi AWS layanan default (ditampilkan berikut) sebelum mendapatkan
default
metode (ditampilkan sebelumnya):let credentialsProvider = AWSCognitoCredentialsProvider(regionType:
AWSRegionType.USEast1
, identityPoolId: "my_pool_id
") let configuration = AWSServiceConfiguration(region:AWSRegionType.USEast1
, credentialsProvider: credentialsProvider) AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration -
Panggil
GET /?a=1&b=2&op=+
metode untuk melakukan1+2
:client.rootGet("+", a: "1", b:"2").continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }
di mana fungsi pembantu
self.showResult(task)
mencetak hasil atau kesalahan ke konsol; misalnya:func showResult(task: AWSTask) { if let error = task.error { print("Error: \(error)") } else if let result = task.result { if result is SIMPLE_CALCResult { let res = result as! SIMPLE_CALCResult print(String(format:"%@ %@ %@ = %@", res.input!.a!, res.input!.op!, res.input!.b!, res.output!.c!)) } else if result is NSDictionary { let res = result as! NSDictionary print("NSDictionary: \(res)") } } }
Di aplikasi produksi, Anda dapat menampilkan hasil atau kesalahan di bidang teks. Tampilan yang dihasilkan adalah
1 + 2 = 3
. -
Panggil
POST /
dengan muatan untuk melakukan1-2
:let body = SIMPLE_CALCInput() body.a=1 body.b=2 body.op="-" client.rootPost(body).continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }
Tampilan yang dihasilkan adalah
1 - 2 = -1
. -
Panggil
GET /{a}/{b}/{op}
untuk melakukan1/2
:client.aBOpGet("1", b:"2", op:"div").continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }
Tampilan yang dihasilkan adalah
1 div 2 = 0.5
. Di sini,div
digunakan sebagai pengganti/
karena fungsi Lambda sederhana di backend tidak menangani variabel jalur yang dikodekan URL.