이 가이드에서는 Unity를 사용하여 앱에 인앱 리뷰를 통합하는 방법을 설명합니다. Kotlin 또는 자바를 사용하거나 네이티브 코드를 사용한다면 별도의 통합 가이드를 참고하세요.
Unity SDK 개요
Play In-App Review API는 Play Core SDK 제품군의 일부입니다. Unity용 API는 RequestReviewFlow
및 LaunchReviewFlow
메서드를 사용하여 흐름을 요청하고 시작할 수 있는 ReviewManager
클래스를 제공합니다. 요청이 이루어진 후 앱은 ReviewErrorCode
를 사용하여 요청 상태를 확인할 수 있습니다.
개발 환경 설정
OpenUPM-CLI
OpenUPM CLI가 설치되어 있으면 다음 명령어를 사용하여 OpenUPM 레지스트리를 설치할 수 있습니다.
openupm add com.google.play.review
OpenUPM
Unity 메뉴 옵션 Edit > Project Settings > Package Manager(수정 > 프로젝트 설정 > 패키지 관리자)를 선택하여 패키지 관리자 설정을 엽니다.
패키지 관리자 창에 OpenUPM을 범위 지정된 레지스트리로 추가합니다.
Name: package.openupm.com URL: https://package.openupm.com Scopes: com.google.external-dependency-manager com.google.play.common com.google.play.core com.google.play.review
Unity 메뉴 옵션 Window > Package Manager를 선택하여 패키지 관리자 메뉴를 엽니다.
관리자 범위 드롭다운을 설정하여 내 레지스트리를 선택합니다.
패키지 목록에서 Unity용 Google Play 무결성 플러그인 패키지를 선택하고 설치를 누릅니다.
GitHub에서 가져오기
GitHub에서 최신
.unitypackage
출시 버전을 다운로드합니다.Unity 메뉴 옵션 Assets > Import package > Custom Package를 선택하고 모든 항목을 가져와서
.unitypackage
파일을 가져옵니다.
ReviewManager 생성
앱과 API 간의 통신을 처리하는 ReviewManager
인스턴스를 생성합니다.
// Create instance of ReviewManager
private ReviewManager _reviewManager;
// ...
_reviewManager = new ReviewManager();
ReviewInfo 객체 요청
인앱 검토를 요청하는 시기에 관한 안내에 따라 앱의 사용자 플로우에서 적절한 지점을 결정하여 사용자에게 검토를 요청하는 메시지를 표시합니다(예: 사용자가 게임 레벨을 끝낼 때 표시되는 요약 화면을 닫은 후). 앱은 이러한 지점 중 하나가 가까워지면 다음 예와 같이 ReviewManager
인스턴스를 사용하여 비동기 작업을 생성합니다.
var requestFlowOperation = _reviewManager.RequestReviewFlow();
yield return requestFlowOperation;
if (requestFlowOperation.Error != ReviewErrorCode.NoError)
{
// Log error. For example, using requestFlowOperation.Error.ToString().
yield break;
}
_playReviewInfo = requestFlowOperation.GetResult();
호출이 성공하면 API는 앱에서 인앱 리뷰 흐름을 시작하는 데 필요한 PlayReviewInfo
객체를 반환합니다. 이 예에서는 비동기 작업을 실행하기 위해 호출이 코루틴 내부에서 이루어집니다(기본 스레드를 차단하지 않음). 호출이 비동기식으로 이루어지기 때문에 최대 몇 초 정도 걸릴 수 있습니다. 따라서 앱은 사용자 플로우에서 인앱 리뷰를 표시하려는 지점에 도달하기 전에 호출해야 합니다.
인앱 리뷰 흐름 시작
앱은 PlayReviewInfo
인스턴스를 수신한 이후 인앱 리뷰 흐름을 시작할 수 있습니다. PlayReviewInfo
객체는 제한된 시간 동안만 유효하므로 앱이 흐름을 시작하기 전에 너무 오래 기다리지 않아야 합니다.
var launchFlowOperation = _reviewManager.LaunchReviewFlow(_playReviewInfo);
yield return launchFlowOperation;
_playReviewInfo = null; // Reset the object
if (launchFlowOperation.Error != ReviewErrorCode.NoError)
{
// Log error. For example, using requestFlowOperation.Error.ToString().
yield break;
}
// The flow has finished. The API does not indicate whether the user
// reviewed or not, or even whether the review dialog was shown. Thus, no
// matter the result, we continue our app flow.
다음 단계
앱의 인앱 검토 흐름 테스트를 통해 통합이 제대로 작동하는지 확인합니다.