본문으로 건너뛰기

스토어 (store)

Thumbnail Image

🚀 추가된 버전 : SDKSDKv1.6.0 AndroidAndroidv1.6.0 iOSiOSv1.6.0 🔔 최신화 일자: 2026-07-15

개요

store 네임스페이스는 앱스토어 및 플레이스토어 인터랙션 기능을 제공합니다.

  • 앱 스토어 페이지 열기
  • 스토어 내 리뷰 요청 페이지 이동
  • 네이티브 인앱 리뷰 팝업 호출

모바일 앱 또는 모바일 웹 환경에서 앱 인게이지먼트 향상에 유용합니다.

활용 팁
  • 사용자 피드백 유도: 중요한 작업 완료 직후 requestReview() 호출로 자연스럽게 리뷰 요청 가능
  • 앱 설치 유도: 웹페이지에서 openStore() 호출로 바로 다운로드 페이지로 이동
  • 리뷰 리마인더: 앱을 일정 기간 사용한 사용자 대상으로 재방문 시 openReviewInStore() 호출

타입 정의

StoreInfo

export declare type StoreInfo =
| {
androidAppId: string;
iOSAppId?: string;
}
| {
androidAppId?: string;
iOSAppId: string;
};
속성명타입필수 여부설명
androidAppIdstring조건부 (Android)Google Play Store의 앱 ID (패키지 이름)
iOSAppIdstring조건부 (iOS)Apple App Store의 앱 ID (Apple App Store Connect에서 확인)
스토어 ID 확인법

구글 플레이스토어와 앱스토어에서의 앱 ID를 확인하기 어렵다면 아래 문서를 참고해보세요.

➡️ 스토어 앱 ID 확인하기


메서드 목록

메서드설명추가된 버전
openStore(storeInfo)OS에 맞는 앱 스토어 설치/다운로드 페이지를 엽니다.SDKSDKv1.6.0
openReviewInStore(storeInfo)앱 스토어 내 리뷰 작성 화면으로 이동합니다.SDKSDKv1.6.0
requestReview()네이티브 인앱 리뷰 팝업을 호출합니다.SDKSDKv1.6.0
getStoreCountryCode()앱 스토어의 국가 코드를 조회합니다.SDKSDKv1.11.0

메서드 상세

openStore(storeInfo)

타입 정의

function openStore(storeInfo: StoreInfo): void;

설명

정보

스토어 출시가 완료된 후 사용이 가능합니다.

현재 플랫폼에 따라 Google Play 또는 Apple App Store의 앱 상세 페이지를 엽니다.
Web 환경에서는 OS에 따라 각각 적절한 스토어 페이지로 이동합니다.

지원 플랫폼

openStore 메서드는 App과 Web 모든 환경을 지원합니다.

플랫폼지원 여부비고
Android스토어 내 앱 상세 페이지로 이동
iOS스토어 내 앱 상세 페이지로 이동
Web디바이스의 OS에 맞는 스토어 상세 페이지로 이동

매개변수

이름타입필수 여부설명
storeInfoStoreInfoAndroid 앱의 앱 ID, Apple 앱스토어의 앱 ID를 포함하는 스토어 정보
  • storeInfo.androidAppId: Google Play Store의 앱 ID (앱의 패키지 이름)
  • storeInfo.iOSAppId: Apple App Store의 앱 ID (Apple App Store Connect에서 확인 가능)
주의

Android에서는 androidAppId,
iOS에서는 iOSAppId가 활용되기에
최소한 하나의 App ID를 포함해야 합니다.

스토어 ID 확인법

구글 플레이스토어와 앱스토어에서의 앱 ID를 확인하기 어렵다면 아래 문서를 참고해보세요.

➡️ 스토어 앱 ID 확인하기

예제

노트

예제에서는 출시된 nachocode developer 앱의 정보를 활용하였습니다.

  • Android App ID : com.nachocode.developer
  • iOS App ID : 6514317160

실사용시에는 적절한 값으로 수정이 필요합니다.

  • Android 앱만 출시되어 있을 경우
Nachocode.store.openStore({ androidAppId: 'com.nachocode.developer' });
  • iOS 앱만 출시되어 있을 경우
Nachocode.store.openStore({ iOSAppId: '6514317160' });
  • Android, iOS 앱 둘 다 출시되어 있을 경우
Nachocode.store.openStore({
androidAppId: 'com.nachocode.developer', // Android 앱 패키지명
iOSAppId: '6514317160', // iOS Apple 앱 ID
});

openReviewInStore(storeInfo)

타입 정의

function openReviewInStore(storeInfo: StoreInfo): void;

설명

주의사항

해당 메서드는 스토어 출시가 완료된 후 사용이 가능합니다.

사용자를 스토어 내 리뷰 작성 페이지로 직접 연결합니다.

Android의 경우 직접적으로 리뷰 작성 페이지로 연결할 수는 없습니다.
스토어 내 앱 상세 페이지로 유도해 간접적으로 리뷰 작성을 요청할 수 있습니다.

아래와 같이 플랫폼에 따라 다르게 동작합니다.

  • iOS : 앱스토어 리뷰 화면을 연동합니다.
  • Android, Web : 스토어 내 앱 상세 페이지를 엽니다.

지원 플랫폼

openReviewInStore 메서드는 App, Web 모든 환경을 지원합니다.

플랫폼지원 여부비고
Android스토어 내 앱 상세 페이지로 이동
iOS앱스토어 리뷰 화면으로 이동
Web디바이스의 OS에 맞는 스토어 상세 페이지로 이동

매개변수

이름타입필수 여부설명
storeInfoStoreInfoAndroid 앱의 앱 ID, Apple 앱스토어의 앱 ID를 포함하는 스토어 정보
  • storeInfo.androidAppId: Google Play Store의 앱 ID (앱의 패키지 이름)
  • storeInfo.iOSAppId: Apple App Store의 앱 ID (Apple App Store Connect에서 확인 가능)
주의

Android에서는 androidAppId,
iOS에서는 iOSAppId가 활용되기에
최소한 하나의 App ID를 포함해야 합니다.

스토어 ID 확인법

구글 플레이스토어와 앱스토어에서의 앱 ID를 확인하기 어렵다면 아래 문서를 참고해보세요.

➡️ 스토어 앱 ID 확인하기

예제

노트

예제에서는 출시된 nachocode developer 앱의 정보를 활용하였습니다.

  • Android App ID : com.nachocode.developer
  • iOS App ID : 6514317160

실사용시에는 적절한 값으로 수정이 필요합니다.

  • Android 앱만 출시되어 있을 경우
Nachocode.store.openReviewInStore({ androidAppId: 'com.nachocode.developer' });
  • iOS 앱만 출시되어 있을 경우
Nachocode.store.openReviewInStore({ iOSAppId: '6514317160' });
  • Android, iOS 앱 둘 다 출시되어 있을 경우
// Android 또는 Web에서는 스토어 내 앱 상세 페이지가 열림
Nachocode.store.openReviewInStore({
androidAppId: 'com.nachocode.developer', // Android 앱 패키지명
iOSAppId: '6514317160', // iOS Apple 앱 ID
});

requestReview()

타입 정의

function requestReview(): void;

설명

주의

인앱 리뷰 요청은 운영체제(OS) 정책에 따라 제한될 수 있습니다.
자세한 내용은 첨부된 공식 문서를 참고해 주세요.

앱 내에서 네이티브 리뷰 요청 팝업(UI)을 호출합니다.
리뷰 요청 다이얼로그는 항상 표시되지는 않으며 OS 내부 로직에 따라 노출됩니다.

  • 최근에 리뷰 요청이 없었는가
    • 스토어에서는 과도한 리뷰 요청을 막기위해 리뷰 대화상자를 표시할 수 있는 빈도에 관한 시간제한 할당량을 적용합니다.
    • 이 할당량으로 인해 짧은 기간(ex. 1개월 미만) 메서드를 두 번 이상 호출할 경우 대화상자가 표시되지 않을 수도 있습니다.
  • 사용자가 충분히 긴 사용 시간을 가졌는가
    • 사용자가 앱을 충분히 사용해 유용한 의견을 제공할 수 있을 때 인앱 리뷰를 트리거합니다.
  • 앱이 스토어에서 설치되었는가
    • 스토어를 통해 설치된 앱에서만 해당 기능을 사용할 수 있습니다.
    • 테스트 트랙이거나 TestFlight에서는 리뷰 팝업이 노출되지 않습니다.

지원 플랫폼

requestReview 메서드는 Android 및 iOS 네이티브 앱 환경에 대응하며, Web에서는 동작하지 않습니다.

플랫폼지원 여부비고
AndroidOS 내부 로직에 따라 인앱 리뷰 요청을 노출합니다.
iOSOS 내부 로직에 따라 인앱 리뷰 요청을 노출합니다.
Web지원하지 않습니다.

반환 값

해당 메서드는 반환 값을 가지지 않습니다.
사용자의 리뷰 팝업에서의 상호작용 결과는 OS 정책 상 알 수 없습니다.

예제

// 네이티브 인앱 리뷰 창 호출
Nachocode.store.requestReview();

getStoreCountryCode()

타입 정의

function getStoreCountryCode(): Promise<GetStoreCountryCodeResult>;
export declare type GetStoreCountryCodeSuccessResult = {
status: 'success';
statusCode: 200;
message: string;
/**
* 국가 코드 (alpha-3 형식, ex. "KOR")
*/
data: string;
};

export declare type GetStoreCountryCodeErrorResult = {
status: 'error';
statusCode: 400 | 500;
message: string;
errorCode?: string;
};

export declare type GetStoreCountryCodeResult =
| GetStoreCountryCodeSuccessResult
| GetStoreCountryCodeErrorResult;

설명

현재 디바이스의 앱 스토어 기반 국가 코드를 조회합니다.
국가 코드는 ISO 3166-1 alpha-3 형식으로 반환됩니다 (ex. "KOR", "USA", "JPN").

이 메서드를 활용하여 지역별 맞춤 콘텐츠 제공이나 국가별 기능 제어 등을 구현할 수 있습니다.

지원 플랫폼

getStoreCountryCode 메서드는 App 환경만 지원합니다.

플랫폼지원 여부비고
Android플레이스토어 BillingConfig 기반 국가 코드
iOS앱 스토어 Storefront 기반 국가 코드
Web지원하지 않습니다.

반환 값

Promise<GetStoreCountryCodeResult>를 반환합니다.

  • 성공 시: data 필드에 국가 코드 문자열 포함
  • 실패 시: message 필드에 오류 메시지 포함

예제

// 스토어 국가 코드 조회
const result = await Nachocode.store.getStoreCountryCode();

if (result.status === 'success') {
console.log('국가 코드:', result.data); // ex. "KOR", "USA", "JPN"

// 국가별 맞춤 콘텐츠 제공
switch (result.data) {
case 'KOR':
// 한국 사용자를 위한 콘텐츠 표시
break;
case 'USA':
// 미국 사용자를 위한 콘텐츠 표시
break;
case 'JPN':
// 일본 사용자를 위한 콘텐츠 표시
break;
default:
// 기본 콘텐츠 표시
}
} else {
console.error('국가 코드 조회 실패:', result.message);
}
// 특정 국가에서만 기능 활성화
const result = await Nachocode.store.getStoreCountryCode();

if (result.status === 'success') {
const allowedCountries = ['KOR', 'USA', 'JPN'];

if (allowedCountries.includes(result.data)) {
// 특정 국가에서만 사용 가능한 기능 활성화
} else {
// 다른 국가에서는 기본 기능만 제공
}
}