【swift5】API를 두드릴 때는 「HTTP」를 「HTTPS」로 고치자

2876 단어 XcodeiOSSwiftapi
※ 본 기사가 필자의 첫 투고입니다! 부드러운 눈으로 참고 정도로 활용하십시오!

소개



아무것도 생각하지 않고, AlamoFire로 API를 두드리거나 등으로 HTTP 통신을 하면,
「에러가 나온다」라든가 「상정보다 적은 데이터 밖에 취할 수 없다」
문제가 발생합니다.

HTTP 통신은 암호화되지 않은 안전성이 낮은 통신으로 인해
애플이 기본적으로 차단하고 있습니다.

이 상태에서 request를 발행해도, 보안으로 블록 되고 있는 상태이므로,
response는 반환되지 않습니다.
캐치볼하려고 하는데 두 사람 사이에 벽이 있는 것 같습니다.
이것으로는 던져도 상대에게 닿지 않기 때문에 던져 주지 않네요.

벽에 방해받지 않는 형식의 통신으로 변경합시다.

해결책



예를 들어 API를 사용하려고 하면 사이트에 실려 있는 샘플 쿼리를 복사해 보겠습니다.
그렇게 하면 흔히 있는 것이 이하와 같은 URL.
"http://webservice.recruit.co.jp/hotpepper/gourmet/v1/?key=[API 키]&large_area=Z011"

이 디폴트로 문두가 「http://」가 되어 있는 것이 걸려 포인트.
단순히 "http://"를 "https://"로 고쳐 봅시다.

이것으로 벽에 방해받지 않는, 안전성이 높은 통신 형식으로 변경할 수 있었습니다.

그래도 안된다면



API 측이 http 통신 밖에 대응하지 않는 경우가 있습니다.
「https로 고쳐도 안 된다~」라고 때는, 원래의 벽을 제거해 합시다.

①ATS를 무효화한다 (간이판)



아래 URL의 info.plist 편집을 참조하십시오.
【swift】Xcode에서 iOS 앱의 http 통신을 허용하는 방법
Info.plist로 가서 ATS를 비활성화하십시오.

다만, 상기의 방법은 모든 HTTP 통신을 허가하고 있기 때문에, 안전성이 부족합니다.
심사에 제출하면 apple님은 이 방법으로 통과시켜주지 않습니다.

특정 공(도메인)만 벽(ATS)을 통과하도록 합시다.

②특정 도메인만 허가한다 (발전판)



아래 URL을 참조하여 특정 도메인만 허용합니다.
과자 검색 앱: iOS10에서 ATS 설정 정보

이것으로 지정한 볼(도메인)만은 통과할 수 있게 되었습니다.

단지 ATS라는 벽을 마련하고 있는 시점에서, 원래 HTTP 통신을 애플은 추천하고 있지 않다는 것에 유의해 주세요.
2020년 11월 현재에도 심사에 다니는지는 미확인입니다.

끝에



무엇이 빠졌다고, 이것 하지 않아도 「소량이라면 리스폰스가 돌아왔을 때가 있었다」가,
1번의 빠짐&오인 포인트였다.

「무제한으로 데이터를 받고 싶은데, 취득 데이터가 적다」라든지,
「10건 정도의 소량이라면 괜찮지만, 100건이나 다량의 데이터를 받으려고 하면 에러 토한다」
라고 하는 분은 「http 통신이 되어 있지 않은가」, 혹은 「ATS는 어떻게 되어 있는지」를 확인해 보세요.

자신만큼이나 초등학교 씨의 도움이 되면.

참고문헌


  • 【swift】Xcode에서 iOS 앱의 http 통신을 허용하는 방법 | 신졸 엔지니어 개발 일기
  • 과자 검색 앱:iOS10에서의 ATS 설정에 대해|앞으로 만드는 iPhone 앱 개발 입문 Swift로 시작하는 프로그래밍의 첫걸음[Swift3/Xcode8대응]
  • 핫 페퍼 | API 참조 | 모집 웹 서비스
  • 좋은 웹페이지 즐겨찾기