본문 바로가기

이상/iOS

[iOS] 엔터프라이즈 배포

반응형

앱을 배포하는 방식에는 몇가지가 있는데 그 중 엔터프라이즈 배포에 대해 정리한다,

 

 

 

안드로이드는 .apk파일만 있으면 앱을 다운받을 수 있어 iOS보다 손쉽게 배포할 수 있다.

 

그래서 예전에 내가 안드로이드 스마트폰을 사용할 때 블랙마켓이나 블로그에서

 

.apk 파일만 다운받아서 앱을 설치해 사용하곤 했다.

 

 

하지만 iOS는 맥북에서 .ipa파일을 스마트폰에 직접 넣어 앱을 설치하는 경우를 제외하고

 

앱 설치파일인 .ipa 파일과 각종 정보가 담긴 .plist파일,

 

최소 이 두가지는 있어야 앱을 설치할 수 있으며

 

이 조차도 https://로 시작하는 SSL이 적용된 서버에서만 설치할 수 있다.

 

 

 

여기서 그럼 그냥 App Store로 배포하면 안되냐라고 할 수도 있는데

 

예전에 어떤 학교 내부용 앱을 앱스토어로 배포하려고 했었는데 그때 애플에서

 

너희 학교 학생들만 사용하는 앱이면 엔터프라이즈 계정을 만들어서 배포하는게 나을거야

 

이런 답변을 받아 많이 난처했었던 경험이 있다.

 

하긴 특정 사용자만 사용하는 앱이라면 굳이 모든 사용자가 접근 가능한 앱스토어에 올릴 필요가 없는게 맞는 것 같긴하다.

 

 

 

우선 iOS 앱 배포를 위한 과정이다.

(Ad-Hoc과 Development 등 다른 배포방법도 있지만

내가 생각하기에 이 두 가지 배포방법이 사용자 입장에서 가장 간편하다. )

 

iOS 앱 배포 과정

 

1. Archive

 

Build Target Device 선택란

 

Generic iOS Device 선택

 

Archive를 하기 전에 Build Target Device를 Generic iOS Device로 바꿔주고

 

command+shift+k를 눌러 Clean Build Folder 한다.

(상단 Product > Clean Build Folder)

 

그리고 상단 Product > Archive 클릭.

Clean Build Foler 후 Archive

 

Archive를 클릭하면 Build가 진행되며 Build가 끝나면 뭔가 새로운 창이 하나가 뜬다.

Archive

여기서 원하는 버전(빌드)를 선택하고 Distribute App 버튼을 클릭한다.

(App Store 배포일 경우 Validate App을 꼭 진행하자)

 

배포 방법 선택

Enterprise 선택

 

원하는 단말 선택

All compatible device variants 선택

 

Manifest에 들어갈 정보 입력

각 항목은 간단하게 

 

Name: 앱 이름이 들어갈 자리 (Display Name)

App URL: .ipa파일이 위치할 주소

Display Image URL: 앱 아이콘 파일이 위치할 주소

Full Size Image URL: Full-size 앱 아이콘 파일이 위치할 주소 

Name을 제외한 세 URL은 SSL이 적용된 서버여야한다.(https://로 접근)

 

이지만 추후에 .plist 파일에서 수정할 수 있으므로 Url은 https://블라블라/blah.ipa 이렇게 적어도 된다.

https://로 시작해서 .ipa로 끝나게끔만 적어주자.

 

Signing 방법 선택

 

Distribution 인증서가 정상적이라면 Automatically manage signing으로 진행

 

만약 여기서 Next를 눌렀는데 에러가 나면 개발자 계정이나 인증서에서 뭔가 잘못되어있을 확률이 높다.

 

 

 

2. Signing & Save

 

Archive에서 Distribute App을 진행하고 Signing 까지 완료되면 아래와 같이 결과를 보여준다.

 

Signing 완료

 

Export를 눌러 배포 파일들을 저장하고 저장된 폴더를 살펴보자.

 

저장된 디렉토리

여기서 우리가 필요한 파일은 manifest.plist와 앱이름.ipa 파일이다.

 

 

 

3. manifest.plist 작성

 

manifest.plist 파일을 열어보면 앱에 대한 많은 정보들이 들어있다.

 

그 중에 우리가 필요한 것은 <assets>, <metadata>이다.

 

assets에는 아까 https://로 시작하는 Url들의 정보가 들어있고

 

metadata에는 앱의 기본적인 정보(bundle ID, version, ...)가 들어있다.

 

manifest.plist

필요없는 thinned-assets를 지워주자.

 

manifest.plist

 

assets는 software-package부분(.ipa파일이 위치할 Url)만 제대로 입력해주면 되며,

 

나 같은 경우 아래 image들의 url은 https://로 바꿔준다.

 

Atom과 같은 텍스트 편집기 에서는 아래 소스를 복붙하여 사용하면 된다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>items</key>
    <array>
        <dict>
            <key>assets</key>
            <array>
                <dict>
                    <key>kind</key>
                    <string>software-package</string>
                    <key>url</key>
                    <string>https://앱설치Url.ipa</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>display-image</string>
                    <key>url</key>
                    <string>https://</string>
                </dict>
                <dict>
                    <key>kind</key>
                    <string>full-size-image</string>
                    <key>url</key>
                    <string>https://</string>
                </dict>
            </array>
            <key>metadata</key>
            <dict>
                <key>bundle-identifier</key>
                <string>[metadata 영역은]</string>
                <key>bundle-version</key>
                <string>[bundle-version 말고는]</string>
                <key>kind</key>
                <string>[딱히]</string>
                <key>platform-identifier</key>
                <string>[건드리지]</string>
                <key>title</key>
                <string>[않아도 된다.]</string>
            </dict>
        </dict>
    </array>
</dict>
</plist>
 
 
cs

 

 

이제 .plist파일과 .ipa파일을 manifest.plist에서 입력했던 https://앱설치Url 에 업로드하고

 

웹브라우저에서 https://앱설치Url/manifest.plist 로 접속하여 manifest.plist파일의 내용들이 잘 보이는지 확인한다.

 

 

 

4. (옵션).html 생성 및 개발자 신뢰 설정

 

.html 파일을 만들기 전에

Enterprise 배포 앱을 다운받게되는 과정을 간단하게라고 짚어보자.

 

앱 다운로드 페이지로 접속하면 해당 페이지에서 .plist를 실행하고

 

실행된 .plist에 정의된 .ipa 주소를 이용하여 앱을 다운로드 한다.

(.html 접속 -> .plist 실행 -> .ipa 실행)

 

 

 

만약 배포하려는 앱이 기존에 사용 중이던 앱일 경우에는 .html 파일을 건드릴 필요는 없지만

 

웹 개발자들도 iOS 앱 다운로드 기능에 대한 구현방법을 모르는 경우가 많았기 때문에 나는 .html 파일을 만들어서 주는 편이다.

 

간단하게 빈 페이지에 jquery를 이용하여 해당 화면이 load되면 a 태그를 실행하도록 구현하면 된다.

 

이정도 가이드만 해줘도 웹 개발자가 알아서 할 것이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!doctype html>
<html lang="ko">
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <script src="//code.jquery.com/jquery-3.3.1.min.js"></script>
        <a id="run_app_download" href="itms-services://?action=download-manifest&url=https://앱다운로드Url/manifest.plist"></a>
        <script type="text/javascript">
        $(document).ready(function(){
             $('#run_app_download')[0].click(function(){
             });
        });
        </script>
    </body>
</html>
 
 
cs

 

.html로 접속하면 링크의 Url을 통해 .plist를 실행하고, .plist에 작성된 Url을 통해 .ipa 파일에 접근하여

 

앱 다운로드 링크가 실행되며 아래와 같이 앱 다운로드 팝업이 호출된다.

 

앱 설치하겠습니까?

 

Install을 눌러 앱을 설치하고 실행하면 신뢰하지 않는 기업용 개발자라는 타이틀의 팝업이 뜨는데 이런 경우,

 

설정 -> 일반 > 기기관리 -> 해당 기업명 -> "기업명"을 신뢰함 버튼을 클릭하면 정상적으로 앱을 사용할 수 있다.

 

 

 

* 참고

- 앱 다운로드 페이지인 .html은 https가 아니어도 된다. (http 일 경우 ATS설정은 해줘야함)

- .plist, .ipa 파일의 이름은 상관X

- .plist, .ipa 파일에 접근 시, 프로토콜은 무조건 https

반응형

'이상 > iOS' 카테고리의 다른 글

[iOS] UITableView Swipe Actions  (0) 2020.07.14
[iOS] UITableView Editing Mode  (0) 2020.07.13
[iOS] CheckBox 만들기 with Delegate  (0) 2020.07.06
[iOS] UIScrollView(Vertical) 만들기  (0) 2020.06.18
[iOS] CustomView 사용하기  (0) 2020.06.16