이 글은 엠바카데로의 David I 블로그 글을 인용 및 참고해 작성한 글입니다. 자세한 내용은 원글을 통해서 확인하시기 바랍니다.

http://community.embarcadero.com/blogs/entry/how-to-use-custom-info-plist-xml-to-support-ios-9-s-new-app-transport-security-feature

iOS9의 App Transport Security 예외 허용하기

iOS9에서 애플은 내부적으로 HTTP 프로토콜 요청하는 응용프로그램을 제한하는 새로운 "App Transport Security" 기능을 추가했습니다. 

 

App Transport Security

“App Transport Security is a feature that improves the security of connections between an app and web services. The feature consists of default connection requirements that conform to best practices for secure connections. Apps can override this default behavior and turn off transport security. Transport security is available in iOS 9.0 or later, and in OS X v10.11 and later.”

 

간단하게 요약하면 iOS9 부터는 HTTP(암호화 되지 않은 통신)에 대해서 OS 단에서 제한을 한다는 내용입니다.

 

즉 RAD Studio로 TWebBrowser, AppAnalytics, Indy Http 등으로 HTTP(HTTPS가 아닌)를 호출할 경우 이상 동작할 수 있습니다.

 

애플에서는 Info.plist를 설정해 앱에서 HTTP를 사용할 수 있도록 허용합니다. 

이 글에서는 RAD Studio에서 Info.plist 옵션을 설정하는 방법과 RAD Studio 10 시애틀 샘플소스코드 프로젝트에 대한 링크를 제공합니다.

❑ Info.plist 편집 방법

 

Info.plist 파일은 프로젝트를 빌드 할때마다 다시 생성됩니다. 그렇기 때문에 Info.plist 파일을 직접 편집하기 위해서는 예를들어 프로젝트의 디렉토리와 같은 위치에 Info.plist 파일을 복사 후 복사한 파일을 편집해야 합니다.

(Info.plist 파일은 iOS Device - 32 bit / 64 bit로 타겟 선택 후 프로젝트를 빌드하면 프로젝트 저장 경로의 하위에 생성됩니다.

예> \iOSDevice32\Debug\Project1.Info.plist)

 

복사 후 편집한 Info.plist 파일은 Project > Deployement 기능을 통해 별도로 배포해야합니다.

(이 과정은 이 글의 후반부에 다시 안내합니다.)

❑ App Transport Security 옵션 설정

옵션1. "App Transport Security" 비활성화

 <key>NSAppTransportSecurity</key>
 <dict> 
  <key>NSAllowsArbitraryLoads</key><true/> 
 </dict>
Info.plist 파일의 제일 마지막으로 이동 후 </dict> 태그 바로 위에 위의 코드를 추가합니다.
 
이 방법은 TWebBrowser, Indy HTTP 등의 컴포넌트를 사용하는 경우 앱에서 사용하는 모든 HTTP 통신에 대해 App Transport Security 기능을 해제하는 설정입니다.

 

옵션2. 'App Transport Security" 예외 도메인 등록

 
                 <key>NSAppTransportSecurity</key> 
                 <dict> 
                   <key>NSExceptionDomains</key>
                   <dict>
                     <key>appanalytics.embarcadero.com</key>
                     <dict>
                       <key>NSExceptionAllowsInsecureHTTPLoads</key><true/>
                     </dict>
                   </dict>
                 </dict> 

Info.plist 파일의 제일 마지막으로 이동 후 </dict> 태그 바로 위에 위의 코드를 추가합니다.

 

이 방법은 특정 도메인(appanalytics.embarcadero.com)으로 접속하는 연결에 대해 보안이 적용되지 않은 HTTP 통신을 허용하도록 설정하는 방법입니다.

❑ Info.plist 배포 설정

 

앞에서 수정한 Info.plist 파일을 기본 Info.plist를 대신하도록 배포설정해야 합니다. 이 과정은 iOS Device 32 bit와 64 bit 모두에서 진행해야 합니다.(32 비트와 64비트 버전이 약간 다르다는 것을 주의)

배포 관리자(Project > Deployement)로 이동 후 편집한 Info.plist 파일을 추가(Add file)합니다.

 

아래 그림과 같이 기본 Info.plist 파일을 선택 해제합니다.(배포 대상에서 제외)

AppAnalytics_Info.plist_Project_Deployment

위와같이 배포 설정후 앱을 배포하면 변경된 설정의 Info.plist가 배포됩니다.

관련 링크


번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14421
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13058
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15569
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21094
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22324
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17974
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38264
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173773
1223 2020년 5월 GM 업데이트 - 여러분의 비즈니스에 길을 열어주세요! 관리자 2020.05.26 315
1222 델파이 안드로이드 개발을 위해 OpenJDK 채택 file 김원경 2020.05.25 888
1221 엠바카데로 오픈 소스 프로젝트 관리자 2020.05.25 699
1220 [10.4 시드니 신기능] 겟잇 패키지 매니저(GetIt Package Manager) 개선 험프리 2020.05.21 593
1219 [10.4 시드니 신기능] 컨트롤 개별 VCL 스타일 적용(Per-Control Style) 적용 험프리 2020.05.19 918
1218 [10.4 시드니 신기능] 새로운 VCL TEdgeBrowser 컴포넌트 험프리 2020.05.18 22880
1217 [10.4] 커스텀 매니지드 레코드(Custom Managed Records) 험프리 2020.05.14 1108
1216 [고객 사례- 솔루션, 델파이] Beyond Compare - 데이터, 시스템 비교/병합/관리 프로그램 관리자 2020.05.14 741
1215 델파이, 25년의 혁신 - 버전 1부터 10.3까지 버전별 핵심 기능 [2] 관리자 2020.05.12 2568
1214 [고객 사례- 솔루션, 델파이] AlignMix - 시각화된 세일즈 관리 도구 관리자 2020.05.12 364
1213 [10.4 시드니 신기능] 다시 태어난 '코드 인사이트' [2] file 험프리 2020.05.08 1662
1212 [발표자료] 20200429 델파이 Push 메시지 전송 시스템 구현 방법 with 구글 Firebase [3] file 관리자 2020.05.04 1020
1211 헬스케어 분야에서의 델파이 - 코로나에 맞서며 file 김원경 2020.04.29 604
1210 [고객 사례- 의료, 델파이] COVID-19 격리 대상자 상태 관리 앱 관리자 2020.04.28 643
1209 이 달의 기술자료 - 2020년 05월 file 험프리 2020.04.24 349
1208 [사례 소개] 데브기어 마이그레이션 유상 컨설팅 사례 험프리 2020.04.22 529
1207 인터베이스와 FireDac에서 배열필드 사용하기 file 김원경 2020.04.16 406
1206 인터베이스, FireDAC 및 TEMSDataSetResource를 사용하여 RAD 서버에서 자동 증가 필드를 생성하는 방법 file 김원경 2020.04.16 409
1205 델파이용 벡터 컨테이너 file 김원경 2020.04.14 752
1204 [프로그래밍 애피타이저] 개발이 처음이거나 비 전공자 분들을 위한 가장 첫 번째 STEP! 관리자 2020.04.13 2449