iOS APP 만들기

개요

iOS앱은 개발이 어려운편은 아니지만 밑준비인 인증서작업이 생소하고 대단히 어렵게 느껴집니다. 그래서 설명이 어렵고 복잡하게 보일지도 모르지만 차근차근 보면서 따라해보면 문제없이 앱을 만들 수 있을거라고 봅니다.
iOS 앱을 만드려면 인증서 등록, 앱 소스수정, 테스트, 앱 컴파일, 앱 서버에 올리거나 앱스토어에 등록 과정을 거쳐야합니다.

개발환경

  • Mac OSX 10.9.2(메버릭스)
  • Xcode 버전 5.1.1
  • 테스트 디바이스 : iPhone 4(ios7), iPhone 5s(ios7)

문제가 발생하면??

모바일 개발하다보면 대단히 많은 곳에서 문제가 발생합니다.
여기서 따로 물어볼 지인도 없고하면 대부분 인터넷에서 직접 찾아봐야합니다. 필자는 대부분 검색을 통해서 해결했습니다. 원리나 과정을 모르면 소위 말해서 굉장히 많은 삽질이 필요한 일입니다.

  • 구글에서 검색합니다.
    구글링입니다. “ios, xcode” 같은 단어와 알고싶은 단어를 섞어서 검색하거나 오류 메세지를 전부 적어서 검색하면 같은 문제로 질문하는 사람들의 글을 많이 볼 수 있습니다.
    한글 검색보다 영어 검색을 추천합니다. 해외 포스팅이나 stack overflow에서 대부분의 답을 찾을 수 있습니다.
  • “맥부기 애플 ios,osx 개발자 모임” 네이버 카페(http://cafe.naver.com/mcbugi)에서 검색합니다.
    내용들이 전부 한글이라서 알기 쉽다는 장점이 있습니다.
    가입은 기본이며 정회원이 접근할 수 있는 글도 있어서 어느정도 활동이 필요합니다.

iOS 개발자라면 이 문서가 필요없지만 처음 접해본 분들이라면 도움이 될것입니다.
하지만 이 문서로 부족한 내용이 많기때문에 초보자에게는 검색하는 시간이 대단히 많을것입니다.

인증서 발급 및 등록

인증서 발급하는 이유는 실제 디바이스에서 앱을 실행시키게 하기 위하여 작업하는 과정입니다.
다르게 설명한다면 작업하는 컴퓨터로 “내가 이 컴퓨터로 이 앱을 만들고, 알림메세지 기능을 사용 할 거예요~”라고 알려주고, 애플에서 “알겠어~ 그럼 이 컴퓨터로 개발하고 이 디바이스로 테스트하고, 알림메세지를 사용할 수 있게 허락해주마”라는 확인 과정입니다.
생소한 단어들이 굉장히 많으며, 과정도 생소해서 필자도 아직도 햇갈립니다.

개발자 프로그램

일반 개발자 - 개인 및 기업 계정입니다. 보통 일반 개발자로 작업을 많이하며, 만든 앱을 앱스토어를 통해서 배포할 수 있습니다.
엔터프라이즈 개발자 - 회사, 조직, 기관 및 교육기관에서 내부 독점 응용 프로그램을 개발하려면 이 프로그램을 이용합니다. 이 계정은 앱스토어에 앱을 올릴 수 없습니다.

개발 컴퓨터에서 인증서 요청 파일 만들기

이 작업은 인증서와 연결하는 인증키를 만드는 과정입니다. 보통 인증서 만들기에서 가장 최초에 작업하는 과정이라고 볼 수 있습니다.

  1. [키체인 접근] 어플리케이션을 엽니다.
  2. [키체인 접근 > 인증서 지원 > 인증 기관에서 인증서 요청]메뉴를 선택하면 인증서 지원 팝업창이 뜨는것을 확인할 수 있는데 사용자 이메일 주소, 일반 이름의 값을 입력하고, 요청항목에서 “디스크에 저장됨”을 선택하고 “본인이 키 쌍 정보 지정” 체크박스에서 체크합니다.
    자세한건 아래 그림을 참고합니다.

    필자는 위와같은 형식으로 입력했습니다.
  3. [계속] 버튼을 누르면 certSigningRequest 파일을 저장할 위치를 지정합니다. 위치를 적절한 곳에 지정하고, [저장] 버튼을 누릅니다.

    필자는 위와같은 형식으로 입력했습니다.
  4. 다음으로 “키 쌍 정보” 화면으로 넘어왔는데 [계속]버튼을 누르면 잠시 로딩화면이 나왔다가 “인증서 요청이 디스크에 생성되었습니다.”라는 메세지와 함께 certSigningRequest 파일이 저장되어있는것을 확인할 수 있습니다.
  5. 과정이 모두 끝났으면 아래 그림과 같이 개인키와 공개키 2개가 만들어졌음을 확인할 수 있습니다.

    주의)
    이 과정에서 만든 certSigningRequest 파일은 절대로 지우지 마세요. 그리고 앞으로의 과정에서 만들어진 파일도 왠만하면 보관하고 별도로 관리해두시는것을 추천드립니다.

iOS Provisioning Poratal에서 개발자용 인증서 만들기

이 과정은 개발자 사이트에 접속하여 사이트의 인증서를 만들고 키체인에도 인증서를 등록하는 과정을 알려드립니다.
여기서부터 과정은 iOS개발자로 로그인해야 아래 화면을 접근할 수 있습니다.

  1. https://developer.apple.com/account/overview.action 페이지로 이동합니다. 처음 들어오면 로그인화면이 나오지만 로그인을 하면 Certificates, Identifiers & Profiles 페이지를 볼 수 있습니다.
  2. iOS Apps 섹션에서 [Certificates] 버튼을 선택합니다. iOS Certificates 목록 페이지로 이동합니다.
  3. 아래 그림에서 빨간선 표시가 있는 버튼을 눌러서 인증서 추가 페이지로 갑니다.
  4. Select Type
    인증서 추가 첫번째 단계인 Select Type 페이지에 왔습니다.
    인증서 종류를 선택해야하는데 인증서는 크게 두가지로 구분됩니다. “Development”와 “Production”가 있는데 개발용과 배포용입니다. 개발용은 실제 기기에서 테스트하기 위한 인증서고, 배포용은 앱스토어나 Ad Hoc을 통하여 외부로 배포할 때 사용되는 인증서입니다.

    [Development > iOS App Development]메뉴를 선택하고, 아래쪽 Intermediate Certificates 섹션이 있는데 "Worldwide Developer Relations Certificate Authority" 링크가 있는것을 볼 수 있는데 클릭해서 AppleWWDRCA.cer 파일을 다운로드하고 별도로 만들었던 인증서 폴더로 옮겨둡니다. 그리고 [Continue]버튼을 누릅니다.
  5. About Creating a Certificate Signing Request (CSR)
    csr파일을 만드는것에 대한 안내 페이지입니다. “개발 컴퓨터에서 인증키 만들기” 과정에서 certSigningRequest 파일을 만드는 법에 대하여 적혀있습니다.
    파일이 있는걸 확인하고 [Continue] 버튼을 누릅니다.
  6. Generate your certificate
    csr파일을 업로드하는 페이지입니다. “개발 컴퓨터에서 인증키 만들기” 과정에서 만들었던 CertificateSigningRequest.certSigningRequest 파일을 선택하고 [Generate] 버튼을 누릅니다.
  7. Your certificate is ready.
    잠시 기다리면 인증서 제작 결과 페이지로 넘어갑니다. 인증서 이릅과 타입을 확인하고 [Download]버튼을 눌러 ios_development.cer 파일을 다운로드하고 인증서 폴더로 옮겨둡니다.

    그리고 [Done] 버튼을 누르면 인증서 목록으로 이동하는데 인증서가 추가된것을 확인할 수 있습니다.
  8. 다운받았던 AppleWWDRCA.cer, ios_development.cer 파일들을 키체인에 등록합니다.
    등록하는 방법은 파일을 더블클릭으로 실행하거나 드래그 앤 드롭으로 파일을 키체인 프로그램으로 집어넣으면 아래 그림과 같이 인증서가 추가됐음을 확인할 수 있습니다.

여기까지의 과정은 iOS개발에 대한 기본적인 인증서를 만드는 방법입니다. 하지만 이걸로 바로 개발할 수 있는것은 절대로 아닙니다. App ID, Provisioning Profiles 등등 등록해야 할것들이 더 있습니다.
iOS 개발이 처음이거나 컴퓨터가 바뀌면 “개발 컴퓨터에서 인증키 만들기” 과정부터 다시 작업해줘야하는 번거로움이 많지만 한번하면 더이상 손댈 필요없는 과정이기도 합니다.

이번 과정에서는 개발자용 인증서를 만드는 것에 대해서 보여드렸지만 배포용 인증서도 같은 방식이니 별도로 또 만들어주면 됩니다. 개발용과 배포용 둘다 만들면 인증서 목록에는 아래 그림과 같은 모습으로 볼 수 있습니다.


  • Certificates, Identifiers & Profiles 페이지에서의 인증서 목록
  • 키체인에서의 목록

App ID 등록하기

App ID는 개발하는 앱의 구분되는 id값을 나타냅니다. 이 값을 이용해서 추가적인 서비스(아이클라우드, 인앱결제, 게임센터, 푸시메세지… 등등)를 사용할 수 있으며 앱을 만들때 중요한 값이 됩니다.
App ID가 만들어지는 원리는 Prefix와 Suffix의 글자가 합쳐져서 ID가 만들어집니다.
예) 567A4NXXXF(Prefix) + com.name(Suffix) = 567A4NXXXF.com.name

  1. Apple Developer 사이트의 Certificates, Identifiers & Profiles 페이지에서 Identifiers > App IDs 페이지로 이동합니다.
  2. 화면 상단에 “+” 버튼을 눌러 “Register iOS App ID” 페이지로 이동합니다.
  3. Registering an App ID
    App ID를 등록하기 위한 첫번째 과정이면서 중요한 부분입니다.
    필자는 푸시알림을 사용하기 위하여 “Explicit App ID” 항목에서 값을 입력하고, Push Notifications 항목을 체크했습니다. 필요한 부분을 모두 입력하면 [Continue] 버튼을 누릅니다.

    다음은 주요 항목에 대한 설명이니 참고하세요.
    • App ID Description
      목록에서 구분되는 이름을 입력합니다.
    • App ID Suffix
      App ID 이름을 입력합니다. Explicit App ID와 Wildcard App ID 두가지 항목을 골라서 입력해야 합니다.
      • xplicit App ID
        ID값을 와일드카드(*)를 사용하지 않고 단일 앱으로 사용할 수 있습니다. 그래서 In-App Purchase, Game Center, Push Notifications 서비스를 사용할 수 있습니다.
        ex) com.domainname.appname
      • Wildcard App ID
        와일드카드 값(*)을 사용할 수 있는 값을 입력합니다.
        ex) com.domainname.*
    • App Services
      앱 개발에 제공되는 서비스를 선택합니다. 애플서버와 연계되는 서비스이기 때문에 사용할 서비스를 체크합니다.
      Game Center, In-App Purchase, Push Notifications 항목은 App ID Suffix 섹션에서 “Explicit App ID” 항목을 선택했을때 활성화 되는것을 볼 수 있습니다. 이 말은 단일로 사용되는 App ID로만 사용할 수 있습니다.
  4. Confirm your App ID.
    등록한 App ID를 확인합니다. 입력한 값이나 옵션을 확인하고 [Submit] 버튼을 누릅니다.
    주의!
    App ID 등록을 완료하면 절대로 삭제는 불가능하고, Identifier 수정은 불가능합니다. 이점 충분히 염두해두고 id값을 다시한번 더 확인합니다.
  5. 등록을 마치면 App ID 목록화면으로 돌아오는데 만든 ID를 선택하면 아래 그림과 같이 상세 내용을 확인할 수 있습니다.

    위의 그림에서 Push Notifications 항목에서 확색불로 “Configurable” 메세지가 떠 있는것을 확인할 수 있습니다. 이 부분에 대한 설정은 나중에 푸시 알림 설정편에서 안내하겠습니다.
    푸시알림을 설정하지 않았으면 “Disabled”로 됐을 겁니다.

일반앱을 개발하면 와일드카드를 이용한 App ID를 사용하면 되지만 푸시알림이나 인앱결제, 게임센터를 이용하는 앱을 개발할때마다 별도로 App ID를 등록해줘야합니다.
ID값이 주요한 값이므로 개발할때 기억해두는것이 좋습니다.

iOS Devices 등록하기

앱 개발 테스트할 기기를 등록합니다. 디바이스에 UDID라는 고유의 값이 있는데 이 값을 등록하여 디바이스로 테스트할 수 있기 때문에 Provisioning Profiles 등록하기 전에 꼭 등록합니다.

  1. 먼저 디바이스의 UDID값을 알아야합니다.
    USB를 통해 디바이스와 아이튠즈가 설치된 컴퓨터를 연결합니다.
  2. 아이튠즈를 실행하고 우측상단에 있는 디바이스 이름이 적혀있는 버튼을 누릅니다.
  3. 디바이스 정보 페이지로 넘어간것을 확인할 수 있는데 일련번호 옆에 코드를 한번 클릭합니다.
  4. 일련번호를 한번 클릭하면 토글되면서 식별자(UDID)로 변하게 됩니다. UDID값에서 오른쪽 마우스 키를 클릭하면 복사하기 메뉴가 나오는데 그걸 선택하면 UDID값이 클립보드로 복사됩니다.
  5. Certificates, Identifiers & Profiles 페이지로 이동하여 [Devices > All] 메뉴로 이동합니다.
  6. 다른 페이지와 마찬가지로 ”+” 버튼을 눌러 추가 페이지로 이동합니다.
  7. 아래 그림과 같이 복사한 UDID를 입력하고 등록합니다.

Provisioning Profiles 등록하기

프로비저닝 프로파일은 앱 개발이나 배포를 위한 프로파일입니다. 인증서 관리 페이지에서 등록하여 파일로 다운로드 받아서 실제 기기로 테스트할때 사용할 수 있습니다.
엔터프라이즈의 인하우스와 앱스토어로 배포하는 앱 이외에는 디바이스가 등록되어있어야 합니다.
다음 개발 테스트용으로 사용할 프로비저닝을 등록하는 과정을 소개합니다.

  1. Certificates, Identifiers & Profiles 페이지에서 [Provisioning Profiles] 메뉴를 선택합니다.
  2. “+” 버튼을 누릅니다.
  3. Add iOS Provisioning Profile - What type of provisioning profile do you need?
    프로비저닝 타입을 선택합니다. 필자는 개발용을 추가하기 위하여 “iOS App Development” 항목을 선택하겠습니다.
    선택하고 [Continue] 버튼을 누릅니다.
  4. Add iOS Provisioning Profile - Configure
    App ID를 선택합니다. 필자는 이전 과정에서 만들었던 App ID(COCO)를 선택하겠습니다.
  5. Select certificates.
    인증서를 선택합니다. 전 과정에서 인증서 만들었다면 목록에 나와있는것을 선택하고 [Continue] 버튼을 누릅니다.
  6. Select devices.
    앱 설치 허용하는 디바이스를 선택합니다. 엔터프라이즈 인하우스나 앱스토어에 배포하는 방식은 이 과정이 없습니다.
  7. Name this profile and generate.
    프로파일 이름값을 입력하고 지금까지 선택한 항목을 확인하고 [Generate] 버튼을 누르면 프로비저닝 프로파일이 만들어집니다.
  8. Your provisioning profile is ready.
    프로비저닝 프로파일이 만들어졌습니다. 내역을 확인하고 [Download] 버튼을 눌러서 파일을 다운로드 받습니다. 이 파일은 XCode에서 앱을 디바이스로 테스트하는데 사용하니 보관해두시길 바랍니다.

나중에 배포를 하기때문에 미리 배포용 프로비저닝 프로파일을 만듭니다. 과정은 이전에 소개했던 과정과 똑으니 하나 더 만듭니다.

푸시알림을 위한 준비작업

이전과정까지 개발용 인증서, App ID, 개발용 프로비저닝을 만드는 방법에 대하여 알아봤습니다. 일반앱을 개발하는데는 인증서 작업은 간단하지만 푸시알림을 받으려면 푸시알림 설정을 위하여 추가적인 작업이 필요합니다.

  1. Certificates, Identifiers & Profiles 페이지에서 App IDs 메뉴로 이동합니다.
  2. 전 과정들중에 “App ID 등록하기” 과정을 통해서 Push Notifications 서비스를 사용하는 ID를 등록합니다. Push Notifications 서비스가 사용되고 있으면 App IDs 목록에서 아래 그림과 같이 Push Notifications 항목에 노란색 불이 들어와 있는것을 확인할 수 있습니다. (목록에서 해당하는 줄을 클릭하면 아래 그림과 같이 자세한 내용이 나옵니다.)
  3. 2번 과정의 그림에서 [Edit] 버튼을 누르면 “iOS App ID Settings” 페이지로 이동합니다.
  4. “iOS App ID Settings” 페이지에서 아래쪽에 내려가보면 “Push Notifications” 항목이 있습니다. 그 아래에 Enabled가 되어있는것을 확인합니다.
    상태가 Enabled가 되어있으면 아래쪽에 “Development SSL Certificate”과 “Production SSL Certificate”라는 인증서 목록이 있습니다. “Development SSL Certificate”는 개발용, “Production SSL Certificate”는 배포용 인증서 목록입니다.
  5. 푸시알림용 인증서를 만들기 위하여 [Create Certificate…] 버튼을 누릅니다.
    “Add iOS Certificate” 페이지로 이동하는데 “iOS Provisioning Poratal에서 개발자용 인증서 만들기” 과정에서 한번 해본방법이니 보관해둔 CertificateSigningRequest.certSigningRequest 파일을 사용해서 인증서를 만듭니다. 그리고 인증서 파일은 꼭 다운로드 받아둡니다.
    필자는 개발용과 배포용 인증서 둘다 만들겠습니다. 만든 결과는 아래 그림과 같습니다.

    아래 그림은 다운로드 받은 파일들입니다.
  6. 설정을 모두 마쳤으면 [Done] 버튼을 눌러서 설정을 적용합니다.
    인증서 목록 페이지로 가보면 아래 그림과 같이 APNs형태의 개발용과 배포용 인증서가 등록되어있는것을 확인할 수 있습니다.
  7. 인증서 만들때 다운로드 받은 cer 파일은 키체인 접근에다 넣어줍니다. 그럼 아래 그림과 같이 “IOS Push Service”라는 문장이 포함된 목록을 볼 수 있습니다.
  8. 이번에는 프로비저닝 프로파일을 확인해야합니다.
    이전에 “Provisioning Profiles 등록하기” 과정에서 개발용 프로비저닝 프로파일을 등록을 했습니다. 만약 프로비저닝 프로파일을 등록하지 않았으면 “Provisioning Profiles 등록하기” 과정을 참고하세요.
    아래 그림과 같이 지금은 Invalid 상태가 되어있습니다.

    아마도 APNs 인증서를 등록해서 경고로 바뀌지 않았을까 예상해보지만 정확한 원인은 모르겠지만 이 부분에 대해서는 쉽게 고칠 수 있습니다.
  9. COCO_DEV를 선택하면 상세 정보가 나오는데 [Edit] 버튼을 누릅니다.
    “Edit iOS Provisioning Profile” 페이지로 이동하는데 App ID나 인증서(Certificates)가 제대로 선택되어있는지 확인하고 아래 [Generate] 버튼을 누릅니다.
    잠시 로딩이 나오고 “Your provisioning profile is ready.” 페이지로 넘어갑니다. 개발용 프로비저닝이라면 [Download] 버튼을 눌러 프로비저닝 프로파일 파일을 다운로드 받아서 보관합니다.
    [Done] 버튼을 누르면 프로비저닝 프로파일 목록으로 이동하는데 상태가 Active라는것을 볼 수 있습니다.

pem 파일 만들어서 관리자에 올리기

pem 파일은 관리자 서버(서드파티 서버)에서 디바이스로 메세지를 전송하는데 꼭 필요한 파일입니다. 이 파일은 키체인데서 키와 인증서를 합친 파일이라고 볼 수 있는데 이번 섹션에서 만들어보도록 하겠습니다.

  1. [키체인 접근] 프로그램을 엽니다.
  2. 카테고리에서 인증서로 이동합니다.
  3. “푸시알림을 위한 준비작업” 과정에서 만들었던 인증서와 키를 선택합니다. (쉬프트키와 커멘드키의 조합으로 선택)
  4. 우측 마우스 클릭하여 메뉴에서 “2개 항목 보내기…“를 선택합니다.
  5. p12파일을 저장할 위치를 지정하고 [저장] 버튼을 누릅니다.
    필자는 “coco_dev.p12” 이름으로 저장하겠습니다.
  6. “보낸 항목을 보호하는 데 사용할 암호 입력” 제목으로 암호를 입력하라고 나옵니다. 암호를 입력하지 않아도 상관은 없습니다. [승인] 버튼을 누릅니다.
  7. “키체인 접근이(가) 키체인에서 ‘COCO’키를 보내고자 합니다.”라는 제목의 윈도우에서 암호를 입력하라고 나옵니다. 관리자 암호를 입력하고 [허용] 버튼을 누릅니다. (한번 더 물어봅니다.)
  8. p12파일이 만들어졌음을 확인할 수 있습니다.
  9. 이번에는 [터미널] 프로그램을 열고 p12파일을 저장한 곳으로 이동합니다. 그리고 아래와 같은 명령어를 실행합니다.
    openssl pkcs12 -in filename.p12 -out filename.pem -nodes
    필자가 실행한 터미널의 명령은 다음과 같습니다.

    명령어를 실행하면 암호를 물어보는데 6번 과정에서 암호를 지정했으면 입력하면 됩니다.
  10. 아래 그림과 같이 pem파일이 만들어진것을 확인할 수 있습니다. 필자는 위의 과정으로 배포용 파일도 만들었습니다.
  11. 이제 앱 관리자에 pem파일을 업로드 합니다.
    관리자에서 [앱관리 > 고객 APP 관리 > 기본 환경설정]페이지로 이동합니다.
  12. 인증키 설정 섹션에서 아이폰 인증파일 항목에서 pem파일을 올리고 [저장] 버튼을 눌러 적용합니다.

개발용과 배포용?

인증서나 프로비저닝 프로파일 등록할때 “Development”와 “Production”이나 “Distribution” 단어들을 많이 보셨을겁니다. 대충 해석하자면 “Development”는 개발용이고, “Production”와 “Distribution”는 배포용이라는것을 의미합니다.

애플 인증서 관리 사이트에 등록된 디바이스를 USB로 컴퓨터와 연결하여 실제 기기로 테스트를 하는데 쓰이는 게 개발자용 인증서와 프로비저닝입니다.
그 이외에 앱스토어 배포나 에드혹으로 통한 배포에는 배포용 인증서와 프로비저닝이 사용됩니다.

대단히 중요한 개념이므로 알아두시길 바랍니다.

앱 소스수정

이전과정에서는 준비작업인 인증서 등록에 관해서 알아봤습니다. 인증서 작업을 하지 않으면 실제 디바이스로 테스트하지 못하거나 배포를 하지 못하기 때문에 꼭 준비작업을 하고 이 과정에 들어가시기 바랍니다.

MyApp 프로젝트 준비

  1. 먼저 아람스쿨에서 하이브리드 APP 오픈소스에서 첨부된 파일중에 ios용 압축파일을 다운로드 받습니다. 그리고 압축을 풉니다.
  2. 혹시 문제가 생길지도 모르니 압축파일은 지우지 않고 그대로 두거나 별도로 백업하길 바랍니다.
    필자는 “COCO”라고 이름을 바꾸겠습니다.

    그리고 COCO 폴더에 들어가서 myapp.xcodeproj 파일을 실행합니다. 아니면 Xcode프로그램에서 [File > Open…]으로 프로젝트 파일을 열수도 있습니다.
  3. Xcode 프로그램이 실행되고 기초적인 설정을 하는 화면이 나옵니다.

테스트를 위한 준비

  1. 개발 테스트를 하기위한 준비를 해야합니다.

    테스트는 두가지 방식으로 테스트를 할 수 있습니다. 하나는 iOS Simulator를 통하여 가상 시뮬레이터 프로그램으로 테스트 할 수 있고, 다른 하나는 실제 디바이스를 USB케이블로 연결하여 디바이스에 앱을 설치하여 테스트할 수 있습니다.

    iOS Simulator

    시뮬레이터로 하는 테스트는 빠르게 결과화면을 확인할 수 있지만 실제 기기와 약간의 차이는 보이거나 푸시알림 기능을 사용할 수없지만 실제 기기에서 테스트하면 속도는 조금 더 느리고 디바이스 화면을 통해 확인해야하지만 결과물이 정확하게 표현되고, 푸시알림 서비스를 테스트해볼 수 있습니다.

    시뮬레이터나 실제 디바이스로 테스트할때 Debug area에서 메세지를 확인 할 수 있기 때문에 어떤 형식으로 테스트하든지 상관없습니다.

    필자는 실제 디바이스에서 테스트하기 위하여 아이폰4를 컴퓨터에 연결하겠습니다. 처음 연결하면 Organizer 화면이 자동으로 뜨면서 뭔가 작업을 합니다. 기다리면 왼쪽 영역에서 녹색불이 들어옵니다.

    위 이미지에서 보는 윈도우는 [Window > Organizer] 메뉴를 선택하면 Organizer창이 나옵니다.

    왼쪽 화면에서 Provisioning Profile 메뉴를 선택하면 목록 화면이 나옵니다.
    여기서 “인증서 발급 및 등록” 섹션에서 “Provisioning Profiles 등록하기” 과정에서 프로비저닝 프로파일을 만들었을 겁니다. 그때 다운로드한 파일을 Organizer화면에다 드래그 앤 드롭으로 집어넣습니다.
    필자는 COCO_DEV.mobileprovision 이름으로 프로비저닝 파일을 다운로드 받은 파일을 넣었습니다.
    등록완료하면 목록에서 아래 그림과 같이 목록에 나타납니다.

    만약 Status의 상태가 녹색이 아닐수도 있습니다. 그럴때는 인증서의 문제나 App ID 문제가 있을 수 있으니 인증서을 잘못만들었을 가능성이 큽니다. 자세한 내용은 오류 메세지를 구글에서 검색하면서 찾아봐야합니다.
  2. 환경설정에서 개발자 계정을 추가해줘야합니다. 개발자 계정을 추가하지 않으면 아래 그림과 같이 General 탭에서 오류가 발생하고 테스트 디바이스로 컴파일할때 오류가 납니다.


    메뉴 [Xcode > Preferences..] 를 선택하면 환경설정 윈도우가 나옵니다.
    Accounts 탭으로 넘어가서 왼쪽 아래에 “+” 버튼을 눌러 “Add Apple ID..” 메뉴를 선택하여 계정을 추가합니다.
    성공적으로 계정이 추가되었으면 아래 그림과 같이 계정이 목록에 나옵니다.

    환경설정을 닫으면 General 탭에서는 더이상 오류메세지가 나오지 않습니다.

    여기까지 왔으면 디바이스로 테스트 할 준비가 되었습니다.

MyApp 수정

  1. 다음으로 프로젝트 이름을 변경해줘야하는데 필자의 프로젝트 이름은 “COCO”이므로 프로젝트 이름을 바꾸겠습니다.

    오른쪽 Utility area 영역에 Name 항목에서 “COCO”로 바꿉니다. 이름을 변경하고 엔터키를 치면 아래 그림과 같이 이름이 바뀌는 곳을 찾아서 바꿀건지 물어보는 창이 나옵니다.

    전부 체크되어있는걸 확인하고 [Rename] 버튼을 누르면 이름이 바뀝니다.

    그리고 그 아래쪽에 Organization 항목에서도 이름을 변경합니다. 이름을 바꾸면 아래 이미지와 같이 이름이 바뀌고 왼쪽 Navigation area 영역에 프로젝트 이름도 COCO로 바껴있는것을 확인할 수 있습니다.

  2. Editor area영역에서 Bundle Identifier 항목의 값을 확인합니다. Bundle Identifier항목은 인증서 관리에서 등록한 App ID값과 동일합니다.
    필자는 App ID 값을 “com.myapp.coco”로 만들었습니다. 이 값을 Bundle Identifier의 값과 동일한지 확인합니다.
    다른앱은 크게 따지지 않지만 푸시알림을 사용할 경우에는 꼭 App ID와 Bundle Identifier 항목의 값이 똑같아야합니다.
  3. 인증서와 프로비저닝 프로파일을 선택해야합니다.
    Editor area 화면의 상단 탭에서 Build Settings 탭을 클릭합니다.


    Build Settings 화면에서 CodeSigning 섹션이 있는데 이 부분은 인증서와 프로비저닝 프로파일을 선택하고 연결하는 중요한 부분입니다.

    디바이스 테스트를 위하여 아래 그림과 같이 Code Signing Identity 부분은 전부 Automatic, Provisioning Profile에서는 Apple 인증서 사이트에서 만들었던 개발용 프로비저닝 프로파일을 선택합니다. 필자는 COCO_DEV라고 만들었습니다.

    만약 프로비저닝 프로파일 항목에 목록이 없는 원인은 Xcode에 개발자 계정을 추가하지 않아서 프로파일을 가져오지 못하는것입니다. 문제가 있다면 5번 과정을 확인해보세요.
  4. 이제 디바이스에서 테스트 할 수 있는 준비가 다됐습니다.
    아래 그림과 같이 테스트할 디바이스를 선택하고(USB 케이블로 연결한 디바이스가 목록에서 나옵니다.), 왼쪽에 플레이 버튼을 누릅니다.


    컴파일을 시작합니다.
    문제가 없으면 “Build Success”라는 메세지가 나와서 디바이스에서 실행되는것을 볼 수 있지만 문제가 있으면 “Build Failed”라는 메세지가 나오면서 네비게이션 영역에 문제가 있는 부분을 목록으로 출력이 되니 확인할 수 있습니다.


    “SAMPLE”라는 제목으로 스플래시 이미지가 잠시 나왔다가 위와같은 그림으로 앱 화면이 나오는걸 볼 수 있습니다. 아직 작업이 끝나지 않았기 때문에 Stop 버튼을 눌러서 정지합니다.
  5. 이제부터 앱 소스를 수정합니다.
    네비게이션 영역에서 아래 그림과 같이 [프로젝트 > MyApp > Common.m]파일을 선택합니다.

    Common.m 파일에서 변수의 값을 수정하세요. 특히 baseUrl값은 홈페이지를 출력하고 푸시메세지에서 장치등록을 할때 사용하는 중요한 값이므로 꼭 수정합니다.
    mallID = @"myapp";
    appname = @"MyApp";
    baseUrl = @"http://xxx.com";
    development = @“1”; // 테스트를 하기때문에 개발자모드로 바꿔둡니다.

    그리고 [프로젝트 > MyApp > Supporting Files > InfoPlist.strings] 항목을 열어보면 InfoPlist.strings가 영어와 한글이 있습니다.
    둘다 CFBundleDisplayName 변수를 수정해줍니다. CFBundleDisplayName변수는 앱 이름을 결정짓는데 사용되기 때문에 꼭 수정합니다.

    이걸로 소스 수정은 끝났습니다.

이미지 교체

이번에는 앱 아이콘, 런처 이미지를 수정하겠습니다. 네비게이션 영역에서 [프로젝트 > MyApp > Images.xcassets] 항목을 선택하면 아래 그림과 같이 오른쪽에 이미지 목록을 볼 수 있습니다.

먼저 AppIcon을 선택합니다.
아래 그림과 같이 앱 아이콘들을 볼 수 있습니다.
이것들은 화면 사이즈나 해상도(레티나, 비레티나)에 따라서 각각 다르게 들어가는 이미지들입니다.

이미지를 교체하는 방법은 간단합니다.
이미지가 있는 곳이나 점선이 있는곳에 이미지 파일을 드래그 앤 드롭으로 넣어주면 됩니다.
주의해야 할 점은 이미지는 png파일만 사용할 수 있다는것과 이미지 크기가 정확해야합니다. 만약 사이즈가 틀린 이미지를 넣으면 곧장 경고 알림이 표시됩니다.

이미지 사이즈는 다음과 같습니다. 첨부된 샘플 이미지를 참고하세요.

AppIcon

  • iPhone 29pt 1x : 29px * 29px
  • iPhone 29pt 2x : 58px * 58px
  • iPhone 40pt 2x : 80px * 80px
  • iPhone 57pt 1x : 57px * 57px
  • iPhone 57pt 2x : 114px * 114px
  • iPhone 60pt 2x : 120px * 120px

LaunchImage

  • iPhone Portrait iOS 7 2x : 640px * 960px
  • iPhone Portrait iOS 7 R4 : 640px * 1136px
  • iPhone Portrait iOS 5,6 1x : 320px * 480px
  • iPhone Portrait iOS 5,6 2x : 640px * 960px
  • iPhone Portrait iOS 5,6 R4 : 640px * 1136px

테스트 컴파일

여기까지 수정하면 다시 컴파일하여 테스트해봅니다.
문제가 없으면 컴파일을 성공하고 디바이스에서 앱이 실행됩니다. 런처 이미지가 바뀐것을 확인 할 수 있고, 10번 과정에서 baseUrl 값을 수정했던 주소로 페이지가 로드되는것을 확인할 수 있습니다.

마지막으로 홈화면에서 앱아이콘과 앱 이름이 바꼈는지도 확인해봅니다.

서브메뉴, 알림내역 소스수정

앱에서 아래쪽 오른쪽 […] 버튼을 누르면 메뉴가 올라오지만 소스가 없으면 아래 그림과같이 메뉴부분은 백지화면으로 나옵니다. 그래서 관리자에서 소스를 삽입하여 메뉴를 추가하겠습니다.

  1. 관리자에서 [앱 관리 > 고객 APP 관리 > 기본 환경설정]메뉴를 선택하여 환경설정 페이지로 이동합니다.
  2. 디자인 관리 섹션에서 “서브 메뉴” 탭을 선택합니다.
  3. 아래 소스입력폼이 비어있는걸 볼 수 있습니다. 셀렉트목록을 클릭하여 “[phpx] 기본소스”를 선택하고 “선택하기”[샘플디자인 소스 가져오기] 버튼을 누르면 아래 그림과 같이 소스폼에 소스가 들어가는것을 볼 수 있습니다.
  4. 이전과 같은 방법으로 “Push 알림 내역“ 탭과 “Push 알림내역 (DATA)” 탭의 소스를 넣어주고 [수정(모두저장)] 버튼을 눌러 설정을 적용합니다.
  5. 앱을 실행하여 메뉴버튼(…)을 눌러서 확인해봅니다.
    소스가 정상적으로 들어갔다면 아래 그림과 같이 메뉴가 나오고, “알림내역” 메뉴를 선택하면 “이벤트 알림 새소식”이라는 페이지가 출력될 것입니다.

푸시알림 확인

푸시알림을 이용한다면 앱이 최초에 한번 실행되면 관리자에서 디바이스가 등록됩니다. 그래서 관리자에서 디바이스가 등록됐는지 확인해야합니다.
관리자에서 [앱 관리 > 고객 APP 관리 > APP 설치 현황]메뉴에 이동하면 아래 그림과 같이 디바이스가 등록된것을 확인할 수 있습니다.

pem파일을 만들어서 관리자에 등록했으면 메세지를 받을 수 있습니다.

[메세지 전송] 버튼을 누르면 팝업창이 뜨는데 Push 메세지 입력폼에서 보낼 문자를 적고 [전송] 버튼을 누릅니다.
설정에 문제가 없으면 아래 그림과 같이 디바이스에서 메세지가 오는것을 볼 수 있습니다.

앱 테스트

소스수정이 끝났으면 앱 테스트를 합니다. 확인해야하는 항목은 다음과 같습니다.

  • 앱 아이콘이나 런처 이미지가 잘 나오는지 확인데
  • 앱 내부에서 사이트가 접속이 되는지 확인
  • 앱 관리자에서 디바이스 정보가 등록되는지 확인
  • 관리자에서 메세지를 보내면 디바이스에서 알림이 오는지 확인
  • 앱 메뉴와 알림내역이 출력되는지 확인

앱스토어에 배포

앱 테스트가 끝났으면 앱스토어에 올리기 위하여 심사등록을 해야합니다. 이 과정은 상당히 까다롭고, 해야할 작업이 많아서 처음 접하면 많이 어렵게 느껴집니다.
먼저 전 과정에서 기술되었던 인증서 관련내용을 참고하여 인증서 등록과 배포할 앱을 준비합니다.

프로젝트 설정

Xcode에서 먼저 배포타입이 iOS 시뮬레이터로 되어있다면 iOS Device로 선택합니다. (연결된 디바이스가 없으면 iOS Device로 나옵니다.)

아래 그림과 같이 Build Settings 페이지에서 프로비저닝 프로파일을 배포용 프로파일로 바꿉니다.

iTunes Connect에 앱 등록하기

ipa파일을 만들기에 앞서서 iTunes Connect에서 앱을 등록할 준비를 해야합니다.
여기에서 입력해야하는 항목이 많아서 세부 내용은 구글링을 통하여 다른 사이트나 블로그 포스트를 통하여 참고하시길 바랍니다. 아래 링크목록은 스토어에 앱을 등록하는 과정에 대한 메뉴얼이 적혀있는 페이지 주소입니다.

포스트 글이 작성된 시기에 따라 화면이나 항목이 있을수도 있습니다. 체크하고 입력하는 항목의 설명이 전부 영어라서 번역기로 번역하든 구글링을 통해 의미를 이해하고 입력하는게 좋습니다.

필자는 아래 그림과 같이 등록했습니다.

앱 정보를 등록하면 상태가 “Prepare for Upload”가 되어있으며 View Details 에서 [Ready to Upload Binary]버튼을 눌러 이 과정을 통하면 상태가 “Waiting for Upload”가 됩니다. (“앱스토어(아이튠즈커넥트)에서 앱등록하는 방법” 링크에서 방법을 확인할 수 있습니다.)
앱의 상태가 “Waiting for Upload”가 되어야 앱을 올릴 수 있습니다.

앱을 iTunes Connect에 올리기

본격적으로 ipa파일을 만들어봅니다.

  1. 먼저 Xcode에서 [Product > Archive]메뉴를 선택합니다.
    컴파일 하는데 잠시 기다리면 Organizer 윈도우가 뜨면서 컴파일된 프로젝트가 생겼습니다.
  2. 목록을 선택하고 에서 MyApp 이름을 한번 더 클릭하면 이름을 바꿀 수 있다.
    필자는 “COCO”로 바꾸겠습니다.
  3. [Validate] 버튼을 누르면 개발자 계정으로 로그인단계가 나옵니다.
    이 과정은 앱이 문제없는지 검사하는 과정이며 심사에 올리기전에 꼭 해야하는 과정입니다.

    Username과 Password를 입력하고 [Next]버튼을 누릅니다.

    만약 “It's because your App is on 'Prepare for Upload' state. You have to change its state to 'Ready to Upload Binary' by clicking the following button on your app page, on itunesconnect. It's on the right corner.”라는 오류메세지를 본다면 iTunes Connect에서 앱이 등록되어있지 않거나 등록된 앱의 상태가 “Prepare for Upload”라서 이런 오류메세지가 뜹니다. 이전 섹션의 “iTunes Connect에 앱 등록하기” 내용을 참고하여 “Waiting For Upload” 상태로 변경해야합니다.
  4. 이번에는 프로파일을 선택해라고 합니다.
    계정 인증서관리에서 배포용 프로비저닝 프로파일이 만들어졌다면 목록에서 선택할 수 있습니다. 맞는 프로파일을 선택하고 [Validate] 버튼을 눌러서 검사를 시작합니다.
  5. 아무 문제가 없다면 “No issues were found in .COCO’…”라는 메세지를 볼 수 있습니다.
    [Finish]버튼을 누르면 유효성 검사 창이 닫히며 목록화면이 보입니다. 여기서 달라진점은 Status 부분에서 “Pass Validation”메세지가 생겼습니다.
  6. 드디어 ipa파일을 만드는 마지막 과정으로 왔습니다. 이번에는 [Distribute]버튼을 누릅니다.
  7. 아래 그림과 같이 세가지 항목을 선택할 수 있는 라디오 박스가 나옵니다.

    “Submit to the iOS App Store” 항목을 선택하고 [Next]버튼을 누릅니다.
  8. 개발자 계정 Username과 Password를 입력하고 [Next] 버튼을 누릅니다.
  9. 프로파일을 선택해라고 합니다. 4번과정과 같은 과정입니다. 맞는 프로파일을 선택하고 [Submit] 버튼을 누릅니다.
  10. 로딩화면이 꽤 오랫동안 나오는데 기다리면 이슈가 없다는 메세지가 나옵니다. [Finish] 버튼을 누르고 끝냅니다. 이번엔 Status 부분에 “Submitted”라고 바뀌었습니다.

앱 등록확인

이걸로 앱 등록까지 모두 완료했습니다.
iTunes Connect 에서 등록한 앱 Status가 “Waiting For Review”로 바뀐것을 확인할 수 있습니다.

이제 심사를 기다리면 됩니다. 기간은 최대 2주일가량 걸립니다. 언제 결과가 나올지는 모르지만 한번씩 iTunes Connect 사이트에 가서 한번씩 확인해봅니다.

현재 만들어진 MyApp 소스로 앱스토어에 심사등록하면 99%는 리젝당합니다.
MyApp은 webview를 사용한 웹사이트를 보여주기만 하기때문에 앱으로 활용할 수 있는 컨텐츠가 없기 때문에 앱에서 사용할 수 있는 별도의 기능이나 컨텐츠를 넣어서 등록하시길 바랍니다.

앱을 관리자에 올리기(엔터프라이즈 계정)

iOS 개발자 기업 프로그램(엔터프라이즈 프로그램)을 신청하면 디바이스 등록에 상관없이 앱을 배포할 수 있습니다. 자세한 내용은 https://developer.apple.com/kr/support/ios/enterprise.html 이곳을 참고해주세요.

이번에는 iOS 개발자 기업계정을 통해 관리자에 앱을 올려서 배포하는 방법에 대해서 알아보겠습니다.

iOS 개발자 기업 프로그램 신청 과정이 굉장히 까다롭고 비용도 많이듭니다.
하지만 앱스토어에 올릴 필요없이(심사 대기기간도 없어 만들고 바로 배포가능) 유저에게 배포가 가능한 장점을 가지고 있습니다. 그리고 앱 관리자에서 iOS앱을 올리고 사이트 배너를 띄어서 배포할 수 있습니다.

프로젝트 설정

Xcode에서 먼저 배포타입이 iOS 시뮬레이터로 되어있다면 iOS Device로 선택합니다. (연결된 디바이스가 없으면 iOS Device로 나옵니다.)


아래 그림과 같이 Build Settings 페이지에서 프로비저닝 프로파일을 배포용 프로파일로 바꿉니다.

ipa파일 만들기

  1. Xcode 에서 메뉴 [Product > Archive]를 선택합니다.
    기다리다보면 아래 그림과 같이 Organizer 윈도우에서 앱 목록에서 하나 더 추가되었습니다.
  2. 앱스토어에는 Validate(유효성 검사)를 하지만 엔터프라이즈 계정의 앱은 이 과정은 필요없습니다.
    [Distribute] 버튼을 누릅니다.
  3. 아래 그림과 같이 배포방식을 선택합니다.
    “Save for Enterprise or Ad-Hoc Deployment” 선택하고 [Next] 버튼을 누릅니다.
  4. 배포용 인증서를 선택하고 [Export] 버튼을 누릅니다.
  5. 저장할 ipa파일의 이름을 짓고 [Save] 버튼을 눌러 저장합니다.
    아래 그림과 같이 ipa파일이 만들어졌습니다.

관리자 APP 설정하기

ipa파일이 만들어졌으니 관리자에서 ipa파일을 업로드하고 웹사이트에서 설치할 수 있도록 설정해야합니다.

  1. 관리자에서 [앱 관리 > 고객 APP 관리 > 기본 환경설정]메뉴로 이동합니다.
  2. “배포용 패키지 파일 등록” 섹션에서 ipa파일을 넣고, 아래 그림과 같이 입력항목을 입력합니다.
  3. “기타설정”섹션에서 “앱설치 배너 설정”에서 “스마트폰으로 접속시 모바일웹 상단에 [앱설치 배너]를 삽입 합니다.”항목을 선택합니다.
  4. “디자인 관리”섹션에서 [앱설치 배너] 탭 버튼을 누릅니다.
  5. 아래 소스입력폼에는 빈 공간으로 되어있는데 샘플 디자인으로부터 “기본(배너형)”으로 소스를 가져옵니다.
  6. 모든 설정을 끝냈으면 [수정(모두저장)] 버튼을 눌러서 적용합니다.

앱 설치 테스트

마지막으로 앱 설치가 되는지 확인하도록 합니다.

  1. 개발자용으로 설치되어있는 앱은 삭제합니다. (중복설치문제)
  2. iOS 디바이스 브라우저를 열어서 작업 사이트로 접속합니다. 사이트가 나오면서 아래 그림과 같이 상단 다운로드 배너가 나와있습니다.
  3. [앱 다운로드하기] 버튼을 터치합니다.
    APP을 설치할거냐고 물어봅니다. [설치] 버튼을 누르면 앱이 설치됩니다.

(번외) 다른 컴퓨터에서 개발하기

만약 다른 컴퓨터에서 개발하게 되는 상황이 올수도 있고, 작업하던 컴퓨터을 포맷해야하는 경우도 올 수 있습니다. 다른 부분에서는 큰 문제는 없지만 인증서에서 신경써줘야 하는 부분이 있습니다.

앱 개발을 하게되면 가장먼저 하는일은 인증서를 발급받고 개발작업에 들어가는데 새로운 기존 개발환경의 인증서를 계속 유지할 수 있는 방법이 있습니다.
만약 인증서 관리 사이트에 인증서가 등록되어있는 상태일때 이 문서의 인증서 등록과정을 그대로 따라하다 인증서 이름이 똑같아서 만들어져있는 기존 인증서를 삭제한다면 기존 인증서를 이용하여 앱 개발한것들이 작동을 안할수도 있습니다.
그래서 인증서는 새로 등록하지않고 그대로 사용하는것이 좋습니다.

그 방법에 대해서 지금부터 알아보겠습니다.

인증서 파일 내보내기 (Export)

기존 인증서가 등록되어있는 컴퓨터에서 인증서 파일을 저장하는 작업을 합니다.

  1. [키체인 접근] 프로그램을 엽니다.
  2. 키체인 인증서 목록에서 개발과 관련된 인증서 파일을 선택합니다.

    선택한 인증서는 Worldwide Developer Relations Certificate Authority, iPhone Developer, iPhone Distribution 세가지가 기본적으로 필요하지만 APN 인증서도 사용하면 푸시 서비스에 관련된 인증서도 같이 선택합니다.

    위의 그림과 같이 APN에 관련된 인증서 이름은 iOS Push Service 라는 문구가 들어있습니다.

    인증서를 선택하고 아래 그림과 같이 내보내기 메뉴를 선택합니다.
  3. 파일이름을 정하고, 저장할 위치를 지정합니다. 파일 확장자는 p12입니다.
    [저장]버튼을 눌러 다음으로 넘어갑니다.
  4. 아래 그림과 같이 사용자 패스워드를 정합니다. 필수항목은 아니며 보안문제 때문에 비밀번호를 지정하는것입니다.
    [승인]버튼을 눌러 다음으로 넘어갑니다.
  5. 현재 pc 암호를 넣어줍니다. [허용] 버튼을 누르면 파일이 저장됩니다.

인증서 파일 가져오기 (import)

인증서가 들어있는 파일(p12)을 만들었으면 그 파일을 작업할 컴퓨터에 설치하는 작업을 합니다.

  1. 인증서 파일(p12)을 설치할 컴퓨터로 이동합니다.
  2. 인증서 파일을 실행하거나 키체인 접근 프로그램 화면으로 드래그를 하여 넣습니다.
  3. 인증서 목록을 확인해보면 “인증서 내보내기” 과정에서 내보낸 인증서들이 보입니다.
    개발용 프로비저닝을 설치하고 바로 앱 개발작업을 시작할 수 있습니다.
top