Sense categoria

(작성중)swift 에서 alamofire 를 사용해보자 (example with GCP vision API)

먼저 글을 시작하기전에

필자도 글을 다 적고나서야 알았지만 사실 GCP vision API 전용 라이브러리가 ios용으로 만들어져있다. (젠장) 이후 누군가 vision api 에 어그로 끌려서 온거라면 차라리 저 라이브러리를 사용하는걸 권장한다.

Alamofire 란?

alamofire 은 IOS,MAC을 위한 SWIFT용 http 라이브러리이다.
대부분의 어플리케이션에 alamofire가 사용되고, apple 의 Foundation networking 기반으로 인터페이스를 제공한다.

alamofire는 request/response 메소드를 체이닝(chaining) 해서 사용할수있고, json 파라미터, 인증 외에도 다양한 기능을 지원한다.

스위프트에서 네트워크 (http) 관련 처리는 여간 귀찮은것도 아니고, 잘못 사용하면 코드가 굉장히 길어지기때문에 대부분 alamofire 를 사용한다.

??? : 알라모파이어 라고 발음하면되는거 맞죠?

How To Use?

alamofire 를 사용하기 위해서는 pods 를 사용해서 설치해야되는데, 먼저 pods 가 없다면 pods 를 설치해보자.

pods 설치하기

  1. 터미널을 켠다
  2. sudo gem install cocoapods를 입력한다
  3. 프로젝트 경로로 가서 pod init을 입력한다.
  4. PROFIT!

이제 Alomofire를 설치해보자

Alamofire install

  1. 프로젝트 경로에서 nano podfile 을 입력하여 podfile을 편집한다.
  2. use_frameworks! 밑에 pod 'Alamofire' 를 입력한다. (앞에 대문자 넣어야된다.)
  3. pod install --repo-update을 해당 경로에 있는 터미널에 입력한다

와! 드디어 당신은 프로젝트에 alamofire를 설치했다.

지금 이 부분까지 읽고있다면 왜 이렇게 기초부터 이야기하는지 의문이 들수도있지만 사실 이건 필자의 거의 첫 ios 프로젝트이다. 그런고로 내가 하는 과정을 하나하나 기록하는데 의미가 있는거라 그냥 재미없으면 넘기면된다.

pod install 까지 했다면, ~~.xcworkspace 파일이 하나 생겼을 것이다. 이제부터는 이 파일을 xcode로 열어 코딩을 하자. (pods가 적용된 파일)

GCP Vision API

이제 Vision API 문서를 보자.링크

잡다한게 많이보인다. 우리가 사용할 기능은 annotate 이다.

https://vision.googleapis.com/v1/images:annotate
대략 이쪽으로 POST 로 이미지를 보내면

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
"responses": [
{
"labelAnnotations": [
{
"mid": "/m/0bt9lr",
"description": "dog",
"score": 0.97346616
},
{
"mid": "/m/09686",
"description": "vertebrate",
"score": 0.85700572
},
{
"mid": "/m/01pm38",
"description": "clumber spaniel",
"score": 0.84881884
},
{
"mid": "/m/04rky",
"description": "mammal",
"score": 0.847575
},
{
"mid": "/m/02wbgd",
"description": "english cocker spaniel",
"score": 0.75829375
}
]
}
]
}

이런식으로 아웃풋이 나온다.

gcp쪽으로 이미지를 날리는 방법은 3가지가 있는데,

  1. 공개 url을 사용해서 넘긴다
  2. base64로 넘긴다
  3. Google Cloud Storage URI 로 넘긴다

우리는 2번을 사용할 예정이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"requests":[
{
"image":{
"content":"<BASE64 처리 된 이미지 파일>"
},
"features":[
{
"type":"LABEL_DETECTION",
"maxResults":1
}
]
}
]
}

이런 형태로 넘기고, 날리는 URL에 GCP 토큰을 넣어서 날리면 될것같다.

이제 슬슬 개발해보자!

UI 만들기

사실 나는 디자이너가 아니다. 고로 디자인을 못한다.
그래도 어쩔수없잖나. 고로 뚝딱 ui를 만들어보자.

image

굉장히 직관적인 UI가 아닌가. 이건 누가봐도 무슨기능인지 알수있을것같다.

Compartir