As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usar o SDK do iOS (Swift) gerado para chamar a API
Antes de iniciar o procedimento a seguir, você deve concluir as etapas em Gerar SDKs para uma API usando o console do API Gateway para o iOS no Swift e fazer download do arquivo .zip do SDK gerado.
Tópicos
Instalar o SDK móvel da AWS e o SDK gerado pelo API Gateway em um projeto Swift
O procedimento a seguir descreve como instalar o SDK.
Para instalar e usar um SDK do iOS gerado pelo API Gateway no Swift
-
Extraia o conteúdo do arquivo .zip gerado pelo API Gateway que você baixou anteriormente. Usando a API SimpleCalc, você pode querer renomear a pasta do SDK descompactada para algo como
sdk_swift_simple_calc
. Nesta pasta do SDK, há um arquivoREADME.md
file e um arquivoPodfile
. O arquivoREADME.md
contém as instruções para instalar e usar o SDK. Este tutorial fornece detalhes sobre essas instruções. A instalação utiliza o CocoaPodspara importar os componentes necessários do SDK Móvel da AWS. Você deve atualizar o Podfile
para importar os SDKs para o projeto Xcode rápida do seu aplicativo Swift. A pasta do SDK não arquivada também contém uma pastagenerated-src
, que contém o código-fonte do SDK gerado da sua API. -
Inicie o Xcode e crie um novo projeto Swift do iOS. Anote o destino do projeto. Você precisará defini-lo no
Podfile
. -
Para importar os componentes necessários do SDK Móvel da AWS no projeto Xcode usando o CocoaPods, faça o seguinte:
-
Se o CocoaPods não estiver instalado, instale-o executando o seguinte comando em uma janela de terminal:
sudo gem install cocoapods pod setup
-
Copie o arquivo
Podfile
da pasta do SDK extraído no mesmo diretório que contém seu arquivo de projeto Xcode. Substitua o seguinte bloco:target '
<YourXcodeTarget>
' do pod 'AWSAPIGateway', '~> 2.4.7' endpelo nome de destino do seu projeto, conforme mostrado:
target '
app_swift_simple_calc
' do pod 'AWSAPIGateway', '~> 2.4.7' endSe o seu projeto Xcode já contiver um
Podfile
com o destino correto, basta adicionar a seguinte linha de código ao loopdo ... end
:pod 'AWSAPIGateway', '~> 2.4.7'
-
Abra uma janela de terminal e execute o seguinte comando no diretório do aplicativo:
pod install
Isso instala o componente do API Gateway e quaisquer componentes dependentes do SDK Móvel da AWS no projeto do aplicativo.
-
Feche o projeto Xcode e abra o arquivo
*.xcworkspace
para reiniciar o Xcode. -
Adicione todos os arquivos de cabeçalho do SDK (
.h
) e arquivos de código-fonte Swift (.swift
) do diretório extraídogenerated-src
para seu projeto Xcode. -
Para permitir a chamada de bibliotecas Objective-C do SDK Móvel da AWS a partir do seu projeto de código Swift, defina o caminho do arquivo
Bridging_Header.h
na propriedade Objective-C Bridging Header (Cabeçalho ponte Objective-C), na definição Swift Compiler - General (Compilador Swift - Geral) da configuração do projeto Xcode:dica
Você pode digitar
bridging
na caixa de pesquisa do Xcode para localizar a propriedade Objective-C Bridging Header (Cabeçalho ponte Objective-C). -
Construa o projeto Xcode para verificar se ele está corretamente configurado antes de prosseguir. Se o seu Xcode usar uma versão mais recente do Swift do que a versão com suporte para o SDK Móvel da AWS, você receberá erros do compilador Swift. Nesse caso, defina a propriedade Use Legacy Swift Language Version (Usar versão de linguagem do Swift legado) para Yes (Sim), na configuração Swift Compiler - Version (Compilador Swift - Versão):
Para importar o AWS Mobile SDK for iOS em Swift no seu projeto fazendo download explicitamente do AWS Mobile SDK ou usando o Carthage
, siga as instruções no arquivo README.md
que acompanha o pacote do SDK. Certifique-se de usar apenas uma dessas opções para importar o SDK Móvel da AWS. -
Chamar métodos de API por meio do SDK do iOS gerado pelo API Gateway em um projeto Swift
Quando você gerou o SDK com o prefixo de SIMPLE_CALC
para essa API SimpleCalc com dois modelos para descrever a entrada (Input
) e a saída (Result
) das solicitações e respostas da API, no SDK, a classe de cliente de API resultante torna-se SIMPLE_CALCSimpleCalcClient
e as classes de dados correspondentes são SIMPLE_CALCInput
e SIMPLE_CALCResult
, respectivamente. As solicitações e respostas da API são mapeadas para os métodos do SDK, da seguinte maneira:
-
A solicitação de API de
GET /?a=...&b=...&op=...
torna-se o método SDK de
public func rootGet(op: String?, a: String?, b: String?) -> AWSTask
A propriedade
AWSTask.result
é do tipoSIMPLE_CALCResult
, se o modeloResult
foi adicionado à resposta do método. Caso contrário, ela será do tipoNSDictionary
. -
Essa solicitação de API de
POST / { "a": "Number", "b": "Number", "op": "String" }
torna-se o método SDK de
public func rootPost(body: SIMPLE_CALCInput) -> AWSTask
-
A solicitação de API de
GET /{a}/{b}/{op}
torna-se o método SDK de
public func aBOpGet(a: String, b: String, op: String) -> AWSTask
O procedimento a seguir descreve como chamar os métodos de API no código-fonte do aplicativo Swift; por exemplo, como parte do viewDidLoad()
delegado em um arquivo ViewController.m
.
Como chamar a API por meio do SDK do iOS gerado pelo API Gateway
-
Instancie a classe de cliente da API:
let client = SIMPLE_CALCSimpleCalcClient.default()
Para usar o Amazon Cognito com a API, defina uma configuração de serviço da AWS padrão (mostrada a seguir) antes de obter o método
default
(mostrado anteriormente):let credentialsProvider = AWSCognitoCredentialsProvider(regionType:
AWSRegionType.USEast1
, identityPoolId: "my_pool_id
") let configuration = AWSServiceConfiguration(region:AWSRegionType.USEast1
, credentialsProvider: credentialsProvider) AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration -
Chame o método
GET /?a=1&b=2&op=+
para realizar1+2
:client.rootGet("+", a: "1", b:"2").continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }
em que a função auxiliar
self.showResult(task)
imprime o resultado ou o erro no console; por exemplo: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)") } } }
Em um aplicativo de produção, você pode exibir o resultado ou erro em um campo de texto. A exibição resultante é
1 + 2 = 3
. -
Chame a carga
POST /
para realizar1-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 }
A exibição resultante é
1 - 2 = -1
. -
Chame
GET /{a}/{b}/{op}
para realizar1/2
:client.aBOpGet("1", b:"2", op:"div").continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }
A exibição resultante é
1 div 2 = 0.5
. Aqui,div
é usado no lugar de/
porque a função do Lambda simples no backend não manuseia variáveis de caminho codificadas por URL.