Apps Kit SDK logoApps Kit SDK
개발자 문서 · Apps Kit SDK 포털

앱 관리

내 앱(대시보드)

내 앱(/ 또는 /apps)은 로그인 후 처음 표시되는 페이지로, 팀에서 관리하는 모든 앱을 한곳에서 확인할 수 있습니다.

1782302134914-MY_APPS_DASHBOARD_IMAGE.png

앱 테이블. 각 행에는 순번, 앱 아이콘(업로드한 아이콘이 없으면 문자 아바타)과 앱 이름 및 패키지/번들 ID, 지정된 브랜드, 스토어(iOS/Android/Amazon 플랫폼 아이콘), 현재 SDK 버전(정렬 가능), 기본 구성 상태 표시점(앱의 기본 구성이 생성되었으면 녹색 "추가됨", 그렇지 않으면 회색 "추가되지 않음"), 생성일(정렬 가능), 작업 열이 표시됩니다.

검색 및 필터링. 검색창에 입력하면 이름/패키지를 기준으로 즉시 필터링됩니다. 필터 바의 브랜드, 스토어, SDK 버전 드롭다운 필터를 검색과 함께 사용할 수 있습니다. 페이지 이동에는 테이블 내장 페이지네이션 대신, 페이지당 행 수 선택기와 ⟨ ‹ › ⟩ 탐색 버튼이 있는 사용자 지정 "총 Z개 중 X–Y 표시" 푸터를 사용합니다.

작업 메뉴. 각 행의 점 3개 메뉴에는 권한에 따라 수정, 복제, 삭제가 표시됩니다. 자세한 내용은 아래의 요금제 제한 및 공유 보기 권한 설명을 참고하세요.

요금제 제한 및 잠긴 앱. 구독 요금제에는 보유할 수 있는 앱 수의 상한(maxApps)이 있습니다. 요금제를 다운그레이드하는 등의 이유로 현재 앱 수가 상한을 초과하면, 페이지 상단에 "앱 한도를 초과했습니다 — X/Y개 앱 사용 중"이라는 황색 경고 배너가 표시됩니다. 배너에는 작은 진행률 표시줄과 구독 페이지로 연결되는 요금제 업그레이드 버튼도 표시됩니다.

1782302787888-MY_APPS_LOCKED_BANNER_IMAGE.png

한도를 초과해도 포털이 잠글 앱을 임의로 선택하지는 않습니다. 생성일 기준으로 가장 오래된 앱부터 요금제 한도만큼 사용할 수 있도록 유지하고, 그 이후에 생성된 앱은 모두 잠급니다. 잠긴 앱의 작업 메뉴는 제한된 형태로 바뀝니다. 점 3개 버튼을 클릭하면 "잠김" 헤더와 "이 앱은 요금제 한도를 초과했습니다. 앱을 삭제하여 사용 가능한 슬롯을 확보하세요"라는 설명만 표시됩니다. 삭제 권한이 있으면 빨간색 "앱 삭제" 옵션도 표시됩니다. 잠긴 행에서는 수정과 복제를 사용할 수 없습니다. 잠긴 앱에 다시 접근하려면 다른 앱을 삭제하여 슬롯을 확보하거나 요금제를 업그레이드해야 합니다.

생성 버튼. + 앱 생성 버튼은 요금제에 여유 슬롯이 있을 때만 클릭할 수 있습니다(canCreateApp()). 한도에 도달하면 버튼 대신 작은 사용량 표시("X/Y개 앱 사용 중")와 구독 페이지로 연결되는 "🔒 요금제 업그레이드" 링크가 표시됩니다.

공유/공동 작업자 보기. 계정을 전환했거나 공유 계정 컨텍스트에서 이 페이지를 보고 있다면(위의 계정 메뉴 참고), 테이블은 해당 계정에서 사용자에게 부여된 세부 권한을 추가로 조회하고(/rights/user-permissions 사용), 이를 기준으로 각 행의 수정/삭제/복제 기능을 제한합니다. 예를 들어 리소스 소유자가 부여한 권한에 따라 앱을 조회하고 수정할 수는 있지만 삭제할 수는 없을 수 있습니다.

새 앱 추가

+ 앱 생성을 클릭하면 화면 중앙에 세로형 모달로 앱 양식이 열리며, "생성" 모드로 표시됩니다.

1782302898843-CREATE_APP_MODAL_IMAGE.png

입력 필드:

  • 아이콘 — 선택 사항입니다. 상단의 큰 정사각형 업로드 영역에는 파일을 선택하기 전까지 "이미지 업로드"가 표시됩니다. 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를 선택하면 기본 주소인 https://apps.apple.com/이 자동 입력됩니다. 자동 입력 후에도 URL을 직접 수정할 수 있습니다. Google Play가 선택된 상태에서 패키지를 변경하면 자동 입력된 URL도 함께 갱신됩니다.
  • 브랜드 — 기존 브랜드를 선택하는 드롭다운입니다.

양식을 제출하면 앱 생성 엔드포인트가 호출됩니다. 생성된 앱에는 미디에이션 네트워크나 광고 단위가 설정되어 있지 않으며, 이후 앱 상세에서 설정해야 합니다. 취소를 클릭하면 저장하지 않고 모달을 닫습니다.

앱 수정 또는 복제(빠른 모달)

행의 작업 메뉴에서 수정을 선택하면 동일한 양식 컴포넌트가 "수정" 모드로 열립니다. 다만 생성 시의 세로 레이아웃과 달리, 아이콘(교체용 작은 연필 오버레이 버튼 포함), 이름, 읽기 전용 패키지 필드, 읽기 전용 URL 필드, 브랜드 드롭다운, 저장 버튼이 하나의 간결한 가로 행으로 배치됩니다. 앱이 생성되면 패키지와 URL은 영구적으로 읽기 전용이 됩니다. 즉, 생성 후에는 앱의 패키지 ID나 스토어 URL을 변경할 수 없으며 이름, 아이콘, 브랜드만 변경할 수 있습니다. 이 행의 수정 가능 여부는 canUpdate 권한 검사로 결정됩니다. 공유/공동 작업자 컨텍스트에서는 사용자에게 부여된 앱 정보 권한을 기준으로 검사합니다.

1782304075424-EDIT_APP_ROW_IMAGE.png

복제를 선택하면 원본 앱의 정보가 미리 입력된 생성 모드 양식이 별도로 열립니다. 원본과 충돌하지 않도록 패키지 이름 뒤에 .copy가 추가됩니다. 이름, 아이콘, 브랜드 등을 원하는 대로 조정한 뒤 완전히 새로운 앱으로 저장할 수 있습니다. 미디에이션, 광고 단위 및 기타 모든 앱 상세 설정은 복사되지 않으며, 복제된 앱은 새로 생성한 앱처럼 초기 상태에서 시작합니다.

앱 상세

내 앱 → 수정을 선택하거나 앱 행 자체를 클릭하여 앱을 열면 앱 상세로 이동합니다. 앱 상세는 포털에서 가장 복잡한 페이지로, 해당 앱의 실제 SDK 동작을 설정하는 곳입니다.

1782304315827-APP_DETAILS_OVERVIEW_IMAGE.png

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

1782306938946-APP_DETAILS_LIVE_DEV_TOGGLE_IMAGE.png

페이지 헤더에는 앱의 현재 구성 버전 번호, 변경 이력 링크(아래 참고), 구성 가져오기 버튼(아래 참고)도 표시됩니다. 일부 구성 UI와 아래에서 설명하는 지역 그룹 선택기는 앱이 보고한 SDK 버전이 특정 최소 버전 요건을 충족해야 표시됩니다. 포털은 일부 최신 기능에 최소 SDK 버전 조건을 적용하여, 이전 앱 빌드에서 실제로 사용할 수 없는 옵션이 표시되지 않도록 합니다.

페이지의 나머지 부분은 다음 순서의 펼칠 수 있는 섹션으로 구성됩니다.

앱 정보

이름, 패키지/번들 ID, 스토어, 아이콘, 지정된 브랜드 등 앱의 기본 정보입니다. 편의를 위해 앱 생성/수정 양식과 사실상 동일한 필드를 여기에 표시합니다.

1782307208052-APP_INFO_SECTION_IMAGE.png

미디에이션 선택

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

1782310845399-MEDIATION_SELECTION_IMAGE.png

광고 단위 추가

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

1782311592620-ADD_AD_UNITS_IMAGE.png

광고 플레이스홀더

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

1782311785860-AD_PLACEHOLDERS_IMAGE.png

광고 플레이스홀더별 광고 단위

한 축에는 플레이스홀더, 다른 축에는 광고 형식(전면 / 배너 / 네이티브 / 보상형)이 배치된 매핑 그리드입니다. 각 조합에 대해 위에서 추가한 광고 단위 중 해당 플레이스홀더에 사용할 광고 단위를 선택합니다.

이 그리드에는 실제 광고 네트워크의 광고 단위와 함께 크로스 프로모션도 선택 옵션으로 표시됩니다. 특정 플레이스홀더에 이 옵션을 선택하면 해당 슬롯에는 유료 네트워크 광고가 표시되지 않습니다. 대신 캠페인에서 설정한 다른 자사 앱의 크로스 프로모션 소재가 표시됩니다. 이 방식으로 캠페인 기능이 앱 내 실제 광고 게재위치와 연결됩니다.

1782367790413-AD_UNITS_FOR_PLACEHOLDERS_IMAGE.png

광고 표시 옵션

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

1782368043152-AD_DISPLAY_OPTIONS_IMAGE.png

MMP 선택

모바일 측정 파트너(MMP)를 연결합니다. Adjust, AppsFlyer, Firebase, Cost Center, Solar Engine 등을 선택할 수 있습니다. 광고 형식별로 광고 수익 보고를 켜거나 끄면, 광고 수익 이벤트를 설치 및 참여 데이터와 함께 어트리뷰션/분석 시스템으로 전달할 수 있습니다.

1782368201027-MMP_SELECTION_IMAGE.png

기능 프로모션

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

1782368590227-FEATURE_PROMOTION_IMAGE.png

설정

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

1782368745664-SETTINGS_SECTION_IMAGE.png

구성 가져오기

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

1782370741995-GET_CONFIGURATION_IMAGE.png

변경 이력

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

1782370885084-CHANGE_HISTORY_IMAGE.png

나와 공유됨

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

1782385376888-SHARED_WITH_ME_PAGE_IMAGE.png

여기에서 대기 중인 초대를 수락하거나 거절할 수 있습니다. 두 작업 모두 동일한 초대 처리 엔드포인트를 호출하며, 각각의 결정 값을 전달합니다. 초대를 수락하면 위에서 설명한 계정 전환 드롭다운에 초대한 사용자가 표시됩니다. 해당 계정으로 전환하여 부여받은 권한 범위 내에서 작업할 수 있습니다.

?invitationId= 쿼리 매개변수가 포함된 알림 링크로 이 페이지에 접근하면, 해당 행을 직접 찾을 필요 없이 페이지 로드 시 초대 대화상자가 자동으로 열립니다.

초대 대화상자. 이 모달의 상단에는 초대한 계정의 이메일이 알약 모양 라벨로 표시되며, 상태에 따라 헤더와 아이콘이 달라집니다. 대기 중인 초대에는 선물 아이콘, 이미 수락한 초대에는 체크 표시, 거절한 초대에는 X, 만료된 초대에는 시계 아이콘이 표시됩니다. 그 아래에는 스크롤 가능한 "리소스 N개에 대한 접근 권한" 목록이 있습니다. 각 행에는 앱 아이콘 플레이스홀더, 리소스 이름(예: "앱", "앱 정보"처럼 내부 권한 키를 표시용으로 변환한 이름), 해당 리소스에 부여될 권한(읽기 / 생성 / 수정 / 삭제)을 나타내는 오른쪽 정렬 배지가 표시됩니다. 초대에 만료일이 있으면 경고 문구로 안내합니다.

1782385507708-INVITATION_DIALOG_IMAGE.png

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