RSS

아이폰 앱스을 웹을 통하여 배포하는 방법

17 3월

1. 개요

iOS 4.0부터 웹에 올려져 있는 ipa(iPhone Archive) 파일을 모바일 사파리에서 접근하여 다운로드 및 설치가 가능해졌다. 본 문서는 Build and Archive한 배포본을 share하는 방법을 설명하기 위하여 제작되었다.

2. 프로세스

  • Build and Archive : 빌드해서 아카이브로 저장하기
  • Share: ipa에 signing해서 배포하기
  • Copy ipa and plist to web repository: 만든 ipa와 manifest파일을 웹에 올리기
  • Generate anchor tag: 링크 만들기

2-1. Build and Archive

Xcode에서 타겟을 Device로 놓고 in house 빌드를 위한 인증서를 연결한 다음 Build > Build and Archive를 선택한다. 이 메뉴가 활성화 되려면 Simulator가 아닌 Device로 세팅되어 있어야 한다.

빌드가 끝나도 아무런 변화가 없을 것이다. Window > Organizer 메뉴에 들어가 보면 다음과 같은 변화가 생긴 것을 확인 할 수 있다.

만들어진 빌드에 이름과 코멘트를 작성해서 훗날 다시 봤을 때 어떤 배포본이었는지 확인하기 쉽게 한다.

자 이제 Share… 버튼을 눌러서, 이 배포본을 공유해보자.

2-2. Share

Share… 버튼을 누르면 다음과 같은 팝업 윈도우가 뜬다. 여기서 Identity는 기존에 선택된 것을 그대로 두거나 상황에 맞게 선택한다.

우리는 전사에 웹을 통해 공유할 계획이므로 Distribute for Enterprise… 버튼을 누른다.

URL은 ipa파일이 최종적으로 위치하게 될 URL를 말한다. Title은 다운받을 때에 표시되는 이름을 정하기 위한 필드이다. 나머지는 선택사항이므로 빈공간으로 남겨둬도 무방하다.

OK를 누르고 생성될 파일명을 설정한 다음 Save한다.

그러면 *.ipa과 *.plist 두 개의 파일이 생성되는 것을 볼 수 있다.

다음은 이 파일을 웹의 저장 공간으로 복사하는 작업이 기다리고 있다.

2-3. Copy ipa and plist to web repository

파일을 웹이 접근가능한 곳으로 옮기는 방법은 수백만가지가 되겠지만 어떤 방법을 쓰던 상관없이 특정 폴더로 이동시키면 된다.

현재 CI서버는 Hudson을 사용하고 있으며, 빌드 결과에 대해서 userContent라는 폴더를 통해서 웹 접근을 허용해준다.  따라서, ci서버의 ~/.hudson/userContent/ 아래에 필요에 따라서 폴더를 추가하여 작업하면 되겠다.

예) ~/.hudson/userContent/BLAHBLAH/ 아래에 BLAHBLAH.ipa과BLAHBLAH.plist를 복사한다.

2-4. Generate Anchor tag

index.html 같은 링크를 담을 파일을 만들어서 아래와 같이 링크를 만든다.

<a href=”itms-services://?action=download-manifest&url=http://BLAHBLAH.COM:8080/userContent/BLAHBLAH/BLAHBLAH.plist”>BLAHBLAH</a>

3. 결론

이제 해당 URL를 공유하여 회사내에서 공유할 수 있게 되었다. CI서버에 빌드와 통합하면, 매번 빌드가 수행될 때마다 적절한 경로에서 최신의 배포본을 공유할 수 있다는 점에서 Best Practice가 될 수 있을 것이다.

Advertisements
 
 

태그: , ,

아이폰 앱스을 웹을 통하여 배포하는 방법”에 대한 24개의 응답

  1. xpirator

    2011년 3월 18일 at 3:52 오후

    excellent!

     
    • 최피디

      2011년 3월 18일 at 4:28 오후

      감격스런 첫 댓글이구만~!
      Thanks.

       
  2. andrew

    2011년 7월 22일 at 10:59 오전

    궁금한게 있어 이렇게 댓글 답니다

    지금 build하신게 in-house방식인가요?

    그럼 299$로 개발자를 등록해야 위에 방식이 가능한건가요?ㅠㅜ

     
  3. andrew

    2011년 7월 22일 at 11:01 오전

    지금 이 방식이 enterprise인가 299$짜리 개발자로 등록하고 in-house방식인가 하는 건가요?

    99$개발자로는 불가능 한건가요?

     
    • 최피디

      2011년 10월 26일 at 9:17 오전

      네 in-house build는 enterprise program에서만 가능합니다.

       
  4. 박상현

    2011년 10월 12일 at 9:58 오후

    적어 주신데로 했는데 설치하다가 다 설치가 안되네요!!
    ㅠ,ㅠ

     
    • 최피디

      2011년 10월 26일 at 9:16 오전

      저런~! 어디서 막힌거지용?

       
  5. 가을하늘

    2012년 1월 8일 at 12:00 오후

    php 서버에 올리고 배포하니까 안되는데요..

     
    • 최피디

      2012년 1월 11일 at 1:53 오후

      어디서 막혔는지 자세히 알려주시면 도움이 될 것 같습니다.

       
  6. 김장독

    2012년 3월 12일 at 3:47 오후

    좋은 정보 많이 얻습니다. 짱구 굴리는것 보다 질문이 나을것 같아 질문 좀 할게요.
    엔터프라이즈 계정으로 등록된 앱은 앱스토어에 등록 할 수 없는게 맞나요?
    그리고 한가지 더 질문 드릴게요. 작성하신 파트2 편을 보니 엔터프라이즈 계정 없이 웹 배포를 diawi.com 사이트를 통해 할 수 있다고 하셨는데 편리해 보이지만 이 사이트에 제 앱을 올리면 제 앱이 외부에 노출되는것 아닌가 궁금합니다. (사이트 관계자는 모든 앱들의 소스를 다 볼 수 있을 것 같은 느낌이들어서요).

     
    • 최피디

      2012년 3월 12일 at 4:34 오후

      1. enterprise program은 사내 배포용이기 때문에, 이걸 바로 appstore에 올릴 수는 없구요. appstore용으로 signing 해서 올릴 수 있습니다. 저희는 두 경우의 build configuration을 나눠서 관리하고 있습니다. 각각의 app identifier와 그에 matching하는 provisioning profile를 사용하게되는 것이지요.

      2. diawi.com 이나 testflight 같은 서비스를 이용해서 앱을 배포할 경우에, 암호등으로 제한을 걸 수는 있습니다만 암호가 노출 된 경우에는 막을 수 있는 방법이 없습니다. 서비스 내부 관계자들이 앱을 열어볼 수 는 있겠지요. 프로그램 소스를 다 볼 수 있는 것은 아니지요.

       
      • 김장독

        2012년 3월 15일 at 3:14 오후

        확인이 늦었습니다. 답변 매우 감사드립니다.
        항상 행복하시길 바랍니다.

         
  7. ㅠㅠ

    2012년 8월 22일 at 11:14 오전

    Appspresso관련 글을 보던중 궁금한 점이있는데요
    Appspresso에서 .ipa파일을 생성하거나 itunes를 통해서 test파일을 넣어보긴했는데 iPhone Distribution을 등록해놓고 이후 생성된 앱을 배포가 가능한가요? .ipa파일을 웹상에 올려놓거나해서 개발용으로 생성된 앱을 배포가능한지 궁금해서 질문드립니다.

     
    • 최피디

      2012년 8월 23일 at 9:22 오전

      production용 provisioning으로 빌드한 것을 배포하는 것은 불가능합니다. 하지만, 애플 개발자 프로그램 중에서 Enterprise Program이라고 있습니다. 년 299$이고 가입조건이 조금 까다롭습니다만 그 프로그램에 가입하시면, 기존의 개발자 프로그램에서는 불가능했던 production provisioning에서의 배포가 가능하게 됩니다.
      더 궁금하신 점 있으시면 알려주세요~!

       
  8. ㅠㅠ

    2012년 8월 23일 at 11:40 오전

    답변 감사합니다.
    그런데 Enterprise Program을 사용할 경우에도 배포 제한수가 500개로 제한되지 않나요? 보다 많은 사람들한테 배포하려는데 Appstore의 인증절차가 너무 까다로워서 다른루트를 이용해서 배포하려고 하고있거든요 (.ipa , OTA , QRcode , URL)등 여러가지로 방법을 모색해봤으나 이렇다할 방법이 없는것 같아서요 Enterprise Program을 사용할경우에 배포 갯수가 제한되지만 안는다면야 괜찮은 방법이라고 생각하는데요 답변 부탁드립니다.

     
    • 최피디

      2012년 8월 23일 at 1:35 오후

      Enterprise program에서 제한이 없는 것으로 알고 있습니다. 500명 이상의 회사이고 DUNS number를 제출해야 이 프로그램에 가입할 수 있습니다. 이 프로그램의 목적은 회사내의 그룹웨어용 앱이나 회사 자산으로 보호해야 하는 앱을 만들었을 경우 배포할 방법이 필요하기 때문에 허용하는 방식입니다.

      말씀하신 앱스토어를 통하지 않고 ‘대중에게 배포하는 것’은 enterprise program에서 금하고 있는 부분입니다. 설사 그런 식으로 할지라도 애플에서 계약위반으로 몰고 갈 수도 있을 것 같네요.

      Enterprise Program의 약관을 자세히 읽어보는게 필요할 것 같습니다.

       
      • 김지디

        2012년 10월 16일 at 2:41 오후

        이번 H3 컨퍼런스에선 사용된거같은데요. 애플과 논의가 된거겠죠? ㅋ
        엊제든 신기하게 이런 배포 방식이 있다는건 이번 컨퍼런스를 통해서 알게되었네요. ㄱㅅ

         
      • 최피디

        2012년 10월 18일 at 10:29 오후

        네, 저희도 앱스토어를 통해서 등록할 예정입니다. 🙂

         
  9. ㅠㅠ

    2012년 8월 23일 at 1:40 오후

    답변 감사합니다.
    확실히 배포가 가능 하다는건 알았으나, 배포후에 라이센스 위반이 문제겠군요
    그래도 좋은정보 얻고 갑니다.
    감사합니다.

     
  10. 더게임

    2013년 7월 12일 at 9:32 오전

    이 글을 보실지 모르겠지만 질문하나 드릴게요. 엔터프라이즈계정의 inHouse로 배포하려는데 apns가 안되네요….푸시가안옵니다. development는 잘오는데….inHouse도 설정하는데 큰 차이는없는건지 아니면있는지 아시면 댓글좀…..ㅠ

     
    • 최피디

      2013년 7월 12일 at 10:05 오전

      in house 역시 APNS에 차이가 없습니다.
      1. production용 인증서를 서버에 설치하고,
      2. production용 provisioning profile으로 iOS앱을 빌드한 다음에,
      3. iOS디바이스에서 device token를 받아 낸 다음, 그 것을 서버로 보내 기억하게 하고
      4. 서버에서 해당 device token 으로 apns를 보낸다.

      이렇게 하면 아마도 정상 작동 할 것입니다.

       
  11. 박수임

    2013년 12월 23일 at 9:53 오전

    질문이 있습니다.
    말씀해주신 대로 ipa,plist화일을 만들어 서버에 올렸습니다.
    아이폰에서 다운로드를 시도하면 다운로드 받다가 마지막 시점에 “응용 프로그램을 다운로드 할 수 없음”이라는 메시지를 띄우고, 재시도 할것인지 묻습니다.
    어떤 부분이 문제인지 잘 모르겠어서 이렇게 질문 드립니다. 답변 부탁드려요

     
    • 최피디

      2013년 12월 23일 at 1:01 오후

      계정이 엔터프라이즈 계정이 아니라면 테스트 단말의 UDID를 등록해줘야만 설치 및 테스트에 문제가 없습니다.

      서버쪽 문제는 없는지 확인도 필요합니다. 다운받은 파일의 체크섬을 확인해보세요.

       

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중

 
%d 블로거가 이것을 좋아합니다: