

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan SDK iOS yang dihasilkan oleh API Gateway untuk REST API di Objective-C atau Swift
<a name="how-to-generate-sdk-ios"></a>

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](simple-calc-lambda-api.md) 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

**Topics**
+ [Menggunakan SDK iOS (Objective-C) yang dihasilkan untuk memanggil API](#how-to-use-sdk-ios-objc)
+ [Menggunakan SDK iOS (Swift) yang dihasilkan untuk memanggil API](#how-to-generate-sdk-ios-swift)

## Menggunakan SDK iOS (Objective-C) yang dihasilkan untuk memanggil API
<a name="how-to-use-sdk-ios-objc"></a>

Sebelum memulai prosedur berikut, Anda harus menyelesaikan langkah-langkah [Hasilkan SDKs untuk REST APIs di API Gateway](how-to-generate-sdk.md) 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
<a name="use-sdk-ios-objc-install-sdk"></a>

Prosedur berikut menjelaskan cara menginstal SDK.

**Untuk menginstal dan menggunakan SDK iOS yang dihasilkan oleh API Gateway di Objective-C**

1. Ekstrak konten file.zip buatan API Gateway yang Anda unduh sebelumnya. Dengan menggunakan [SimpleCalc API](simple-calc-lambda-api.md), Anda mungkin ingin mengganti nama folder SDK yang tidak di-zip menjadi sesuatu seperti. **sdk\$1objc\$1simple\$1calc** Di folder SDK ini ada `README.md` file dan `Podfile` file. `README.md`File berisi instruksi untuk menginstal dan menggunakan SDK. Tutorial ini memberikan rincian tentang instruksi ini. Penginstalan memanfaatkan [CocoaPods](https://cocoapods.org)untuk mengimpor pustaka API Gateway yang diperlukan dan komponen AWS Mobile SDK dependen lainnya. Anda harus memperbarui `Podfile` untuk mengimpor SDKs ke proyek Xcode aplikasi Anda. Folder SDK yang tidak diarsipkan juga berisi `generated-src` folder yang berisi kode sumber SDK yang dihasilkan dari API Anda.

1. Luncurkan Xcode dan buat proyek iOS Objective-C baru. Catat target proyek. Anda harus mengaturnya di`Podfile`.

      
![\[Temukan target di Xcode.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/use-sdk-in-ios-objc-project-find-target.png)

1. Untuk mengimpor AWS Mobile SDK for iOS ke dalam proyek Xcode dengan menggunakan CocoaPods, lakukan hal berikut:

   1. Instal CocoaPods dengan menjalankan perintah berikut di jendela terminal:

      ```
      sudo gem install cocoapods
      pod setup
      ```

   1. 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'
      end
      ```

      dengan nama target proyek Anda: 

      ```
      target 'app_objc_simple_calc' do
          pod 'AWSAPIGateway', '~> 2.4.7'
      end
      ```

      Jika proyek Xcode Anda sudah berisi file bernama`Podfile`, tambahkan baris kode berikut ke dalamnya:

      ```
      pod 'AWSAPIGateway', '~> 2.4.7'
      ```

   1. Buka jendela terminal dan jalankan perintah berikut:

      ```
      pod install
      ```

      Ini menginstal komponen API Gateway dan komponen AWS Mobile SDK dependen lainnya.

   1. Tutup proyek Xcode dan kemudian buka `.xcworkspace` file untuk meluncurkan kembali Xcode.

   1. Tambahkan semua `.m` file `.h` dan file dari `generated-src` direktori SDK yang diekstrak ke proyek Xcode Anda.

         
![\[.h dan.m file ada di src yang dihasilkan\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/use-sdk-in-ios-objc-project-add-sdk-src.png)

   *Untuk mengimpor AWS Mobile SDK for iOS Objective-C ke project Anda dengan mengunduh AWS Mobile SDK secara eksplisit atau menggunakan [Carthage](https://github.com/Carthage/Carthage#installing-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
<a name="use-sdk-ios-objc-call-sdk"></a>

Saat Anda membuat SDK dengan awalan `SIMPLE_CALC` untuk [SimpleCalc API](simple-calc-lambda-api.md) 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` dan`SIMPLE_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 adalah `SIMPLE_CALCResult` tipe jika `Result` model ditambahkan ke respons metode. Jika tidak, properti adalah `NSDictionary` 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**

1. Impor file header kelas klien API untuk membuat kelas klien API dapat dipanggil di aplikasi:

   ```
   #import "SIMPLE_CALCSimpleCalc.h"
   ```

   `#import`Pernyataan itu juga mengimpor `SIMPLE_CALCInput.h` dan `SIMPLE_CALCResult.h` untuk dua kelas model.

1. Buat instance class klien API:

   ```
   SIMPLE_CALCSimpleCalcClient *apiInstance = [SIMPLE_CALCSimpleCalcClient defaultClient];
   ```

   Untuk menggunakan Amazon Cognito dengan API, setel `defaultServiceConfiguration` properti pada `AWSServiceManager` objek default, seperti yang ditunjukkan di bawah ini, sebelum memanggil `defaultClient` 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;
   ```

1. Panggil `GET /?a=1&b=2&op=+` metode untuk melakukan`1+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`.

1. Panggil `POST /` dengan muatan untuk melakukan`1-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`.

1. Panggil `GET /{a}/{b}/{op}` untuk melakukan`1/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](simple-calc-nodejs-lambda-function.md) di backend tidak menangani variabel jalur yang dikodekan URL.

## Menggunakan SDK iOS (Swift) yang dihasilkan untuk memanggil API
<a name="how-to-generate-sdk-ios-swift"></a>

Sebelum memulai prosedur berikut, Anda harus menyelesaikan langkah-langkah [Hasilkan SDKs untuk REST APIs di API Gateway](how-to-generate-sdk.md) untuk iOS di Swift dan mengunduh file.zip dari SDK yang dihasilkan.

**Topics**
+ [Instal SDK AWS seluler dan SDK yang dihasilkan API Gateway dalam proyek Swift](#use-sdk-ios-swift-install-sdk)
+ [Memanggil metode API melalui SDK iOS yang dihasilkan oleh API Gateway dalam proyek Swift](#use-sdk-ios-swift-call-api)

### Instal SDK AWS seluler dan SDK yang dihasilkan API Gateway dalam proyek Swift
<a name="use-sdk-ios-swift-install-sdk"></a>

Prosedur berikut menjelaskan cara menginstal SDK.

**Untuk menginstal dan menggunakan SDK iOS yang dihasilkan oleh API Gateway di Swift**

1. Ekstrak konten file.zip buatan API Gateway yang Anda unduh sebelumnya. Dengan menggunakan [SimpleCalc API](simple-calc-lambda-api.md), Anda mungkin ingin mengganti nama folder SDK yang tidak di-zip menjadi sesuatu seperti. **sdk\$1swift\$1simple\$1calc** Di folder SDK ini ada `README.md` file dan `Podfile` file. `README.md`File berisi instruksi untuk menginstal dan menggunakan SDK. Tutorial ini memberikan rincian tentang instruksi ini. Penginstalan memanfaatkan [CocoaPods](https://cocoapods.org)untuk mengimpor komponen AWS Mobile SDK yang diperlukan. Anda harus memperbarui `Podfile` untuk mengimpor SDKs ke proyek Xcode aplikasi Swift Anda. Folder SDK yang tidak diarsipkan juga berisi `generated-src` folder yang berisi kode sumber SDK yang dihasilkan dari API Anda.

1. Luncurkan Xcode dan buat proyek iOS Swift baru. Catat target proyek. Anda harus mengaturnya di`Podfile`.

      
![\[Temukan target di Xcode.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-find-target.png)

1. Untuk mengimpor komponen AWS Mobile SDK yang diperlukan ke dalam proyek Xcode dengan menggunakan CocoaPods, lakukan hal berikut:

   1. Jika tidak diinstal, instal CocoaPods dengan menjalankan perintah berikut di jendela terminal:

      ```
      sudo gem install cocoapods
      pod setup
      ```

   1. 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'
      end
      ```

      dengan nama target proyek Anda seperti yang ditunjukkan: 

      ```
      target 'app_swift_simple_calc' do
          pod 'AWSAPIGateway', '~> 2.4.7'
      end
      ```

      Jika proyek Xcode Anda sudah berisi a `Podfile` dengan target yang benar, Anda cukup menambahkan baris kode berikut ke `do ... end` loop:

      ```
      pod 'AWSAPIGateway', '~> 2.4.7'
      ```

   1. 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.

   1. Tutup proyek Xcode dan kemudian buka `*.xcworkspace` file untuk meluncurkan kembali Xcode.

   1. Tambahkan semua file header SDK (`.h`) dan file kode sumber Swift (`.swift`) dari `generated-src` direktori yang diekstrak ke proyek Xcode Anda.

         
![\[.h dan.swift ada di src yang dihasilkan\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-add-sdk-src.png)

   1. **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:** 

         
![\[Atur jalur file Bridging_Header.h di bawah Swift Compiler - General.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-set-bridging-header.png)
**Tip**  
Anda dapat mengetik **bridging** di kotak pencarian Xcode untuk menemukan properti **Objective-C** Bridging Header.

   1. 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:

         
![\[Setel properti Legacy Swift Language Version ke Ya.\]](http://docs.aws.amazon.com/id_id/apigateway/latest/developerguide/images/use-sdk-in-ios-swift-project-set-legacy-swift-version.png)

   Untuk mengimpor SDK AWS Seluler untuk iOS di Swift ke proyek Anda dengan mengunduh AWS SDK Seluler secara eksplisit atau [menggunakan](https://github.com/Carthage/Carthage#installing-carthage) 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
<a name="use-sdk-ios-swift-call-api"></a>

Saat Anda membuat SDK dengan awalan untuk [SimpleCalc API](simple-calc-lambda-api.md) 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` dan`SIMPLE_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 adalah `SIMPLE_CALCResult` tipe jika `Result` model ditambahkan ke respons metode. Kalau tidak, itu adalah `NSDictionary` 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**

1. 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
   ```

1. Panggil `GET /?a=1&b=2&op=+` metode untuk melakukan`1+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`.

1. Panggil `POST /` dengan muatan untuk melakukan`1-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`.

1. Panggil `GET /{a}/{b}/{op}` untuk melakukan`1/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](simple-calc-nodejs-lambda-function.md) di backend tidak menangani variabel jalur yang dikodekan URL.