기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
API를 호출하기 위해 생성된 iOS SDK(Swift) 사용
다음 절차를 시작하기 전에 Swift에서 iOS에 대한 API Gateway 콘솔을 사용하여 API용 SDK 생성의 단계를 완료하고 생성된 SDK에 대한 .zip 파일을 다운로드해야 합니다.
주제
AWS Mobile SDK 및 API Gateway 생성 SDK를 Swift 프로젝트에 설치
다음 절차에서는 SDK를 설치하는 방법을 설명합니다.
Swift에서 API Gateway가 생성한 iOS SDK를 설치하고 사용하려면
-
앞서 다운로드한 API Gateway가 생성한 .zip 파일의 압축을 풉니다. SimpleCalc API를 사용하여 압축 해제된 SDK 폴더의 이름을
sdk_swift_simple_calc
등으로 바꿉니다. 이 SDK 폴더에는README.md
파일과Podfile
파일이 있습니다.README.md
파일에는 SDK를 설치하고 사용하기 위한 지침이 포함되어 있습니다. 이 자습서는 이러한 지침에 대한 세부 정보를 제공합니다. 설치 시 CocoaPods를 활용해 필요한 AWS Mobile SDK 구성 요소를 가져옵니다. Podfile
을 업데이트하여 Swift 앱의 Xcode 프로젝트로 SDK를 가져와야 합니다. 아카이빙을 해제한 SDK 폴더에는 사용자 API에서 생성한 SDK의 소스 코드를 포함하는generated-src
폴더도 포함되어 있습니다. -
Xcode를 시작하고 새로운 iOS Swift 프로젝트를 생성합니다. 프로젝트의 대상을 기록해 둡니다.
Podfile
에 이를 설정해야 합니다. -
CocoaPods를 이용해 필요한 AWS Mobile SDK 구성 요소를 Xcode 프로젝트로 가져오려면 다음과 같이 합니다.
-
CocoaPods가 아직 설치되어 있지 않은 경우 터미널 창에 다음 명령을 실행하여 설치합니다.
sudo gem install cocoapods pod setup
-
압축을 푼 SDK 폴더에서
Podfile
파일을 복사하여 Xcode 프로젝트 파일을 포함하는 동일 디렉터리에 추가합니다. 다음 블록:target '
<YourXcodeTarget>
' do pod 'AWSAPIGateway', '~> 2.4.7' end프로젝트 대상 이름은 다음과 같습니다.
target '
app_swift_simple_calc
' do pod 'AWSAPIGateway', '~> 2.4.7' endXcode 프로젝트에 이미 올바른 대상의
Podfile
이 있는 경우, 다음 코드 줄을do ... end
루프에 추가하기만 하면 됩니다.pod 'AWSAPIGateway', '~> 2.4.7'
-
터미널 창을 열고 앱 디렉터리에서 다음 명령을 실행합니다.
pod install
그러면 앱의 프로젝트에 API Gateway 구성 요소와 종속 AWS Mobile SDK 구성 요소가 설치됩니다.
-
Xcode 프로젝트를 닫은 후
*.xcworkspace
파일을 열어 Xcode를 다시 시작합니다. -
추출한
.h
디렉터리에서 SDK의 모든 헤더 파일(.swift
) 및 Swift 소스 코드 파일(generated-src
)을 Xcode 프로젝트에 추가합니다. -
Swift 코드 프로젝트에서 AWS Mobile SDK의 Objective-C 라이브러리 호출을 활성화하려면 Xcode 프로젝트 구성의 Swift Compiler - General 설정에서 Objective-C Bridging Header 속성에
Bridging_Header.h
파일 경로를 설정합니다.작은 정보
Xcode의 검색 상자에
bridging
을 입력하여 Objective-C Bridging Header 속성을 찾을 수 있습니다. -
Xcode 프로젝트를 구축하여 적절하게 구성되어 있는지 확인한 후 다음 단계로 진행합니다. Xcode가 AWS Mobile SDK에 지원되는 Swift보다 최신 버전을 사용하는 경우, Swift 컴파일러 오류를 받게 됩니다. 이 경우 Swift Compiler - Version 설정에서 Use Legacy Swift Language Version 속성을 예로 설정합니다.
AWS Mobile SDK를 명시적으로 다운로드하거나 Carthage
를 이용해 Swift에서 AWS Mobile SDK for iOS를 프로젝트로 가져오려면 SDK 패키지와 함께 제공된 README.md
파일의 지침을 따릅니다. 이러한 옵션 중 하나만 사용하여 AWS Mobile SDK를 가져와야 합니다. -
Swift 프로젝트에서 API Gateway가 생성한 iOS SDK를 통해 API 메서드 호출
API 요청 및 응답의 입력(Input
) 및 출력(Result
)을 설명하는 두 가지 모델을 사용하여 이 SimpleCalc API에 대한 SIMPLE_CALC
접두사를 사용하여 SDK를 생성한 경우 SDK에서 결과 API 클라이언트 클래스는 SIMPLE_CALCSimpleCalcClient
가 되고 해당 데이터 클래스는 각각 SIMPLE_CALCInput
및 SIMPLE_CALCResult
입니다. API 요청 및 응답은 SDK 메서드에 다음과 같이 매핑됩니다.
-
다음의 API 요청이
GET /?a=...&b=...&op=...
다음의 SDK 메서드가 됩니다.
public func rootGet(op: String?, a: String?, b: String?) -> AWSTask
AWSTask.result
모델이 메서드 응답에 추가된 경우SIMPLE_CALCResult
속성은Result
유형입니다. 그렇지 않으면NSDictionary
유형입니다. -
다음의 이 API 요청이
POST / { "a": "Number", "b": "Number", "op": "String" }
다음의 SDK 메서드가 됩니다.
public func rootPost(body: SIMPLE_CALCInput) -> AWSTask
-
다음의 API 요청이
GET /{a}/{b}/{op}
다음의 SDK 메서드가 됩니다.
public func aBOpGet(a: String, b: String, op: String) -> AWSTask
다음 절차에서는 Swift 앱 소스 코드에서 API 메서드를 호출하는 방법(예: viewDidLoad()
파일에서 ViewController.m
위임자의 일부로 호출)을 설명합니다.
API Gateway가 생성한 iOS SDK를 통해 API를 호출하려면
-
API 클라이언트 클래스 인스턴스화:
let client = SIMPLE_CALCSimpleCalcClient.default()
API를 통해 Amazon Cognito를 사용하려면 (다음과 같이) 기본 AWS 서비스 구성을 설정한 후, (이전과 같이)
default
메서드를 가져옵니다.let credentialsProvider = AWSCognitoCredentialsProvider(regionType:
AWSRegionType.USEast1
, identityPoolId: "my_pool_id
") let configuration = AWSServiceConfiguration(region:AWSRegionType.USEast1
, credentialsProvider: credentialsProvider) AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration -
GET /?a=1&b=2&op=+
메서드를 호출하여1+2
를 수행합니다.client.rootGet("+", a: "1", b:"2").continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }
헬퍼 함수
self.showResult(task)
가 콘솔에 결과나 오류를 인쇄합니다. 예: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)") } } }
생산 앱에서 텍스트 필드에 결과나 오류를 표시할 수 있습니다. 표시되는 결과는
1 + 2 = 3
입니다. -
페이로드와 함께
POST /
메서드를 호출하여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 }
표시되는 결과는
1 - 2 = -1
입니다. -
GET /{a}/{b}/{op}
를 호출하여1/2
를 수행합니다.client.aBOpGet("1", b:"2", op:"div").continueWithBlock {(task: AWSTask) -> AnyObject? in self.showResult(task) return nil }
표시되는 결과는
1 div 2 = 0.5
입니다. 여기서div
자리에/
가 사용되는데, 이유는 백엔드의 간단한 Lambda 함수가 URL로 인코딩된 경로 변수를 처리하지 않기 때문입니다.