찐 어플을 출시한지 어느덧 5일 정도 지났다.
내가 맡은 기능에서 출시 이전까지 더 많은 것들을 구현하지 못한 점이 여전히 아쉽지만 그럼에도 불구하고 앱 스토어에서 어플이 검색된다는 점만으로도 신기하다.
5주(기획 1주, 제작 4주) 가량 걸린 이 프로젝트를 심사 넣을 때
처음 보는 자료들을 제출하게 되었다. 자세히 몰라도 되지 않을까 싶었지만 어떤 용도로 사용이 되는지 이해하지 못하고 있었기에 별도로 정리를 해본다.
배포 뿐만 아니라 자세히 모르는 키워드 / 데이터들도 있어 한번에 묶어서 정리하고자 한다!
가장 먼저 애플 디벨로퍼 프로그램 신청이다.
일정 비용을 지불하면 Apple에서 제공하는 signing Certificate를 요청 및 발급을 받을 수 있게 된다.
해당 인증서를 발급 받아야 앱 개발과 배포를 처리할 수 있는데, 함께 받는 데이터를 포함하면 3 종류가 된다. 인증서부터 profileProvision까지 있었는데, 각자 어떤 역할을 하는지, 왜 필요한지 등을 정리해보고자 한다!
이제는 알고 있지만 출시를 위해선 필수다!!
배포를 준비하면서 이해하지 못한 것 중 하나가 인증서였다.
개발 프로그램에 신청을 했고 unique bundle ID를 설정했다면 무사히 배포할 수 있어야 하는게 아닐까 싶었는데 아니였다.
공식 문서에 따르면 인증서는 2가지로 구분이 된다.
1. 개발(development)
2. 배포(distribution)
*macOS 또는 iOS에서 개발자 인증서를 확인해서 해당 개발자가 신뢰할만한 유저가 맞는지를 확인한다고 한다!
App Store에 등록되지 않은 파일의 경우, GateKeeper가 개발자 ID 인증서를 확인하고 허가를 내린다고~
개발 인증서는 iOS,macOS, tvOS와 watchOS 등의 어플을 등록한 기기에 실행/구동할 수 있도록 돕는다.
신기하게도 문서에 따르면 개발 인증서는 개인에게 귀속이 된다. iOS와 맥 개발을 위해 각각 2개의 개발 인증서를 생성할 수 있으며 구분을 지을 수 있도록 컴퓨터명이 개발 인증서 이름에 활용이 된다고 한다.
일종의 제한이 있다는 점에서 놀랐는데, 개발 인증서를 공유하거나 여러 기기에서 악용할 수 있는 점을 방지하기 위해 넣은 방향으로 보인다.
개발 인증서와 달리 배포 인증서는 팀에 귀속이 되며 팀 당 하나의 인증서 발급이 가능하다고 한다.
해당 인증서는 어플을 특정 기기에 배포하기 전, 테스트를 하거나 앱 스토어에 등록할 때 사용된다고 한다.
내가 이해하기로는 Bundle Identifier와 App Id로 구분되며 어플의 고유성을 구분하기 위한 데이터이다.
생각보다 많이 복잡하다!
예시) com.naver.어플이름
번들의 경우, 한가지 앱의 고유한 아이디와 비슷한 것 같다.
어플의 주민등록번호와 같은 셈.
이어 설명하겠지만, 기기별로 따로 구분이 필요하다.(iOS, macOS, watchOS 등)
동일한 identifier를 가진 어플을 만들 수 없다.
따라서 애플은 어플이 고유한 Identifier을 가지도록 개발자에게 reverse domain name notation (RDNN) 방식을 사용하도록 권장한다.
만일 한 어플을 다양한 기기들에 호환되도록 버전을 다르게 만든다면, bundle identifier는 변경이 되어야 한다고 한다.
아이폰용 - com.naver.어플이름.iOS
맥용 - com.naver.어플이름.macOS
App ID는 어플의 고유한 주민등록번호와 달리, 애플 시스템 자체에서 구분하기 위한 아이디다.
TeamID와 bundle Id search string으로 이루어 져있으며
bundle identifier과 겹치는 부분이 있어 헷갈리지만, 엄연히 다르다.
예시) jacklee123.com.naver.어플이름
[Team ID] + [bundle Identifier]
위 예시에서 jacklee123는 TeamID,
com.naver은 bundle Identifier,
어플이름은 bundle ID search String으로 구분할 수 있다.
한 가지 특이한 점은 App ID는 외부 ID(explicit App ID)와 wildCard App ID로 구분이 된다고 한다.
Explicit App Id는 하나의 어플을 명시할 때 사용하는 반면,
WildCard App Id는 하나의 bundle Identifier을 활용할 수 있도록 편의성을 강화시킨 것이다.
앞서 여러 기기를 지원할 경우 bundle Identifier을 새로 생성해야 한다고 했는데, wildcard App Id를 사용하면 하나의 bundle Identifier로 쉽게 처리할 수 있게 된다.
예시) Wildcard App ID
jacklee123.com.naver.어플이름.*
또는 jacklee123.com.naver.*
'*'를 활용해서 하나의 bundle Identifier로 iOS, macOS, watchOS를 지원할 수 있다.,
또는 하나의 AppID로 어플1, 어플2, 등등 여러 개의 어플을 만든다는 점을 구분 지을 수 있다.