View Controller Programming Guide for iOS, View Controller Basics iPhone

뷰 컨트롤러는 iOS어플리케이션을 구현할 때 필요한 기본적인 구조를 제공한다. 이 챕터에서는 어플리케이션에서 뷰 컨트롤러가 작동하는 규칙을 제공하고 사용자 인터페이스의 다른 형식을 어떻게 구현하는지 설명한다.

뷰 컨트롤러란?

모델-뷰-컨트롤러 디자인 패턴에서 컨트롤러 객체는 사용자에게 데이터를 보여주는 뷰와 어플리케이션 데이터를 연결하는 커스텀 로직을 제공한다. iOS어플리케이션에서 뷰 컨트롤러는 뷰의 집합을 표시하고 관리하는 컨트롤러 객체의 특정형식이다. 뷰 컨트롤러 객체는 UIViewController 클래스의 계승자이며 UIKit프레임워크에서 정의된다.

뷰 컨트롤러는 iOS어플리케이션의 설계와 구현에서 아주 중요한 역할을 담당한다. iOS기반 장치에서 구동되는 어플리케이션은 컨텐트를 보여주는 한정된 크기의 화면 공간을가지므로 어떻게 사용자에게 정보를 보여주어야할지 창의성을 발휘해야 한다. 컨텐트의 상당량을 가진 어플리케이션은 다중 스크린을 넘나드는 컨텐트를 배포하고 다른 시간에 컨텐트의 다른 부분을 보여주고 감춘다. 뷰 컨트롤러 객체는 컨텐트 연계 뷰를 관리하는 구조를 제공하고 이들을 보여주고 가린다.

어플리케이션에서 뷰 컨트롤러를 사용하는 다양한 이유와 사용하지 않아야할 몇가지 이유가 있다. 뷰 컨트롤러는 iOS어플리케이션에서 볼 수 있는 표준 인터페이스의 상당부분을 구현하는데 편하게 해준다. 이들은 필요에 따라 그대로 사용하거나 커스터마이즈하는 기본 작용을 제공한다. 이들은 또한 어플리케이션의 사용자 인터페이스와 컨텐트를 조직하는데 편리한 방법을 제공한다.

그림은 iPhone어플리케이션의 3가지의 다른 화면으로 요리법을 관리한다. 첫 번째 화면은 어플리케이션이 관리하는 요리법을 리스트한다. 요리법중하나를 탭하면 두번째 스클린을 보여주는데 여기서는 요리법의 세부사항을 본다. 요리법의 그림을 탭하면 세번째 화면과 같이 세부 뷰에서 그림을 보여준다. 이들 스크린을 관리하는데는 구별된 뷰 컨트롤러가 있으며 적절한 뷰 객체를 보여주고, 인터렉션에 반응한다.



뷰를 보여주고 관리하는데 스크린에서 스크린으로의 네비게이션을 관리하는 뷰 컨트롤러를 사용할 수 도 있다. iOS에서 새로운 화면을 보여주는 몇가지 표준 기법이 있다. 이들 기법은 뷰 컨트롤러를 사용해 구현하고 이 문서를 통해 다른 관점에서 논의하게 된다.

뷰 컨트롤러 형식

대부분의 iOS어플리케이션은 최소한 하나의 뷰 컨트롤러를 가진다. 뷰 컨트롤러는 어플리케이션에서 다뤄지는데 세가지의 주요 카테고리로 나눠진다.

커스텀 뷰 컨트롤러 는 스크린에서 몇몇 컨텐트를 보여주는 목적으로 정의되는 컨트롤러 객체이다. iOS어플리케이션은 구별된 뷰 집합을 사용하여 각각은 특정방법으로 데이터를 보여주는데 사용된다. 에를 들어, 테이블에서 아이템 리스트를 보여주는 뷰를 가지고 다른 집합은 그 리스트의 단일 아이템의 세부사항을 보여준다. 이런 어플리케이션의 연관 구조는 구별된 뷰 컨트롤러를 생성하고 각 뷰 집합에서 보여주기 위한 것이다.

컨테이너 뷰 컨트롤러는 뷰 컨트롤러 객체의 특정 형식으로서 다른 컨트롤러를 관리하고 이들 사이에서 오고가는 연관관계를 정의한다. 네비게이션, 탭 바, 스플리트 뷰 컨트롤러 모두는  컨테이너 뷰 컨트롤러이다. 컨테이너 뷰는 스스로 정의해서는 안된다. 대신 시스템에서 제공하는 컨테이너 뷰 컨트롤러를 사용토록한다.

알아두기: 팝오버 컨트롤러는 실제 뷰 컨트롤러가 아니고 컨테이너 뷰 컨트롤러와 비슷한 역할을 수행하는 것이다. 그 역할은 팝오버 뷰에서 제공하는 뷰 컨트롤러의 컨텐트를 보여주기 위한 것이다.

모달 뷰 컨트롤러는 다른 뷰 컨트롤러에의해 특정하게 보여지는 뷰 컨트롤러이다. 모달 뷰 컨트롤러는 어플리케이션의 네비게이셔널 연관관계를 정의한다. 모달하게 뷰 컨트롤러를 보여주는 일반적이유는 몇몇 데이터를 입력하도록 할 때 이다. 예를 들어, 폼내에 사용자가 채울수있는 뷰 컨트롤러를 보여주거나 피커 인터페이스로부터 옵션을 선택토록한다.

그림은 UIKit프레임워크에서 가용한 뷰 컨트롤러 클래스로서 뷰 컨트롤러와의 연결에서 사용되는 핵심 클래스에 연계된다. 이들 추가적 클래스는 인터페이스의 특별한 형식을 구현하는 뷰 컨트롤러 객체에의해 내부적으로 사용된다. 예를 들어 UITabBarController 객체는 UITabBar 객체를 관리하는데 이는 탭 바 인터페이스와 연계된 탭을 보여준다.



다음 섹션에서 어플리케이션 컨텐트를 표시하고 조직화하는데 사용할 뷰 컨트롤러의 다른 형식에 대한 자세한 사항을 알 수 있다.

커스텀 뷰 컨트롤러에 대해

커스텀 뷰 컨트롤러는 어플리케이션의 컨텐트를 위치시킨다. 거의 대부분의 어플리케이션이 적어도 하나의 커스텀 뷰 컨트롤러를가지고 복잡한 어플리케이션은 많이 가진다. 커스텀 뷰 컨트롤러는 어플리케이션의 데이터와 데이터를 보여줄 뷰의 부분사이에 만족할 만한 인터렉션에 필요한 로직과 글루 코드를 포함한다. 뷰 컨트롤러는 어플리케이션 델리게이트와 다른 뷰 컨트롤러를 포함한 어플리케이션에서 다른 컨트롤러 객체사이의 인터렉션을 수행한다.

각 커스텀 뷰 컨트롤러 객체는 단일 뷰 계층에서 모든 뷰를 관리한다. 아이폰 어플리케이션에서 뷰 계층내 뷰는 전통적으로 전체 화면을 차지하지만 아이패드 어플리케이션은 화면 일부를 차지한다. 뷰 계층에서 뷰 컨트롤러와 뷰 사이의 일대일 대응은 핵심 설계 요소이다. 같은 뷰 계층의 다른 부분을 관리하는데 다중 커스텀 뷰 컨트롤러를 사용하지 않는 것이 좋다. 비슷하게 다중 스크린을 관리하는데 단일 커스텀 뷰 컨트롤러 객체만 사용하지 않는 것이 좋다.

알아두기: 만약 뷰 계층을 다중 부분 영역으로 나누고 각각을 구별해서 관리하려면 각 부분 영역을 관리하는데 뷰 컨트롤러 객체를 사용하는 대신 일반 컨트롤러 객체를 사용한다. 일반 컨트롤러 객체를 관리하는데 단일 뷰 컨트롤러를 사용한다.

UIViewController 를 직접적으로 서브클래싱함으로서 커스텀 뷰 컨트롤러를 생성하고 서브클래스에 커스텀 코드를 추가한다. 형식적 UIViewController 서브클래스 정의는 다음을 포함한다.

- 연관된 뷰에의해 표시되는 데이터를 포함하는 객체를 가리키는 멤버 변수
- 반드시 상호작용해야하는 뷰 컨트롤러의 핵심 뷰 객체를 가리키는 멤버 변수 (또는 아웃렛)
- 뷰 계층에서 버튼과 같은 컨트롤과 연결해서 수행하는 액션 메소드들
- 뷰 컨트롤러의 커스텀 작용을 구현하는데 필요한 추가적인 메소드들

이를 사용해 커스텀 컨텐트를 운용할 것이므로 뷰 컨트롤러의 이 형식내의 코드의 대부분은 어플리케이션에 특정화된다. 그러나 이들은 또한 모든 컨트롤에서 제공하는 기능이다. 이런 공통 작용에 대해 UIViewController 클래스는 오버라이드할 수 있는 메소드와 원하는 작용을 구현하는데 사용하는 메소드를 정의한다. 뷰 관리를 포함한 공통 작용에는 인터페이스 회전 관리와 저 메모리 주의를 제공한다.

그림은 샘플 프로젝트 BubbleLevel에서의 커스텀 뷰 컨트롤러의 예시를 보여준다. 이 클래스는 장치의 피치에서의 변화를 위한 엑셀로미터 데이터를 탐지하고 그 연계 뷰 객체를 데이터를 사용하여 업데이트한다. 뷰 컨트롤러의 view 속성은 컨텐트를 보여주는 실제 뷰 객체로의 참조를 제공한다.

About Table View Controllers




View Controller Programming Guide for iOS, About View Controllers iPhone


About View Controllers

iOS어플리케이션에서 뷰 컨트롤러는 어플리케이션의 데이터와 그 시각적 외양에 핵심적 연결부분을 제공한다. 어떻게 뷰 컨트롤러를 다룰지는 iOS어플리케이션을 설계하는데 핵심적인 부분이다. 뷰 컨트롤러는 MVC디자인 패러다임의 전통적 컨트롤러 객체지만 더 다양한 역할을 수행한다. iOS어플리케이션에서 뷰 컨트롤러는 기본 어플리케이션 작용을 관리하는데 필요한 논리적인 부분을 담당한다. 예를 들어 뷰 컨트롤러는 스크린의 내용을 보여주고 제거하는 것을 관리하며 장치 오리엔테이션이 변화되면 그에 맞춘다.

At a Glance

뷰 컨트롤러는 어플리케이션을 개발하기 쉽게해주는 것이 목적이다. 이 문서는 모든 뷰 컨트롤러가 제공하는 다양한 기본작용과 어디서 필요에 따라 커스터마이즈할 수 있는지를 보여준다.

View Controllers Manage a View Hierarchy

각 뷰 컨트롤러는 어플리케이션의 사용자 인터페이스를 관리한다. 뷰 컨트롤러는 단일 뷰 객체와 연관되지만 뷰는 종종 많은 뷰 계층에서 루트뷰이고 뷰 컨트롤러에의해 관리된다. 뷰 컨트롤러는 뷰 계층의 중심에 있는 것으로 뷰와 연관된 컨트롤러 또는 데이터 객체간의 교환을 수행한다. 단일 뷰 컨트롤러는 보통 컨텐트의 단일 스크린의 가치에 연계된 뷰를 관리한다.

커스텀 뷰 컨트롤러를 사용하여 컨텐트 관리하기

어플리케이션에서 컨테트를 보여주려면 커스텀 뷰 컨트롤러를 사용한다. 커스텀 뷰 컨트롤러는 UIViewController, UITableViewController를 직접적으로 서브클래싱하고 필요한 메소드를 구현함으로서 수행할 수 있다. 최소한 커스텀 뷰 컨트롤러는 반드시 커스텀 컨텐트와 연계되는 뷰를 관리하고 보여줄 수 있다. 뷰 컨트롤러에 구현이 필요한 것에는 회전, 메모리 관리, 이벤트 핸들링, 어플리케이션의 다른 뷰 컨트롤러와의 상호작용등이 있다.

네비게이션 컨트롤러는 다른 뷰 컨트롤러의 스택을 관리

네비게이션 컨트롤러는 UINavigationController클래스의 인스턴스이다. 구조화된 컨텐트를 담는 어플리케이션은 컨텐트의 다른 레벨 사이를 오가는데 네비게이션 컨트롤러를 사용할 수 있다. 네비게이션 컨트롤러는 그 자체로 하나이상의 커스텀 뷰 컨트롤러를 관리하고 각각은 데이터 계층에서 특정 레벨을 데이터를 관리한다. 네비게이션 컨트롤러는 데이터 계층에서 현 위치를 가늠하고 계층에서 뒤로 돌아가는데 필요한 컨트롤을 제공한다.

탭 바 컨트롤러는 뷰 컨트롤러와 독립적인 집합을 관리

탭 바 컨트롤러는 UITabBarController인스턴스이다. 탭 바 컨트롤러를 통해 다중 구별 인터페이스를 관리하고 이들은 커스텀 뷰와 뷰 컨트롤러로 구성된다. 탭 바 컨트롤러는 탭 바 뷰와의 상호작용을 관리하는데 사용자는 현 인터페이를 탭을 통해 변경할 수 있다.

iPad 는 컨텐트를 위한 특별한 컨테이너를 제공

큰 스크린 사이즈의 아이패드에는 컨텐트를 보여주는 다른 방법도 제공한다. UISplitViewController 클래스는 마스터-디테일 인터페이스를 구현할 수있게 하는 것으로서 인터페이스의 마스터 디테일로 표시한다. 비록 UIPopoverController 클래스는 뷰 컨트롤러가 아니지만 가변적 뷰의 컨텐트를 보여주는 뷰 컨트롤러와 운용된다.

모달 뷰 컨트롤러는 현 웍플로우를 임시적으로 단절

모든 뷰 컨트롤러는 모달로 보여줄 수 있다. 모달 뷰 컨트롤러의 목적은 필요에 따라 현 웍플로우를 단절한다. 예를 들면 설정하거나 사용자로부터 데이터를 얻을 때 사용할 수 있다. 외냐하면 이들은 전체화면에 위치해 보여지는 뷰 컨트롤러는 사용자 상호작용한다.

복합 뷰 컨트롤러는 뷰 컨트롤러의 특정한 형식으로 항상 모달로 보여준다. 복합 뷰 컨트롤러는 시스템에 의해 정의되고 이메일이나 SMS 메시지를 보내는데 사용될 수 있다. iPhone과 iPod touch에서 모달로 보여주며 iPad는 팝오버를 사용할 수도 있다.

뷰 컨트롤러는 만족할만한 레이아웃을 생성하는데 결합 가능

모든 단순한 어플리케이션에서 다중 뷰 컨트롤로가 함께 작용하는 것을 보았을 것이다. 네비게이션, 탭 바, 그리고 스플리트 뷰 컨트롤러는 다른 뷰 컨트롤러와 혼합되어 작동할 수 있다.

요구사항


이 문서를 읽기전 다음 코코아 기본 컨셉을 알아야 한다.
- 어플리케이션 개발 시 Xcode와 인터페이스 빌더간의 기본 정보
- 어떻게 새로운 Objective-C클래스를 정의하는지
- 어떻게 Objective-C에서 객체를 생성하고 릴리즈하지를 포함한 메모리를 관리법
- 어플리케이션 작용을 관리할 때 델리게이트 객체 사용규칙
- 모델 뷰 컨트롤러 패러다임의 기본 이해



App Store Resource Center, Prepare for App Submission iPhone

http://developer.apple.com/appstore/resources/submission/

Get Started with iTunes Connect

아이튠즈 커넥트는 앱 스토어로의 배포를 위한 어플리케이션 전송과 관리를 위한 웹 기반 도구이다. 아이튠즈 커넥트는 계약사항, 세금과 뱅킹 정보, 판매와 금융 보고, 프로모셔널 코드 요청, 사용자, 어플리케이션, 메타데이터, In-App 구매 카탈로그를 관리한다.

Set up user accounts

아이튠즈 커넥트 사용자 계정을 생성하고 편집하는 것으로 사용 규칙과 알림을 지정할 수 있다. 알림은 사용자들이 아이튠즈 커넥트 계정을 고려해 얻을 수 있는 이메일 형식을 지정한다. 여기에는 4가지의 구별된 사용자가 있으며 관리자, 법률, 금융가 그리고 기술자가 있다.

Complete contracts, tax & banking information

일단 사용자 계정을 설정하면 계약, 세금과 뱅킹 모듈을 처리할 수 있다. 이 모듈에서 판매된 어플리케이션 동의서와 앱 판매로부터의 지불과 세금정보를 얻을 수 있다.

Gather information and assets for your application

바이너리와 함께 앱에대한 몇몇 속성을 지정한다. 여기에는 다음과 같은 항목이 포함된다.
- 어플리케이션 이름
- 어플리케이션 설명
- 주, 하부 카테고리
- 부분카테고리
- Copyright
- 앱 랭킹
- 키워드
- SKU Number
- 어플리케이션 URL
- 스크린 샷
- 지원 URL
- 지원 이메일 주소
- 최후 사용자 라이센스 동의
- 가격, 가용 날짜, 테리토리
- 큰 App 아이콘 512 x 512
일러두기: 아이패드 앱에서는 바이너리 내에 작은 아이콘 72x72, 50x50이 필요하다. iOS는 아트워크에서 1픽셀씩을 트림하여 드롭 쉐도우를 넣는다. 아이콘 디자인시 이를 참고토록한다.

Screen shots for iPad applications

아이튠즈 커넥트는 iPad앱 전송에서 다음 크리테리아를 따르는 스크린샷을 포핳ㅁ한다.
- 적어도 다음 픽셀 해상도중 하나
   1024x768, 768x1024, 1004x768, 748x1024
- RGB색상
- 적어도 72 DPI
- .jpg, tif, png형식

Assign a rating to your app

앱 키반한 적절한 레이팅에대한 더욱 자세한 사항들

Assign keywords for your app

App Store Quick Reference: Assigning Keywords For Your App를 통한 어떻게 사용, 할당 편집하는지를 본다.

아이폰 앱 업로드 작업, Step 1/2 - iOS Provisioning Portal iPhone

아이폰 앱 업로드를 위해 필요한 사항

iOS Provisioning Portal 을 통해 수행

http://developer.apple.com/ios/manage/overview/index.action

인증서

- 개발자 인증서 (iPhone Developer)

- 배포 인증서 (iPhone Distribution)

장치

- 장치 (UDID) 업로드 

App ID

- 어플리케이션을 구별하는 고유 ID (reversed-domain name style)

Provisioning Profile

- 장치에서 테스트를 위해 필요한 파일

  개발자 인증서, 앱 아이디, 장치 아이디가 엮여 한 파일로 구성

  장치에 설치하기 위해 만들어진 파일

iTunes Connect 를 통해 수행


iOS Provisioning Portal, Distribution iPhone

Distribution

iOS Provisioning Portal의 배포영여은 인하우스나 애드혹 배포를 통해 전달을 위해 iPhone과 iPod touch 어플리케이션을 전송하는 방법을 배운다. 오직 팀원만이 배포를 위한 준비와 전송을 수행할 수 있다.
앱 스토어에 어플리케이션을 배포하는 방법은 App Store tab을 살펴보라.

Obtaining your iOS Distribution Certificate

iOS어플리케이션을 배포하기위해 팀원은 애플에 iOS 배포 인증서를 생성해야한다. 오직 팀의 팀원만이 이 인증서를 생성할 수 있고 이 인증서가 어플리케이션 전송을 가능토록한다.

- Generating a Certificate Signing Request

iOS Distribution Certificate를 요청하려면 먼저 Mac OS X Leopard에서 키체인 접근을 사용해 Certificate Signing Request (CSR)를 생성해야 한다. CSR생성은 키체인 접근을 통해 iOS 배포 지정자를 얻기위해 public과 private키를 생성한다. private키는 기본적으로 로킨 키체인에 저장되어 키체인 접근 어플리케이션에서 Keys카테고리에서 볼 수 있다. CSR을 생성하려면 다음을 수행한다.
1. 어플리케이션 폴더에서 유틸리티 폴더를 열고 키체인 접근을 실행한다.
2. 환경설정 메뉴에서 Online Certificate Status Protocol (OSCP)와 Certificate Revocation List (CRL)을 끔으로 설정한다.
3. 키체인 접근 -> 인증 지원 -> 인증기관에서 인증서 요청하기 를 선택한다. 일러두기: 이 처리 중에 키체인의 private키가 하이라이트되면 인증서 요청은 프로비져닝 포널에서 허용되지 않는다. 인증기관에서 인증서 요청하기를 선택하며 인증기관에서 <Private Key>와의 인증 요청하기를 선택해서는 안된다.
4. 사용자 이메일 필드에서는 자신의 이메일 주소를 입력한다. 이메일 주소는 iOS Developer로 등록한 정보와 같게 해야 한다.
5. 일반 이름 필드는 회사/조직/부분 이름을 입력한다. 이 이름은 iOS Developer에서 등록한 것으
로 해야 한다.
6. CA 이메일 주소는 필요치 않다.
7. 디스크로 저장을 선택하고 자신이 키페어 정보 지정을 선택한 후 "Continue"를 클릭한다.
8. 자신의 키페어 정보 저장 이 선택되어 있으므로 파일이름을 지정하고 "저장"를 클릭한다. 2048 비트 키사이즈와 RSA알고리즘을 선택한 후 "계속하기"를 클릭한다.
9. 인증기관은 데스크탑에서 CSR파일을 생성한다.

- Submitting a Certificate Signing Request for Approval

CSR을 생성한 후 iOS Provisioning Portal에 로긴하고 "Certificates" -> "Distribution" 으로 이동한 후 "Add Certificate"버튼을 클릭한다.
2. 업로드 파일 버튼을 클릭하여 CSR을 선택하고 "Submit"를 클릭한다. 만약 키 사이즈가 2048비트가 아니면 포탈은 CSR을 거부한다.
3. iOS Distribution Certificate를 승인한다.

- Downloading and Installing iOS Distribution Certificates

1. 포탈의 "Certificates" -> "Distribution" 섹션에서 WWDR Intermediate Certificate 링크를 클릭하고 "Saved Linked File to Downloads"를 선택해 인증서 다운로드를 시작한다. 다운로드 후 키체인 접근을 실행하고 설치한다.
2. Provisioning Portal의 같은 곳에서 iOS Distribution Certificate의 이름을 클릭해 다운로드 한다.
3. 지역 장치에서 다운로드한 .cer파일을 더블클릭해 키체인 접근을 실행하고 인증서를 설치한다.
- Saving your Private Key and Transferring to Other Systems

이 상황에서 자신의 private key를 저장하는 것은 다중 맥에서 어플리케이션을 개발하거나 시스템 OS를 재설치하는 경우를 대비해 매우 중요하다. private key가 없으면 Xcode에서 바이너리를 서명할 수 없으며 그래서 앱스토어에 어플리케이션을 업로드할 수 없거나 다른 애플 장치에서 실행할 수 없게된다.
CSR이 생성되면 키체인 접근 어플리케이션은 로긴 키체인에 private key를 생성한다. 이 private key는 사용자 계정에 연결되며 OS 재설치와 같은 것에 의해 재생성될 수 없다. 만약 다중 시스템에서 개발을 수행할 것이라면 그 장치에서 import하여 작업을 수행할 수 있다.
1. private key를 엑스포트하고 인증서를 안전하게 보관하려면 키체인 접근 어플리케이션을 실행하고 "키" 카테고리를 선택한다.
2. 활성화된 private key를 선택한 후 파일 메뉴에서 "아이템 내보내기"를 통해 Personal Information Exchange (.p12) 파일 형식을 저장한다.
3. 암호 생성을 통해 이 키를 다른 컴퓨터에서 사용할 수 있게 된다.
4. 이제 .p12파일을 시스템 사이에서 전송할 수 있다. .p13파일을 더블클릭한다. 위에 입력한 암호를 입력해 불러올 수 있다.

Create and download your iOS Distribution Provisioning Profile for App Store Distribution

앱 스토어를 통한 배포를 위해 어플리케이션을 빌드핟록 App Store Distribution Provisioning Profile을 생성하고 다운로드 해야 한다. 이들은 Development Provisioning Profiles와는 다르고 App Store Distribution Provisioning profile만이 허용된다.
일러두기: 앱스토어 프로비져닝 프로필은 배포 빌트된 어플리케이션이 애플장치에서 설치되도록 허용하지 않는다. 장치에서 배포 준비된 어플리케이션을 설치하려면 Ad Hoc프로비져닝 프로필을 생성해야 한다.
1. 팀 에이전트는 프로피져닝 포털의 프로비져닝 섹션으로 이동해 Distribution 탭을 선택한다.
2. App Store 라디오 버튼을 선택한다.
3. Distribution 프로비져닝 프로필 이름을 입력한다.
4. iOS 배포 인증서가 생성되어있는지 확인한다.
5. 단일 배포 프로비져닝 프로필과 어플리케이션생성을 위한 와일드카드 App ID를 선택한다.
6. Submit를 클릭한다.
7. 다운로드할 .mobileprovision파일을 의 Distribution 프로비져닝 프로필이름을 클릭한다.
8. .mobileprovision을 Xcode에 드래그하거나 iTunes 아이콘으로 드래그해 설치한다.
Creating and Downloading a Distribution Provisioning Profile for Ad Hoc Distribution

Ad Hoc배포를 위하여 Xcode 에서 어플리케이션을 빌드하려면 Ad Hoc 배포 프로비져닝 프로필을 생성하고 다운로드해야 한다.
1. 팀 에이젼트는 프로비져닝 포털에서 "Provisioning" 섹션으로 이동한다.
2. Ad Hoc 라디오 버튼을 선택한다.
3. Ad Hoc 배포 프로비져닝 프로필의 이름을 입력한다.
4. iOS 배포 인증서가 생성되고 보여지고 있는지 확인한다.
5. 배포할 어플리케이션의 App ID를선택한다.
6. 어플리케이션을 실행할 100개 까지의 UDID를 선택한다.
7. "Submit"를 클릭한다.
8. .mobileprovision파일을 다운로드하기위해 Distribution Provisioning Profile의 이름을 클릭한다.
9. .mobileprovision을 Xcode나 iTunes에 드래그하여 설치한다.
Building your Application with Xcode for Distribution

1. Xcode를 실행하고 프로젝트를 연다.
2. 만약 이것을 수행하지 않았다면 Distribution Provisioning Profile을 Xcode나 iTunes아이콘에 드래그한다. (또는 "~/Library/MobileDevice/Provisioning Profiles" 디렉토리로 드래그한다.)
3. Xcode 프로젝트를 열고 프로젝트의 Info 패널의 설정 페인의 "Release"를 복재한다.  이 설정의 이름을 Distribution이라고 명명한다.
4. Target Info 윈도우에서 빌드탭을 Configuration에서 Distribution으로 변경한다.
5. Target Info 윈도우에서 Build페인으로간다. "Code Signing Identity"필드아래의 "Any iOS Device"팝업을 클릭하고 iOS Distribution Certificate/Provisioning Profile 페어를 선택한 후 설치한다. iOS Distribution 인증서는 강조된다. 아래이 예에서 "iOS Distribution: Example Corp, Inc"는 배포 인증서이고 "My App Store Distribution Provisioning Profile"은 이 것과 연계된 .mobileprovision파일이다.
일러두기: iOS Distribution 인증서를 위한 private키가 없으면 iOS Distribution Certificate/Provisioning Profile페어를 선택할 수 없어 다음과 같이 보이게 된다. 이를 위해  iOS Distribution인증서를 임포트하여 정상작동하도록 한다.
6. Target Info윈도우에서의 속성 페인에서 App ID의 번들 지정자를 입력한다. 만약 지정자 필드에서 App ID의 번들 지정자 포션을 입력해야한다. 예를 들면 App ID가 A1B2C3D4E5.com.domainname.applicationname 이라면 com.domainname.applicationname 를 입력한다. 만약 App ID에 와일드카드 아스테리스크를 사용했다면 이를 선택할 이름으로 대체하도록한다.
여기에 예시 App ID와 Xcode의 지정자 필드에 입력할 이름이 있다.
  • Example App ID: A1B2C3D4E5.com.domainname.applicationnameIdentifier to enter in Xcode: com.domainname.applicationname
  • Example App ID: A1B2C3D4E5.com.domainname.*Identifier to enter in Xcode: com.domainname.<name_of_application_or_suite>
  • Example App ID: A1B2C3D4E5.*Identifier to enter in Xcode: <full_reverse_dns_company_and_application_or_suite_name>
7. 프로젝트 윈도우에서 오버뷰 팝업으로부터 Distribution Active Configuration을 선택하고 원하는 장치로 Active SDK를 선택한다.
App Store 배포를 위해서 단계 12까지 건너뛴다. Ad Hoc 배포에는 다음도 수행한다.
8. 파일 메뉴에서 New File -> iPhone OS -> Code Signing -> Entitlements를 선택한다.
9. "Entitlements.plist"의 이름을 입력하고 "Finish"를 선택한다. 이를 통해 프로젝트 내의 기본 엔타이틀먼트 복사본이 생성된다.
10. 새로운 Entitlements.plist를 선택하고 "get-task-allow"프로퍼티를 체크해제한다. Entitlements.plist를 저장한다.
11. Target을 선택하고 빌드 세팅 인스펙터를 연다. "Code Signing Entitlements"빌드 세팅에서 새로운 Entitlements.plist파일을 확장자 포함해 입력한다. 여기에는 경로를 입력할 필요가 없이 프로젝트의 탑레벨에 있으면 된다.
12. "Build"를 클릭한다. (일러두기: 바이너리는 반드시 플래턴드이며 57x57픽셀의 스퀘어 이미지 아이콘을 포함해야한다. 아이콘은 아이폰이나 아이판 터치 홈 스크린에서 보여지게 된다.)
13. "Products" 서브폴더내의 앱을 선택한 후 액션 팝업에서 "Reveal in Finder"를 선택한다.
14. 파인더의 콤프레스 옵션으로 어플리케이션을 포함하여 .zip 파일을 생성한다. 이 파일은 오직 .app 파일만 압축하며 전체 빌드 폴더는 아니다.
Verifying a Successful Distribution Build

빌드를 성공적으로 수행하려면 다음을 체크한다.
1. 빌드 로그 디테일 뷰를 열고 "embedded.mobileprovision"파일을 학인한다. 이는 빌드로그에서 프로비져닝 프로필이 성공적으로 호출되었는지를 볼 수 있다. embedded.mobileprovision 이 Debug, Release폴더가 아닌 "Distribution"빌드디렉토리에 위치하고 있는지 확인한다. 또한 대상 경로가 빌드하는 앱인지도 확인한다.
2. 빌드 로그 세부 뷰에서 CodeSign 용어를 찾아 빌드로그에서 iOS Certificate를 통해 서명되었는지를 확인한다.
만약 프로젝트가 위 파일이 없거나 잘못된 디렉토리를 가리킨다면 다음을 수행한다.
1. Target을 선택하고 Build Settings 인스펙터를 연다. Distribution 설정인지 확인한다.
2. Code Signing Identity를 삭제한다. : iOS Distribution : COMPANYNAME
3. Xcode 빌드 메뉴에서 모든 타겟을 삭제한다.
4. 파인더를 사용해 Xcode프로젝트의 존재하는 빌드 디렉토리를 삭제한다.
5. Xcode를 재실행하고 프로젝트를 연다.
6. Target Build Settings 인스펙터에서 코드 서명 지정자 iOS Distribution : COMPANYNAME을 다시 입력한다.
7. 프로젝트를 다시 빌드 한다.

Updating your Application

앱 스토어는 어플리케이션에서 존재하는 어플리케이션의 업데이트여부는 세가지를 확인한다. 어플리케이션을 iTunes Connect에서 업데이트하려면 다음을 수행한다.
1. 어플리케이션의 각 새로운 버젼을 빌드하려면 같은 Distribution Provisioning Profile을 사용한다.
2. 프로젝트의 Info.plist파일의 CFBundleVersion과 CFBundleShortVersionString값을 증가시킨다. 일러두기: 버젼 넘버는 반드시 양의 정수의 period-delimited sequences이어야 한다. (1.1 에서 1.1로 , 2.2.1 에서 2.2.2)

1 2 3 4 5 6 7 8 9 10 다음