Apple Developer Program 이용 가이드

개발자 프로그램에 등록하였다면 이제 자신의 아이폰(아이팟 터치)에 자신이 만든 어플을 올릴 수 있게 됩니다.

그런데 저는 무언가 간단한 작업이라고 생각했었는데 정말 복잡한 문제더군요.

우선 iPhone Dev Center에 방문하여 로그인을 해봅시다. 예전과는 조금 다른 화면을 보실 수 있습니다.
사용자 삽입 이미지Apple Developer Forums이라는게 보이는군요. 중요한 Program Portal이라는 것이 오른쪽에 보입니다.

그곳이 아이폰 개발관련 포털 서비스를 제공하는 곳입니다.

1. 개발자 추가 등록

그곳에서 바로 다른 개발자를 등록해 보도록 하겠습니다. Team이라는 메뉴로 들어갑니다.
사용자 삽입 이미지오른쪽의 Add Member를 클릭하면 사용자를 추가하는 창이 뜨게 됩니다.
사용자 삽입 이미지이름을 입력하고 Email에는 실제로 초대장이 날라갈 이메일 주소를 적어주시면 됩니다. Role에는 일반 멤버와 관리자를 정할 수 있습니다.

2. 인증서 등록

이번에는 인증서 등록을 위해 Certificates 메뉴로 들어가 봅시다. 아래의 그림에서 표시한 download now를 클릭하여 Apple Worldwide Developer Relations Certification Authority를 설치합시다.
사용자 삽입 이미지설치시에는 위의 그림과 같이 3가지 모두다 체크를 해줍시다.
사용자 삽입 이미지이제 개인 키페어를 생성하기 위해 유틸리티 – 키체인 접근 메뉴에 들어갑니다.
사용자 삽입 이미지키체인 접근 – 인증 지원 – 인증기관에서 인증서 요청메뉴에 들어갑니다.
사용자 삽입 이미지위와 같이 체크를 하여줍니다. 사용자 이메일 주소에는 Apple Developer Connection에 등록한 이메일을 공통 이름에는 맥의 내 계정에 등록한 이름으로 동일하게 작성해 줍니다.

CA 이메일 주소는 아무것도 쓰지 않습니다.
사용자 삽입 이미지키페어 정보는 위와같이 하시면 됩니다. 기본적으로 위와 같이 설정됩니다.
사용자 삽입 이미지위와 같이 하면 인증서 파일(공개키)이 생성됩니다. 이것을 Certificates 메뉴의 Request Certificate를 눌러 위와같은 화면이 뜨면 파일을 선택하여 등록하여 줍니다.
사용자 삽입 이미지등록이 되면 ActionApprove가 뜹니다. 그것을 눌러줍니다.
사용자 삽입 이미지위의 그림과 같이 Download버튼이 생겨납니다. 해당 버튼을 누르면 생성된 나만을 위한 인증서를 다운받을 수 있습니다.
사용자 삽입 이미지다운받은 인증서를 추가합니다. 키체인에는 로그인만 있으면 됩니다.
사용자 삽입 이미지잘 추가되었군요. iPhone Developer : 이름이 추가되어있으면 정상적으로 된것입니다.

3. Device 등록

이제 XCode에서 Organizer를 띄웁니다. 연결했던 나의 아이팟 정보가 뜨게 됩니다. 선택해 봅시다.
사용자 삽입 이미지위와 같이 Identifier에 40자리의 Hex 코드가 있습니다. 그것을 복사합니다.
사용자 삽입 이미지Device 메뉴에 들어가서 Add Devices를 클릭합니다. 위와 같은 화면에서 디바이스의 명칭을 정하고 Device ID에는 아까 복사한 40자리 코드를 붙여넣기 합니다.

4. App ID 등록

이제 App ID를 등록할 차례입니다. 이곳에서 많은 분들이 헤매시고, 저역시고 헤매었고; 어려운 부분입니다.
사용자 삽입 이미지App ID Name에는 그냥 Program Portal에서 사용하는 식별자라고 생각하시면 됩니다. 별 의미 없으니 뒤의 Identifier에 지정할 내용의 별칭을 지정해 주시면 됩니다.

뒤의 App ID가 조금 중요한 부분인데, Bundle Seed IDBundle Identifier를 합쳐서 App ID가 되게 됩니다.

Bundle Seed ID는 자동 생성 되는것이므로 신경 쓰지 마시고 Bundle Identifier가 중요한데요.

보통은 도메인을 뒤집어 사용합니다. apple.com의 경우 com.apple.*을 사용하게 됩니다.

이는 com.apple 이하의 모든 Bundle Identifier를 허가한다는 뜻입니다. 이런 설정이 귀찮으시다면 *하나만 달랑 써주시면 어떤 경로던지 허가가 되게 됩니다.
사용자 삽입 이미지등록이 완료된 모습입니다. ID에 보면 XXXXXX.com.apple.* 과 같이 등록된 것을 알 수 있습니다.

여기서 중요한것은 어플리케이션을 만들때 앞의 XXXXXX부분의 코드를 사용하지 않는다는 것입니다.

5. Provisioning 등록
사용자 삽입 이미지이제 Provisioning을 설정할 때입니다. 공급쯤으로 이해하면 될까요?

Profile Name을 정하고 자신에게 해당하는 인증서와 생성해둔 App ID 및 등록했던 Device를 선택합니다.
사용자 삽입 이미지이제 거의 마무리 단계군요. 이제 지금까지 생성했던 나의 계정 + 인증서 + 디바이스 + App ID가 모두 짬뽕된 Provisioning Profile을 다운 받을 수 있습니다.
사용자 삽입 이미지이 다운 받은 파일을 Organizer 창의 Provisioning 부분에 드래그하여 끌어다 놓습니다.

6. 내 아이폰(아이팟 터치)에 프로그램 올려보기

사용자 삽입 이미지XCode에서 보시다 시피 왼쪽 위의 창을 Device로 바꿔 줍니다. 그리고 Group&Files창의 프로젝트명을 선택한 상태에서 오른쪽 위의 Info를 클릭합니다.
사용자 삽입 이미지Build탭에서 Code Signing Identity의 하위 메뉴인 Any iPhone OS Device에서 내가 등록한 Provisioning Profile을 선택합니다.
사용자 삽입 이미지Info.plist 파일을 열어 Bundle identifier부분을 App ID에서 등록했던 내용으로 수정하여 줍니다.

App IDXXXXXX.com.apple.* 이었다면 com.apple로 시작하는 어떤 값의 Identifier도 가능하다는 뜻입니다.

위의 값으로는 com.apple.${PRODUCT_NAME:identifier} 로 하면 자동으로 com.apple.HelloWorld(프로젝트명) 가 사용되게 됩니다.
사용자 삽입 이미지참고로 위의 창을 띄우기 위해서는 Targets안의 내 프로젝트 명을 더블 클릭하여도 됩니다.

이제 마지막으로 실행을 위해 Build&Go를 클릭하면 내 디바이스에 업로드 되어 실행되는 것을 볼 수 있습니다.

* 마치며

위와 같은 과정을 거쳤음에도 인증 문제를 만나는 경우가 있었습니다.

보통은 App ID와 프로젝트의 Bundle Identifier가 불일치 해서 오는 문제였으며 이 문제는 인증서 부분과 App ID등록 부분을 잘 해보면 해결이 되는 문제입니다.

하지만 모든것이 완벽하여 XCode상에서 에러가 발생하지 않지만 인증 문제를 내뱉는 경우가 있습니다.

이때는 공장초기화를 해주고 아이튠즈에 다시 싱크를 해주니 잘 되더군요. 최악의 경우에는 초기화를 해보시기 바랍니다.

새로운 개발자를 등록하였다면 어떻게 해야 할까요?

위의 과정에서 1, 2, 3, 5를 반복하여 Provisioning Profile을 생성해 주면 됩니다.

App ID를 아무래도 같은 팀이라면 공유하는게 좋겠죠.

  • 흔치 않은 글인데 잘 읽었습니다. ^^

    • 아이

      맥의 경이로운 캡춰 기능에 경의를 표하는 바입니다.
      윈도에서 저런 캡춰해가며 만들려면…ㄷㄷㄷ

  • 잘봤어요 아이님

    • 박스농사

      ㅎㅎㅎㅎ

  • jcsheart

    아주 도움이 많이 됐습니다. 감사합니다~

  • ddolssi

    감사 합니다

  • 많은 도움을 받았습니다. 친절한 설명 감사합니다. 제가 하면서 안 되었던 점은 마지막에 설명하신 부분에서 App IDs Bundle identifier였는데요.

    – XXXXXX.com.apple.* 에서 자신의 도메인 kr.co.tohappy.* 를 사용하니 * 가 붙으니 Unavailable 상태로 등록이 된다는 점입니다. (비활성화 인데 생성이 되는 것이 이상합니다.)
    – 문제 해결이 안되서 현재는 그냥 XXXXX.ProjectName 으로 고정해서 사용 중입니다.

    따라서 * 없이 등록 할 경우 Xcode에서 Bundle identifier 등록 시 ${PRODUCT_NAME:identifier} 에 픽스된 이름을 적어주고 있습니다.

    또 APP IDs 등록 시 잘못 입력한 오타 + 테스트 IDs는 모두 Remove가 지원되지 않는군요. 그런 의미에서
    – App ID Name 는 의미있는 Unique한 값으로 하는 것이 중요한 것 같습니다. (중복을 허용하고 있어 매번 혼동이 발생하고 있습니다.)

    마지막으로 XCode > Project의 GetInfo> Code Signing Identity 이 자동으로 활성화 되어 있지는 않더군요.
    키체인에 등록한 이름과 동일한 값 “iPhone Developer: Gildong Hong” 와 같이 FullName으로 입력을 해주고 Xcode를 재 실행해 주면 비로서 연결이 되는 것을 확인 했습니다.

    • 아이

      *를 붙일수 없다는것은 조금 이상한것 같습니다. 혹시나 정책이 바뀌었나 하고 다시 Create App ID를 들어가 보니 역시나 설명에 *를 사용하도록 설명하고 있군요. App ID는 Remove가 없어서 신중을 기해야 하는것은 맞습니다. Code Signing Identity에 제대로 나오지 않는 경우에는 Organizer를 열어 Provisioning Profiles 이하에 에러난 혹은 느낌표 붙은 Provisioning을 삭제하고 다시 새로운 걸 거기로 끌어다 놓으면 새로 추가됩니다. 이때에 꼭 XCode를 재시작해야 적용되더군요. 아마도 재시작해야 제대로 나온다는 점에서 비슷한 처리가 아니었을까 생각되는군요^^

  • 도움을 받을 수 있을까 해서 캡쳐 이미지를 올려 드려 봅니다.
    http://img.skitch.com/20090528-qtqbr9s98575tnqcr2t5dxj2i6.jpg
    염치 없는 부탁이지만 직접 확인해 주실 수 있으면, 메일로 아이디/비번을 변경해서 알려 드려보겠습니다. (메일주소 부탁드립니다.) tohappy@gmail.com

    • 아이

      앗, 저말씀이셨군요, 저 옆의 Push Notification은 iPhone SDK 3.0부터 생긴 기능으로서 어플을 실행하지 않은 상태에서도 서버에서 어플로 데이터를 푸쉬할수 있는 서비스를 뜻합니다. 저 상태는 신경쓰지 않으셔도 괜찮습니다. 혹여나 SDK 3.0의 Push Notification을 사용하실것이라면 신경 쓰셔야 겠지만요.

  • 아 그러면 생성된 Bundle identifier 이 모두 정상적 이라는 말씀이네요?
    ㅜㅜㅜ 이런 삽질을…괜히 지저분해 지기만 했네요. (How to 에 Contact 이 있던데 그쪽으로 메일 보내서 지워 달라고 해 보는 건 어떨까요?) — 답변 감사합니다.

    • 아이

      네, 잘못되면 아예 저렇게까지도 등록 안되요, 모두 정상이라고 생각하시면 됩니다.

  • 박스농사

    좋은글 잘봤습니다^^

    그런데 테스트용도로 할려고 하는데
    서명인증이 만료되었다고 나오는데 이런경우는 어떻게 해야하나요?

    • 다시 서명을 하면 되지 않을까요?^^a

  • 마대리

    개발자 등록시 Team 으로 할 경우

    어떤 특징이 있나요?

    수익분배도 애플에서 자동적으로 해주나요?

    • Team으로 등록할수가 있나요? 어떻게 하는것인지 저도 모르는 부분이네요^^;

  • 황호연

    안녕하세요? 좋은 글 감사합니다. 저도 친구와 함께 아이폰 앱 개발 하고 있습니다.

    위 글에서 적어주신 내용보면 개발자 추가시 1,2,3,5를 다시 반복하면된다고 하셨습니다. 여기서 질문~!!!!

    1번 과정을 하면 추가된 개발자로 초대장이 날라간다 하셨는데, 그러면 초대장을 받은 개발자가 2,3,5번 과정을 자신이 개발할려는 맥에서 진행해야 하는건가요? 그리고 초대장에는 어떤 내용이 포함되어 있죠?

    즉, 제가 궁금한거는 기존 개발자(A)와 추가할 개발자(B)가 위 과정 중 어떤 부분을 나눠서 해야하는지 입니다.

    위에서 했던 질문을 다시하면 A가 1번하면 초대장을 받은 B가 2,3,5번 과정을 해야하는건가요? 저는 그렇게 이해했는데, 확인부탁드려요^^

    • 1은 Agent계정으로 하시고, 나머지는 해당 개발자가 직접 하시면 됩니다.
      맥에서 하셔야 하고요, 메일은 그냥 받아보시면 이해하고 할것도 없을것입니다. 결론적으로 이해하고 계시는 부분들이 모두 맞습니다.