앱 관리
내 앱(My Apps) 대시보드
내 앱(/이 아닌 / 또는 /apps)은 로그인 후 처음 표시되는 페이지이자 팀에서 관리하는 모든 앱의 관리 허브입니다.

앱 테이블. 각 행에는 순번, 앱 아이콘(아이콘을 업로드하지 않은 경우 문자 아바타로 대체), 앱 이름과 패키지/번들 ID, 지정된 브랜드, 스토어(iOS/Android/Amazon 플랫폼 아이콘), 현재 SDK 버전(정렬 가능), 기본 설정 상태 표시점(앱의 기본 설정이 생성되었으면 녹색 "추가됨", 그렇지 않으면 회색 "추가되지 않음"), 생성일(정렬 가능), 작업 열이 표시됩니다.
검색 및 필터링. 검색창에 입력하면 이름/패키지를 기준으로 결과가 필터링됩니다. 필터 바에 있는 브랜드, 스토어, SDK 버전 드롭다운 필터를 검색과 함께 사용할 수 있습니다. 페이지네이션은 테이블 내장 페이저 대신 페이지당 행 수 선택기와 ⟨ ‹ › ⟩ 탐색 버튼이 포함된 사용자 지정 "총 Z개 중 X–Y 표시" 푸터로 제공됩니다.
작업 메뉴. 각 행의 점 3개 메뉴에는 권한에 따라 수정, 복제, 삭제가 표시됩니다(아래의 요금제 한도 및 공유 보기 권한 참조).
요금제 한도 및 잠긴 앱. 구독 요금제에 따라 보유할 수 있는 앱 수가 제한됩니다(maxApps). 예를 들어 요금제를 다운그레이드한 후 현재 앱 수가 한도를 초과하면 페이지 상단에 "앱 한도를 초과했습니다 — 앱 X/Y개 사용 중"이라는 주황색 경고 배너가 표시됩니다. 배너에는 작은 진행률 표시줄과 구독 페이지로 연결되는 요금제 업그레이드 버튼도 표시됩니다.

한도를 초과하더라도 포털이 잠글 앱을 임의로 선택하지는 않습니다. 생성일 기준으로 가장 오래된 앱부터 요금제 한도만큼 사용할 수 있도록 유지하고, 그 이후에 생성된 앱은 모두 잠급니다. 잠긴 앱의 작업 메뉴는 제한된 형태로 바뀝니다. 점 3개 버튼을 클릭하면 "이 앱은 요금제 한도를 초과했습니다. 삭제하여 여유 슬롯을 확보하세요"라는 설명이 포함된 "잠김" 헤더만 표시되며, 삭제 권한이 있는 경우 빨간색 "앱 삭제" 옵션도 표시됩니다. 잠긴 행에서는 수정과 복제를 사용할 수 없습니다. 잠긴 앱에 다시 액세스하려면 다른 앱을 삭제하여 여유 슬롯을 확보하거나 요금제를 업그레이드해야 합니다.
생성 버튼. + 앱 생성 버튼은 요금제 한도에 여유가 있을 때만 클릭할 수 있습니다(canCreateApp()). 한도에 도달하면 버튼 대신 작은 사용량 표시기("앱 X/Y개 사용 중")와 구독 페이지로 연결되는 "🔒 요금제 업그레이드" 링크가 표시됩니다.
공유/공동 작업자 보기. 다른 계정으로 전환했거나 공유 계정 컨텍스트에서 이 페이지를 보고 있는 경우(위의 계정 메뉴 참조), 테이블은 해당 계정에서 사용자에게 부여된 구체적인 권한도 추가로 가져와(/rights/user-permissions 사용) 각 행의 수정/삭제/복제 가능 여부를 결정합니다. 예를 들어 리소스 소유자가 부여한 권한에 따라 앱을 조회하고 수정할 수는 있지만 삭제할 수는 없을 수 있습니다.
새 앱 추가
+ 앱 생성을 클릭하면 화면 중앙에 세로형 모달로 "생성" 모드의 앱 양식이 열립니다.

필드:
- 아이콘 — 선택 사항입니다. 상단의 큰 정사각형 업로드 영역에는 파일을 선택할 때까지 "이미지 업로드"가 표시됩니다. JPEG, PNG, GIF 형식을 지원합니다.
- 스토어 — 필수 라디오 버튼 선택 항목입니다. Apple App Store, Google Play, Amazon App Store 중에서 선택합니다. 목록은 백엔드에서 동적으로 불러오며, 호출에 실패하면 이 세 가지를 기본 옵션으로 사용합니다.
- 이름 — 필수 항목이며, 4–70자여야 합니다.
- 패키지 / 번들 ID — 필수 항목이며,
com.으로 시작해야 합니다(com.*패턴으로 검증). - URL — 앱 생성 시 필수 항목입니다. 스토어로 Google Play를 선택하면
https://play.google.com/store/apps/details?id={package}가 자동 입력됩니다. Apple App Store를 선택하면 기본 URL인https://apps.apple.com/이 자동 입력됩니다. 자동 입력 후에도 URL을 직접 수정할 수 있으며, Google Play가 선택된 상태에서 패키지를 변경하면 자동 입력된 URL도 함께 업데이트됩니다. - 브랜드 — 기존 브랜드 목록을 보여 주는 드롭다운입니다.
양식을 제출하면 앱 생성 엔드포인트가 호출되며, 미디에이션 네트워크나 광고 단위가 설정되지 않은 상태로 앱이 생성됩니다. 이러한 설정은 다음 단계에서 앱 상세 페이지를 통해 구성합니다. 취소를 클릭하면 저장하지 않고 모달을 닫습니다.
앱 수정 또는 복제(빠른 모달)
행의 작업 메뉴에서 수정을 선택하면 동일한 양식 컴포넌트가 "수정" 모드로 열립니다. 다만 세로형 생성 레이아웃 대신 하나의 간결한 가로 행으로 표시되며, 아이콘(교체용 작은 연필 모양 오버레이 버튼 포함), 이름, 읽기 전용 패키지 필드, 읽기 전용 URL 필드, 브랜드 드롭다운, 저장 버튼으로 구성됩니다. 앱이 생성되면 패키지와 URL은 영구적으로 읽기 전용이 됩니다. 즉, 생성 후에는 앱의 패키지 ID나 스토어 URL을 변경할 수 없으며 이름, 아이콘, 브랜드만 변경할 수 있습니다. 이 행은 canUpdate 권한 검사에 따라 사용 가능 여부가 결정되며, 공유/공동 작업자 컨텍스트에서는 사용자에게 부여된 앱 정보 권한을 기준으로 합니다.

복제를 선택하면 원본 앱의 정보가 미리 입력된 생성 모드 양식이 새로 열립니다. 원본과 충돌하지 않도록 패키지 이름 뒤에 .copy가 붙습니다. 그런 다음 이름, 아이콘, 브랜드 등을 원하는 대로 수정하고 완전히 새로운 앱으로 저장할 수 있습니다. 미디에이션, 광고 단위 및 기타 모든 앱 상세 설정은 복사되지 않습니다. 복제된 앱은 새로 생성한 앱과 마찬가지로 초기 상태에서 시작합니다.
앱 상세
내 앱 → 수정을 선택하거나 앱 행 자체를 클릭하여 앱을 열면 앱 상세 페이지로 이동합니다. 포털에서 가장 복잡한 페이지이며, 해당 앱의 실제 SDK 동작을 설정하는 곳입니다.

Live 모드와 Dev 모드. 페이지 상단의 토글로 전체 페이지를 Live 설정과 Dev 설정 사이에서 전환할 수 있습니다. 아래의 모든 섹션(미디에이션, 광고 단위, 플레이스홀더, 표시 옵션, MMP, 기능 프로모션, 설정)은 모드별로 별도 구성되므로, 배포된 앱에서 현재 사용 중인 설정에 영향을 주지 않고 Dev에서 변경 사항을 준비하고 테스트할 수 있습니다. Live 설정을 Dev에 적용 및 Dev 설정을 Live에 적용 버튼을 사용하면 한 번의 작업으로 한 모드의 전체 설정을 다른 모드에 복사할 수 있습니다. 테스트를 마친 Dev 설정을 Live로 "승격"하거나, 새로운 항목을 테스트하기 전에 Dev를 Live와 동일한 상태로 초기화할 때 유용합니다.

페이지 헤더에는 앱의 현재 설정 버전 번호, 변경 이력 링크(아래 참조), 설정 가져오기 버튼(아래 참조)도 표시됩니다. 일부 설정 UI와 아래에서 설명하는 지역 그룹 선택기는 앱에서 보고한 SDK 버전이 특정 최소 버전 요건을 충족한 경우에만 표시됩니다. 포털은 일부 신규 기능에 최소 SDK 버전 제한을 적용하여, 이전 앱 빌드에서 실제로 사용할 수 없는 옵션이 표시되지 않도록 합니다.
페이지의 나머지 부분은 다음 순서의 펼칠 수 있는 섹션으로 구성됩니다.
앱 정보
앱의 기본 식별 정보인 이름, 패키지/번들 ID, 스토어, 아이콘, 지정된 브랜드를 표시합니다. 기본적으로 앱 생성/수정 양식과 동일한 필드를 편리하게 확인할 수 있도록 제공하는 섹션입니다.

미디에이션 선택
이 앱/모드에서 사용할 미디에이션 네트워크(예: 워터폴 방식의 네트워크 또는 AppLovin MAX)를 선택합니다. 이는 후속 설정을 위한 선행 조건입니다. 여기서 미디에이션 네트워크를 선택하기 전까지 아래의 광고 단위, 광고 플레이스홀더, 광고 플레이스홀더별 광고 단위 섹션은 잠긴 상태로 유지됩니다. 어떤 네트워크의 SDK와 광고 단위 형식을 기준으로 설정할지 먼저 결정해야 하기 때문입니다.

광고 단위 추가
미디에이션 네트워크에서 발급한 광고 단위 ID를 입력합니다. 앱 오프닝, 전면, 배너, 네이티브, 보상형 등 광고 형식별 탭으로 구성되어 있으며, 위에서 선택한 미디에이션 네트워크가 실제로 지원하는 형식만 탭으로 표시됩니다.

광고 플레이스홀더
이름이 있는 플레이스홀더를 정의합니다. 플레이스홀더는 앱이나 게임에서 광고를 표시할 수 있는 논리적 슬롯입니다(예: "레벨 완료", "메인 메뉴 배너"). 번호가 매겨진 그리드로 표시되며, 항목을 추가하거나 이름을 변경할 수 있습니다. 일반적으로 플레이스홀더 이름은 앱 소스 코드의 상수와 일치해야 하므로, 포털에서는 전체 플레이스홀더 목록을 Kotlin(.kt) enum 파일로 가져오거나 내보낼 수 있습니다. 이를 통해 직접 다시 입력하지 않고도 코드베이스와 포털 설정을 동기화할 수 있습니다.

광고 플레이스홀더별 광고 단위
한쪽 축에는 플레이스홀더, 다른 쪽 축에는 광고 형식(전면 / 배너 / 네이티브 / 보상형)이 배치된 매핑 그리드입니다. 각 조합에 대해 위에서 추가한 광고 단위 중 어떤 단위를 해당 플레이스홀더에 사용할지 선택합니다.
특히 이 그리드에는 실제 광고 네트워크의 광고 단위와 함께 크로스 프로모션도 선택 가능한 옵션으로 표시됩니다. 특정 플레이스홀더에 이 옵션을 선택하면 해당 슬롯에는 유료 네트워크 광고가 표시되지 않습니다. 대신 캠페인에서 설정한 다른 앱의 크로스 프로모션 소재가 표시됩니다. 이 메커니즘을 통해 캠페인 기능이 앱 내부의 실제 광고 게재 위치와 연결됩니다.

광고 표시 옵션
광고 형식별로 로딩 UX를 제어합니다. 광고를 가져오는 동안 로딩 다이얼로그나 시머 효과를 표시할지, 로딩을 중단하기 전까지 얼마나 기다릴지 타임아웃을 설정할 수 있습니다. 전면 광고에는 단순한 표시 타이밍 외에 추가 트리거 로직 옵션이 있습니다. 클릭 시, 일정 시간 간격마다, 두 조건을 조합하거나 앱 내 장면 전환을 기준으로 광고를 표시하도록 선택할 수 있습니다. 각 트리거 모드에는 시간 간격이나 클릭 횟수 등 조정 가능한 매개변수가 제공됩니다.

앱 플레이스홀더별 페이월
페이월 템플릿 기능에서 디자인한 페이월 템플릿을 이 앱의 플레이스홀더에 직접 매핑합니다. 그러면 앱이 페이월을 요청할 때 SDK가 어떤 페이월을 렌더링해야 하는지 알 수 있습니다. 자세한 내용은 이 가이드 뒤에 나오는 페이월 전용 섹션을 참조하세요.

최상위 활성화 토글로 이 앱의 해당 기능 전체를 켜거나 끌 수 있습니다. 활성화하면 각 행에서 하나의 페이월을 해당 페이월이 표시될 앱 플레이스홀더(앞서 광고 플레이스홀더에서 정의한 항목)와 연결합니다. 이름으로 페이월을 검색한 다음 + 플레이스홀더 추가를 사용하여 하나 이상의 플레이스홀더를 연결하세요. 연결된 각 플레이스홀더는 작은 개수 배지가 있는 삭제 가능한 칩으로 표시됩니다. 하나의 플레이스홀더는 한 번에 하나의 페이월에만 매핑할 수 있습니다. 다른 페이월에 할당하면 이전 페이월에서 자동으로 제거됩니다.
앱 상세의 다른 설정과 달리, 이 매핑은 페이지 상단에서 선택한 Live/Dev 모드에 엄격하게 종속되지 않습니다. 실제로 설치된 앱 자체에는 "Live" 또는 "Dev"라는 구분이 없습니다. 이 구분은 관리자가 설정을 사전 준비하기 편하도록 제공되는 기능일 뿐입니다. 따라서 어느 모드에서든 페이월을 플레이스홀더에 매핑하고 저장하면 실제 기기에서 해당 매핑을 조회하여 사용할 수 있습니다. 프로덕션에 반영하기 위해 다른 모드에서 같은 매핑을 다시 설정할 필요는 없습니다.
MMP 선택
모바일 측정 파트너(MMP)를 연결합니다. Adjust, AppsFlyer, Firebase, Cost Center, Solar Engine 등의 옵션을 사용할 수 있습니다. 광고 형식별로 광고 수익 보고를 켜거나 꺼서, 광고 수익 이벤트가 나머지 설치 및 사용자 참여 데이터와 함께 어트리뷰션/분석 스택으로 전달되도록 설정할 수 있습니다.

기능 프로모션
광고 네트워크와 관련 없는 인앱 프로모션 배너나 카드를 설정합니다. 예를 들어 자체 앱 UI에서 "새 기능 안내" 또는 "프리미엄 요금제 교차 판매"를 제공할 수 있습니다. 편집 가능한 이 테이블의 각 항목에는 제목, 유형, 키, 이미지, 사용자가 탭할 때 실행할 작업(예: 딥 링크 또는 인앱 이동 대상)이 포함됩니다.

설정
다른 섹션에 속하지 않는 기타 앱 수준 설정을 제공합니다. 디버깅용 콘솔 로그 활성화, 광고 이벤트 로깅 활성화, 로컬 알림의 허용 시간 오차, 앱의 개인정보 처리방침 및 서비스 이용약관 URL을 설정할 수 있습니다. 일부 광고 네트워크와 앱 스토어에서는 이러한 URL을 사용자에게 제공하도록 요구합니다.

설정 가져오기
설정 가져오기를 클릭하면 현재 활성 모드(Live 또는 Dev)에 대해 위에서 구성한 모든 내용을 나타내는 암호화된 설정 문자열이 생성됩니다. 앱 상세 헤더의 지역 선택기에서 지역 그룹을 선택한 경우, 생성된 링크/문자열에 해당 그룹의 ID가 쿼리 매개변수로 포함됩니다. 이를 통해 런타임에 가져오는 설정을 지역 그룹별로 다르게 적용할 수 있습니다. 포털은 이 문자열을 Firebase Remote Config의 매개변수 키 AKS_AND_LIVE로 게시하는 과정도 안내합니다. 포털 자체가 최종 사용자 기기에 설정을 직접 푸시하지 않으므로, 실제 서비스 중인 앱은 이 방식으로 런타임에 설정을 가져옵니다.

변경 이력
앱 설정을 저장할 때마다 새로운 설정 버전이 기록됩니다. 앱 상세의 링크를 통해 이동하는 전용 변경 이력 페이지에는 해당 앱의 모든 버전이 테이블로 표시됩니다. 테이블에는 순번, 설정 버전, 변경 내용 설명, 수정일, 수정자가 포함됩니다. 긴 설명은 내부적으로 파이프 문자로 구분되며 각각 별도의 줄로 표시됩니다. 처음 20자를 초과하는 부분은 잘리고 "더 보기 / 간략히 보기" 토글로 펼치거나 접을 수 있습니다. 상단의 날짜 범위 필터를 사용하면 특정 기간으로 목록을 좁힐 수 있습니다. 이를 통해 누가 언제 앱 설정을 변경했는지 기본적인 감사 이력을 확인할 수 있습니다.

나와 공유됨
다른 팀이 앱 공동 작업에 초대하고 사용자가 이를 수락하면, 공유된 리소스가 나와 공유됨(/SharedWithMe)에 표시됩니다. 이 페이지는 받은 초대 목록을 보여 주는 테이블이며, 소속 팀이 소유한 앱과 별도로 관리됩니다. 각 행에는 초대한 사람과 초대의 현재 상태가 표시됩니다.

여기서 대기 중인 초대를 수락하거나 거절할 수 있습니다. 두 작업 모두 해당 결정을 전달하여 동일한 초대 처리 엔드포인트를 호출합니다. 수락하면 위에서 설명한 계정 전환 드롭다운에 초대한 사람이 표시되므로, 해당 계정으로 전환하여 부여받은 권한 범위 내에서 작업할 수 있습니다.
?invitationId= 쿼리 매개변수가 포함된 알림 링크를 통해 이 페이지로 이동하면, 직접 행을 찾을 필요 없이 페이지 로드 시 초대 다이얼로그가 자동으로 열립니다.
초대 다이얼로그. 이 모달의 상단에는 초대한 계정의 이메일이 칩 형태로 표시되며, 상태에 따라 헤더와 아이콘이 달라집니다. 대기 중인 초대에는 선물 아이콘, 이미 수락한 초대에는 체크 표시, 거절한 초대에는 X, 만료된 초대에는 시계 아이콘이 표시됩니다. 그 아래에는 스크롤 가능한 "리소스 N개에 대한 액세스" 목록이 있습니다. 각 행에는 앱 아이콘 플레이스홀더, 리소스 이름(예: "앱", "앱 정보" — 내부 권한 키를 표시용으로 변환), 해당 리소스에 부여될 권한(읽기 / 생성 / 수정 / 삭제)을 나타내는 오른쪽 정렬 배지가 표시됩니다. 초대에 만료일이 있으면 이를 알리는 경고 문구도 표시됩니다.

푸터 버튼은 상태에 따라 달라집니다. 대기 중인 초대에는 **"나중에"**와 **"✓ 초대 수락"**이 표시됩니다. 이미 처리되었거나 만료된 초대에는 **"닫기"**만 표시되며, 설명 문구가 함께 제공됩니다. 예를 들어 만료된 초대에는 "{초대한 사람의 이메일}님에게 새 초대를 보내 달라고 요청하세요"와 같은 안내가 표시됩니다.